(郝斌講學)資料結構學習篇(四)---棧的CRUD操作

來源:互聯網
上載者:User

標籤:資料結構   棧   

棧

棧類似於箱子。

靜態棧、動態棧。

 

關於棧的操作

#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct Node{int data;struct Node *pNext;}NODE, *PNODE;typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK, *PSTACK;void init(PSTACK);void push(PSTACK, int);void traverse(PSTACK);bool empty(PSTACK);bool pop(PSTACK, int *);void clear(PSTACK p);int main(void){STACK s;int val;init(&s);push(&s, 1);push(&s, 2);push(&s, 3);push(&s, 4);push(&s, 5);push(&s, 6);push(&s, 7);traverse(&s);if(pop(&s, &val)){printf("出棧成功,出棧的元素是 %d \n", val);}else{printf("出棧失敗\n");}traverse(&s);clear(&s);if(pop(&s, &val)){printf("出棧成功,出棧的元素是 %d \n", val);}else{printf("出棧失敗\n");}return 0;}//完成一個棧的初始化void init(PSTACK p){p->pTop = (PNODE)malloc(sizeof(NODE));if(NULL == p->pTop){printf("動態記憶體分配失敗\n");exit(-1);}else{p->pBottom = p->pTop;p->pTop->pNext = NULL;}}void push(PSTACK p, int val){PNODE pNew = (PNODE)malloc(sizeof(NODE));pNew->data = val;pNew->pNext = p->pTop;p->pTop = pNew;}void traverse(PSTACK p){PNODE r = p->pTop;while(r != p->pBottom){printf("%d ", r->data);r = r->pNext;}printf("\n");return;}bool empty(PSTACK p){if(p->pTop == p->pBottom)return true;elsereturn false;}//把p所指向的棧出棧一次,並把出棧的元素存入pval形參所指的變數中bool pop(PSTACK p, int * pval){if(empty(p)){return false;}else{PNODE r = p->pTop;*pval = r->data;p->pTop = r->pNext;free(r);r = NULL;return true;}}void clear(PSTACK p){if(empty(p)){return;}else{PNODE r = p->pTop;PNODE t = NULL;while(r != p->pBottom){t = r->pNext;free(r);r = t;}p->pTop = p->pBottom;}}

棧主要用於運算式求值,緩衝處理,迷宮,函數調用,中斷...


(郝斌講學)資料結構學習篇(四)---棧的CRUD操作

聯繫我們

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