目录
1.栈、队列
1.1 栈
-
1.1.1 顺序栈的定义
#define MAXSIZE //定义栈中元素的最大个数
typedef struct Stack{
int data[MAXSIZE]; //存放栈中元素
int top; //栈顶指针
}Stack;
-
1.1.2 顺序栈的基本操作代码实现
1.初始化栈:
void InitStack(Stack &s){
s.top = -1; //初始化栈顶指针
}
2.判栈空:
bool IsEmpty(Stack s){
if (s.top == -1) //栈空
return true;
else //不空
return false;
3.进栈:
bool Push(SqStack &S,ElemType x){
if(S.top==MaxSize-1) //栈满,报错
return false;
S.data[++S.top]=x; //指针先+1,再入栈
return ture;
}
4.出栈:
bool Push(SqStack &S,ElemType x){
if(S.top==-1) //栈空,报错
return false;
S.data[S.top--]=x; //先出栈,指针再-1
return ture;
}
5.读栈顶元素:
bool GetTop(SqStack S,ElemType &x){
if(S.top==-1) //栈空,报错
return false;
x=S.data[S.top]; //用x记录栈顶元素
return true;
}
1.1.3 栈的链式存储结构
采用链式存储,便于结点的插入删除,入栈和出栈都在表头进行。
typedef struct Linknode{
ElemType data; //数据域
struct Linknode *next; //指针域
}*LiStack; //栈类型定义