栈板子
顺序栈
特点:栈单向延展。
此处为仅有栈顶指针版,也可同时设栈顶指针+栈底指针进行表示。
顺序栈的出栈操作是通过移动栈顶指针的“假删除”。
实现
#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)时栈满。
链式栈
本质:带头指针的单链表,头插法入栈,删除首元结点出栈。在内存条范围内不会出现栈上溢的情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具