1、栈是一种先进后出的顺序表,和顺序表的区别是:顺序表可以操作任意元素,但是栈只能对栈顶元素进行操作,即后进先出原则。
2、栈的操作就只有入栈和出栈两个。
3、实现入栈和出栈
栈的栈顶用top标识,入栈时top加一,出栈时top减一,top为-1时表示栈空。
#include <stdio.h>
#define MAX 5
int push(int *a,int top,int data){
top = top +1;
a[top] = data;
return top;
}
int pop(int *a,int top){
int result;
if(top == -1)
return 0;
printf("pop data:%d\n",a[top]);
top = top-1;
return top;
}
int main(){
int a[MAX];
int top = -1;
top = push(a,top,1);
top = push(a,top,2);
top = push(a,top,3);
top = push(a,top,4);
top = push(a,top,5);
top = pop(a,top);
top = pop(a,top);
top = pop(a,top);
top = pop(a,top);
return 0;
}
3、链栈,即一个单链表只能先进先出。
需要注意的是链栈的栈顶在表头即第一个