壓棧出棧遍曆棧執行個體代碼,執行個體代碼

來源:互聯網
上載者:User

壓棧出棧遍曆棧執行個體代碼,執行個體代碼

#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct Node//定義一個鏈表結構體{int data;struct Node* pNext;}NODE,*PNODE;typedef struct Stack//定義一個棧結構體{PNODE pTop;PNODE pBottom;}STACK,*PSTACK;void initStack(PSTACK);void pushStack(PSTACK,int);void travelStack(PSTACK);bool popStack(PSTACK,int*);void clear(PSTACK ps);int main(){int val;STACK S;//定義一個S變數,該變數有兩個參數。一個pTop,一個pBottoninitStack(&S);//初始化棧pushStack(&S,1);//壓棧pushStack(&S,2);pushStack(&S,3);pushStack(&S,4);pushStack(&S,5);travelStack(&S);//遍曆輸出if(popStack(&S,&val))//判斷是否出棧成功{printf("出棧成功,出棧元素是%d\n",val);}else{printf("出棧失敗\n");}printf("出棧後遍曆輸出結果\n");travelStack(&S);//遍曆輸出clear(&S);printf("再次遍曆下面為空白,說明清空成功!\n");travelStack(&S);//遍曆輸出return 0;}void initStack(PSTACK ps)//初始化棧,讓棧裡面的兩個元素指向一個節點。{ps->pTop=(PNODE)malloc(sizeof(NODE));if(NULL==ps->pTop){printf("動態記憶體分配失敗\n");exit(-1);}else{ps->pBottom=ps->pTop;ps->pTop->pNext=NULL;//等價於:ps->pBottom->pNext=NULL;也就是說下一次插入的空間是空的。也就是棧頂元素下一個是空的}}void pushStack(PSTACK ps,int val)//壓棧函數{PNODE pNew=(PNODE)malloc(sizeof(NODE));pNew->data=val;pNew->pNext=ps->pTop;//每次都把元素壓到棧頂ps->pTop=pNew;}void travelStack(PSTACK ps)//遍曆棧{PNODE p=ps->pTop;while(p!=ps->pBottom){printf("%d ",p->data);p=p->pNext;}printf("\n");return ;}bool empty(PSTACK ps)//判斷棧是否為空白{if(ps->pTop==ps->pBottom)return true;elsereturn false;}//把ps所指向的棧出棧一次,並把出棧的元素存入pVal形參所指向的變數中//如果出棧失敗,返回false,否則,返回truebool popStack(PSTACK ps,int* pVal){if(empty(ps)){return false;}else{PNODE r=ps->pTop;*pVal=r->data;ps->pTop=r->pNext;free(r);r=NULL;return true;}}//最後把棧清空。void clear(PSTACK ps){if(empty(ps)){return ;}else{PNODE p=ps->pTop;PNODE q=NULL;while(p!=ps->pBottom){q=p->pNext;free(p);p=q;}ps->pTop=ps->pBottom;}}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.