对于C语言而言,数组实现的弊端在于初始时不一定能确定栈的大小。链表能实现栈,但我的疑惑在于,链表本身和栈似乎并不是同一种结构(似乎在定义上是分开的?不清楚其他语言中什么情况)。但链表既可以作为FIFO,也可以做LIFO的结构。和数组在C语言中都是实现更高级数据结构的基础。= =看来还有很多东西要去思考和学习一下。(因为今天看了一些C++和Java的实现,发现stack在其他语言中是一种单独的数据结构,而不需要借助数组或链表)
基本结构 typedef struct { int top; Node* next; }Stack; 判断是否为空 return node==NULL; 入栈 void StackPush(Stack *s, int top) //入栈 { /*是否满栈检查*/ Node* tmpNode = (Node*)malloc(sizeof(*tmpNode)); tmpNode->top = top; tmpNode->next = s; s= tmpNode; } 出栈 int StackPop(Stack *s) { /*是否为空检查*/ int x=s->pop; s=s->next; return x; }