数据结构——栈的顺序存储结构
作者:互联网
一.栈的概念
栈是一种操作受限的,只允许一端进行插入和删除的线性表,允许进行操作的一端叫做栈顶(top),另一端为栈底(bottom),插入操作为入栈或进栈,删除操作称为出栈或退栈。
二.栈的顺序存储结构
顺序栈类型
#define MAXSIZE//栈最大元素
typedef struct{
datatype data[MAXSIZE];
int top;//表示栈顶位置
}SeqStack
指向顺序栈的指针
SeqStack *s;
顺序栈基本操作:
(1)置空栈:建立栈空间,初始化栈顶指针
SeqStack *Init_SeqStack(){
SeqStack *s;
s = malloc(sizeof(SeqStack));
s->top = -1;
return s;
}
通常0下标端设为栈底,空栈时栈顶指针 top = -1,入栈时,栈顶指针 top++,出栈时,栈顶指针top--
(2)判空栈
int Empty_SeqStack(SeqStack *s){
if(s->top == -1){
return 1;
}
else{
return 0;
}
}
(3)入栈
int Push_SeqStack(SeqStack *s, datatype x){
if(s->top == MAXSIZE-1){//栈满不能入栈
return 0;
}
else{
s->top++;
s->data[s->top] = x;
return 1;
}
}
入栈时,要先判断栈是否满了,栈满条件为:s->top == MAXSIZE-1,栈满时再入栈会空间溢出,发生错误,称为上溢。
(4)出栈
int Pop_SeqStack(SeqStack *s, datatype *x){
if(Empty_SeqStack(s)){//栈空不能出栈
return 0;
}
else{
*x = s->data[s->top];
s->top--;
return 1;
}
}
(5)取栈顶元素
int Top_SeqStack(SeqStack *s){
if(Empty_SeqStack(s)){//栈空不能读栈
return 0;
}
else{
return (s->data[s->top]);
}
}
出栈和读栈顶元素操作,首先要判断栈是否为空,空栈不可操作,否则会发生错误;
出栈栈顶指针会下移一位 top--,读栈顶元素只需要读取栈顶元素的值,栈顶指针不用变。
标签:SeqStack,return,top,栈顶,指针,出栈,数据结构,顺序存储,结构 来源: https://blog.csdn.net/qq_62755767/article/details/123617908