關於動態棧的分析

來源:互聯網
上載者: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 pS){pS->pTop = (PNODE)malloc(sizeof(NODE));if(NULL == pS->pTop){printf("ERROR \n");exit(-1);}else{pS->pBottom = pS->pTop;pS->pBottom->pNext = NULL;//pS->pTop->pNext = NULL;}}//遍曆棧void TraverseStack(PSTACK pS){printf("Now start traverse the stack elem : ");PNODE p = pS->pTop;while(p != pS->pBottom){printf("%d  ", p->data);p = p->pNext;}printf("\n");}//壓棧void PushStack(PSTACK pS, int Val){PNODE pNew = (PNODE)malloc(sizeof(NODE));pNew->data = Val;pNew->pNext = pS->pTop;pS->pTop = pNew; }//判斷棧空bool IsEmptyStack(PSTACK pS){if(pS->pTop == pS->pBottom){return true;}else{return false;}}//出棧int PopStack(PSTACK  pS, int * pVal){if(IsEmptyStack(pS)){printf("ERROR stack is  empty  \n");exit(-1);}else{PNODE r = pS->pTop;*pVal = r->data;pS->pTop = r->pNext;free(r);r = NULL;}return true;}//清空棧void ClearStack(PSTACK pS){printf("Now start clear the stack  ... ");if(IsEmptyStack(pS)){return ;}PNODE  p = pS->pTop;PNODE  q = NULL;while(p != pS->pBottom){q = p->pNext;free(p);p = q;}pS->pTop = pS->pBottom;puts("\n");}//主程式int main(void){STACK   S;InitStack(&S);//造成一個空棧//壓棧PushStack(&S, 1);PushStack(&S, 2);PushStack(&S, 3);PushStack(&S, 4);//遍曆TraverseStack(&S);//彈出棧頂元素int val = 0;if(PopStack(&S, &val)){printf("pop stack top  elem is %d  \n\n", val);}//遍曆TraverseStack(&S);//清空棧ClearStack(&S);//遍曆TraverseStack(&S);return 0;}


本文出自 “享受科技帶來的快樂” 部落格,請務必保留此出處http://liam2199.blog.51cto.com/2879872/1532114

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.