栈板子
顺序栈
特点:栈单向延展。
此处为仅有栈顶指针版,也可同时设栈顶指针+栈底指针进行表示。
顺序栈的出栈操作是通过移动栈顶指针的“假删除”。
实现
#define N 10
typedef struct{
int data[N];
int top;
}stack;
void chushihua(stack *a){//初始化栈
a->top=-1;//将栈顶指针指向-1,即为初始化空栈
}
int push(stack *a,int num){//元素入栈
if(a->top==N-1){
return 1;
}else{
a->top++;
a->data[a->top]=num;
return 0;
}
}
int delete(stack *a){//元素出栈
if(a->top==-1){
return 1;
}else{
a->top--;
return 0;
}
}
int readtop(stack *a){//读栈顶元素
if(a->top==-1){
return 1;
}else{
return a->data[a->top];
}
}
int checkempty(stack *a){//栈的判空
if(a->top==-1){
return 0;
}else{
return 1;
}
}
扩展:共享栈
利用栈单向延展的特性,在一个数组内存两个方向相对的栈。A栈的栈底为数组头部,B栈的栈底是数组的尾部,两栈有元素进栈时栈顶指针向数组中间延展。当topa==topb-1(或top2==top1+1)时栈满。
链式栈
本质:带头指针的单链表,头插法入栈,删除首元结点出栈。在内存条范围内不会出现栈上溢的情况。
C++ STL <stack>


浙公网安备 33010602011771号