链栈的数据结构以及链栈的实现

13 篇文章 3 订阅

线性表有顺序存储结构和链式存储结构,栈属于线性表的一种,也具有顺序存储结构和链式存储结构。对于栈的链式存储结构,一般称之为链栈

栈的插入和删除只在栈顶进行操作,在单链表中,头指针是单链表的必须元素;而在栈中,栈顶指针也是链栈的必须元素,且一般将栈顶放在单链表的头部。

链栈的结构代码如下所示:

//定义数据结点类型
//typedef 定义结构类型别名
//LinkStaclPtr指向结构的指针
typedef struct Node{
    int data;
    Node *next;
} StackNode,*LinkStackPtr;

//定义链栈的结构类型
typedef struct LinkStack{
    LinkStackPtr top;//栈顶指针
    int count=0;
} LinkStack;

入栈操作:

int push(LinkStack *S,int element){
    LinkStackPtr s=new Node;
    s->data=element;
    s->next=S->top;
    S->top=s;
    S->count++;
    return element;
}

出栈操作:

int pop(LinkStack *S){
    int temp;
    LinkStackPtr p;
    if (S->count<=0){
        cout<<"栈空"<<" ";
    }
    temp=S->top->data;
    p=S->top;
    S->top=S->top->next;
    delete p;
    S->count--;
    return temp;
}

测试代码如下:

int main()
{
    LinkStack linkStack;
    cout << "入栈10个元素" << endl;
    for (auto i = 0; i < 10; i++)
    {
        std::cout << push(&linkStack, i) << "  ";
    }
    cout << "\n";

    cout << "---分隔符---" << endl;
    cout << "出栈15个元素" << endl;
    for (auto i = 0; i < 15; i++)
    {
        cout << pop(&linkStack) << "  ";
    }
    cout << "\n";
    return 0;
}

输出如下:

链栈

代码地址:https://github.com/USuperMe/LinkStack.git

欢迎关注公众号,分享一些Unity3D、C#、C++数据结构和算法的相关学习知识。

码码小虫

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值