開發中常用棧簡潔操作
阿新 • • 發佈:2021-01-24
參考:棧基本詳解
#include<stdio.h> #include<stdlib.h> #define STACKSIZE 100 /*定義堆疊*/ typedef struct{ char data[STACKSIZE]; int top; }Stack; static void InitStack(Stack *s) { s->top=0; } /*判斷棧是否為空*/ static int stNULL(Stack *s) { if(s->top==0) { return 1; } else { return 0; } } /*入棧操作*/ static void stPush(Stack *s,char x) { if(s->top==STACKSIZE) { } else { s->top=s->top+1; s->data[s->top]=x; printf("%c 入棧\n",x); } } /*出棧操作*/ static char stPop(Stack *s) { char t; if(!stNULL(s)) { t=s->data[s->top]; s->top=s->top-1; printf("%c 出棧\n",t); } else { t=0; } return t; } /*獲取棧頂元素*/ static char stGetTop(Stack *s) { char t; if(!stNULL(s)) { t=s->data[s->top]; printf("%c 棧頂元素\n",t); } else { t=0; } return t; } int main() { Stack *stack=(Stack *)malloc(sizeof(Stack)); InitStack(stack); stPush(stack,'1'); stPush(stack,'2'); stPush(stack,'3'); stPush(stack,'4'); stPush(stack,'5'); stGetTop(stack); stPop(stack); stPop(stack); stPop(stack); stPop(stack); stPop(stack); }
[email protected]:~$ gcc -o stack stack.c
[email protected]:~$ ./stack
1 入棧
2 入棧
3 入棧
4 入棧
5 入棧
5 棧頂元素
5 出棧
4 出棧
3 出棧
2 出棧
1 出棧
[email protected]:~$