栈是一种先进后出的数据结构,可以用顺序结构和链式结构存储栈,这里我用顺序结构实现其基本功能。
下面是栈的基本操作:
1.首先用结构体类型定义一个栈,包含数据域和栈顶指针,定义其最大容量为1000。
1 //栈的结构定义 2 #define MAXSIZE 1000 3 typedef struct{ 4 int data[MAXSIZE]; 5 int top; 6 }Stack;
2.创建一个栈,让其栈顶指针指向第一个元素的前面一个位置。
1 //栈的初始化 2 void CreateStack(Stack *S){ 3 S->top = -1; 4 }
3.压栈,栈顶指针上移,如果空间不足,栈溢出;否则将元素更新到栈顶。
1 //压栈,成功返回1,失败返回0。 2 int PushStack(Stack *S,int e){ 3 S->top++; 4 if (S->top==MAXSIZE){ 5 printf("栈上溢"); 6 return 0; 7 } 8 S->data[S->top] = e; 9 return 1; 10 }
4.弹栈,如果栈空,栈下溢;否则将栈顶元素返回,栈顶指针下移。
1 //栈的弹出 2 int PopStack(Stack *S){ 3 if (S->top==-1){ 4 printf("栈下溢"); 5 return 0; 6 } 7 return S->data[S->top--]; 8 }
原文:http://www.cnblogs.com/tanxing/p/4921931.html