码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【数据结构】链表栈


    目录:

    • 链表栈
      • 1. 链式栈的实现
      • 2. 链表栈的创建
      • 3. 压栈
      • 4. 弹栈

    链表栈

    栈的主要表示方式有两种,一种是顺序表示,另一种是链式表示。本文主要介绍链式表示的栈。
    链栈实际上和单链表差别不大,唯一区别就在于只需要对链表限定从头部进行删除元素和增加元素就可以了。

    1. 链式栈的实现

    链式栈的实现,是通过先定义一个结构体节点,然后定义一个指向该结构体的指针,通过该指针来操作栈。
    示例代码如下:

    typedef struct node {
        struct node* next;  /* 指向下一个节点的指针 */
        int data;           /* 数据域 */
    } Node;
    typedef Node *Stack;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    其中Stack是一个指向Node的指针,通过该指针可以访问链式栈的栈顶元素。

    2. 链表栈的创建

    类似于链表的创建,链表栈也分头结点和不带头结点两种。这里为了方便起见,我们决定使用带头结点的版本。
    示例代码如下:

    void InitStack(Stack *S)
    {
        *S=(Stcak)malloc(sizeof(Node));
        if(S==NULL)
        {
            return;
        }
        (*S)->next=NULL;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3. 压栈

    在进行压栈操作时,我们规定只在链表的头部进行插入,即在头结点之后插入一个元素,使得这个元素的指针指向头结点的下一个元素,然后让头结点的指针指向这个元素。
    示例代码如下:

    bool Push(Stack *S,int x)
    {
        Node *p=(Stack)malloc(sizeof(Node));
        p->next=(*S)->next;
        p->data=x;
        (*S)->next=p;
        return true;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4. 弹栈

    同样的,我们也只需要在头部进行删除元素即可
    示例代码如下:

    int Pop(Stack *S,int *x)
    {
        Node *p=S;
        p=S->next;
        Node *q=p->next;
        S->next=q;
        (*x)=p->data;
        free(p);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    Unity笔记(10):SHOOT GAME EXAMPLE【2D】
    XILINX-FPGA下载工具--CH347FPGADownloader
    DIrect12光追问题
    FT 在图像处理中的应用
    pdf怎么压缩的小一点?分享pdf文件压缩方法
    【物联网】NB-IoT
    常见的缺陷管理工具——禅道,从安装到使用手把手教会你
    洛谷 P8741 [蓝桥杯 2021 省 B] 填空问题 题解
    java计算机毕业设计高校学生资助管理信息系统源码+mysql数据库+系统+lw文档+部署
    WPF基础的一些基本操作
  • 原文地址:https://blog.csdn.net/qq_34168477/article/details/133621448
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号