栈是一张特殊的线性表,既可采用顺序存储结构存储,也可以采用链式存储结构存储。
下面介绍采用顺序结构存储的栈的相关基本操作,用一个int top 来作为栈顶的指针,指明当前栈顶的位置,空栈时s -> top = -1,入栈时s ->top ++;出栈时s -> top --;将data和top封装在一个结构中。代码如下:
#include <stdio.h>
#define MAXSIZE 100
#include <malloc.h>
typedef int datatype;
typedef struct {
int data[MAXSIZE];
int top;
}SeqStack;
//初始化栈
SeqStack *Init_SeqStack(){
SeqStack *S;
S = (SeqStack*)malloc(sizeof(SeqStack));
S -> top = -1;
return S;
}
//判空栈
int Empty_SeqStack(SeqStack *S){
if(S -> top == -1)
return 1;
else
return 0;
}
//入栈
int push_SeqStack(SeqStack *S,int x){
if(S -> top == MAXSIZE - 1)
return 0;
else{
S ->top ++;
S ->data[S ->top] = x;
return 1;
}
}
//出栈
int pop_SeqStack(SeqStack *S,int *x){
if(Empty_SeqStack(S))
return 0;
else{
//把栈顶元素存入变量x即y
*x = S -> data[S ->top];
S -> top --;
return 1;