栈板子

顺序栈

特点:栈单向延展。

此处为仅有栈顶指针版,也可同时设栈顶指针+栈底指针进行表示。

顺序栈的出栈操作是通过移动栈顶指针的“假删除”。

实现

#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>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

posted @   椰萝Yerosius  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示