3.1.1栈的基本概念
3.1.1栈的基本概念








3.1.2栈的顺序存储实现

顺序栈的定义
#define MaxSize 10//定义栈中元素的最大个数
typedef struct{
ElemType data[MaxSize];//静态数组存放栈中元素
int top;//栈顶指针
}SqStack;
void testStack(){
SqStack S;//声明一个顺序栈(分配空间)
//...后续操作...
}

#define MaxSize 10//定义栈中元素的最大个数
typedef struct{
ElemType data[MaxSize];//静态数组存放栈中元素
int top;//栈顶指针
}SqStack;
//初始化栈
void InitStack(SqStack &S){
S.top = -1; //初始化栈顶指针
}
void testStack(){
SqStack S;//声明一个顺序栈(分配空间)
InitStack(S);
//...后续操作...
}
//判断栈空
bool StackEmpty(SqStack S){
if(S.top == -1)//栈空
return true;
else //不空
return false;
}
进栈操作
#define MaxSize 10//定义栈中元素的最大个数
typedef struct{
ElemType data[MaxSize];//静态数组存放栈中元素
int top;//栈顶指针
}SqStack;
//新元素入栈
bool Push(SqStack &S,ElemType x){
if(S.top==MaxSize-1)//栈满报错
return false;
S.top = S.top + 1;//指针先加1
S.data[S.top] = x;//新元素入栈 等价S.data[++S.top] = x;
return true;
}

出栈操作
#define MaxSize 10//定义栈中元素的最大个数
typedef struct{
ElemType data[Maxsize];//静态数组存放栈中元素
int top;//栈顶指针
}SqStack;
//出栈操作
bool Pop(SqStack &S,ElemType &x){
if(S.top==-1)//栈空 报错
return false;
x=S.data[S.top];//栈顶元素先出栈
S.top = S.top - 1;//指针再减一 等价 x=S.data[S.top--]
return true;
}

读取栈顶元素操作
#define MaxSize 10//定义栈中元素的最大个数
typedef struct{
ElemType data[MaxSize];//静态数组存放栈中元素
int top;//栈顶指针
}SqStack;
//出栈操作
bool Pop(SqStack &S,ElemType &x){
if(S.top == -1)//栈空,报错
return false;
x=S.data[S.top--];//先出栈,指针再减一
return true;
}
//读栈顶元素
bool GetTop(SqStack &S,ElemType &x){
if(S.top == -1)//栈空,报错
return false;
x=S.data[S.top];//x记录栈顶元素
return true;
}

另一种方式
#define MaxSize 10//定义栈中元素的最大个数
typedef struct{
ElemType data[MaxSize];//静态数组存放栈中元素
int top;//栈顶指针
}SqStack;
//初始化栈
void InitStack(SqStack &S){
S.top=0;//初始化栈顶指针
}
void testStack(){
SqStack S;//声明一个顺序栈(分配空间)
InitStack(S);
//...后续操作...
}
//判断栈空
bool StackEmpty(SqStack S){
if(S.top == 0)//栈空
return true;
else //不空
return false;
}

共享栈
#define MaxSize 10
typedef struct{
ElemType data[MaxSize];
int top0;
int top1;
}ShStack;
//初始化栈
void InitStack(ShStack &S){
S.top0=-1;
S.top=MaxSize;
}
栈满条件:top0+1=top1

只是回顾与重要考点

3.1.3 栈的链式存储实现







浙公网安备 33010602011771号