之前在创建栈的链式存储结构时,想当然误以为栈的top指针会指向链表的尾结点,在创建链表结构时的写法误写为:

for(j=0;j<i;j++){
        temp=(struct Node*)malloc(sizeof(struct Node));
        printf("Input:");
        scanf("%c",&a);
        getchar();
        temp->data=a;
        temp->next=NULL;
        if(!head){
            head=tail=temp;
        }
        else{
            tail->next=temp;
            tail=temp;
        }

}

但创建链表栈是应该是尾结点针为栈底,top指针应该指向头结点,如图:

所以栈的创建、增加、删除结点代码如下所示:

struct Node* create(){
    struct Node*temp=0;
    temp=(struct Node*)malloc(sizeof(struct Node));
    temp->data='a';
    temp->next=NULL;
    s.top=temp;
    s.count=-1;
    return temp;
}
bool push(char a,struct linkstack* m){
     struct Node* temp=0,*tail=0;
     temp=(struct Node*)malloc(sizeof(struct Node));
     temp->data=a;
     temp->next=m->top;
     m->top=temp;
     m->count++;
     return true;
}
bool pop(struct linkstack* m){
    struct Node *p=0;
    if(m->count==-1)
        return false;
    else{

p=m->top;
        m->top=m->top->next;
        free(p);
        m->count--;
        return true;
    }
}
void read(struct linkstack *s){
    struct Node* temp=s->top;
    while(temp){
        printf("%c",temp->data);
        temp=temp->next;
    }

}

这样便巧妙地避免了对头结点的记录问题,top就是头结点。

关于栈的链式存储结构相关推荐

  1. 3.3 栈的链式存储结构

    <?php header("content-type:text/html;charset=utf-8"); /*** 栈的链式存储结构的基本操作**包括* 1.初始化 __c ...

  2. 链式存储mysql_链栈:栈的链式存储结构

    前面讲完了栈的顺序存储结构,我们现在来看看栈的链式存储结构,简称为链栈. 链栈是没有附加头结点的运算受限的单链表.栈顶指针就是链表的头指针. 栈是用栈顶来做插入和删除操作,那么对于链栈的栈顶放在链表的 ...

  3. 栈的链式存储结构及实现

    今天学习栈的链式存储结构. 链式存储结构最大的好处就是没有空间的限制,通过指针指向将结点像一个链子一样把结点链接,那么栈的同样可以用于链式存储结构. 栈的链式存储结构,简称为链栈.想想看,栈只是栈顶来 ...

  4. 3.2_栈_链式存储结构(链表形式)

    [链式存储结构] 栈的链式存储结构,简称链栈. [具体实现] package com.Higgin.LinkStack;import java.util.EmptyStackException;/** ...

  5. 数据结构与算法——栈的链式存储结构及实现

    目录 前言 一.栈的链式储存结构 二.栈的链式储存结构的操作 2.1   进栈操作 2.2   出栈操作 总结 前言 讲完了栈的顺序储存结构,我们现在来看看栈的链式存储结构,简称为链栈. 由于单链表中 ...

  6. 栈的链式存储结构(企业级链表)

    #include<stdio.h> #include<stdlib.h> #include<string.h> struct StackNode{struct St ...

  7. 栈的链式存储结构(C语言实现)

    简要 链栈就是利用单链表作为栈的存储结构,单链表的第一个节点为栈顶,而最后一个节点为栈底,链栈既可以带头节点也可以不带头节点. 实现过程 实现代码 #include<iostream> # ...

  8. c语言存储结构的实现,(C语言)栈的链式存储结构的实现

    #includetypedef struct Stack_Linklist{ int data; struct Stack_Linklist *next; }Node,*pNode; typedef ...

  9. 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...

    还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表. 什么是线性表 线性表的划分是从数据的逻辑结构上进行的.线性指的是在数据的逻辑结构上是线性的.即在数据元素的非空有限集中 (1) 存在唯一的 ...

最新文章

  1. 火锅店市场容量或变化趋势_2020-2026年中国氮肥市场深度研究与投资前景预测报告...
  2. python写订单管理系统_利用Python快速搭建钉钉和邮件数据推送系统
  3. Codeforces Round #701 (Div. 2)赛后补题报告(A~D)
  4. 一起玩Docker之1——Ubuntu配置安装Docker运行环境并安装(Ubuntu、Centos)镜像
  5. ZZULIOJ 1070:小汽车的位置
  6. python怎样显示表格数据匹配_Python根据表中每一行中的数据匹配txt文章中出现的次数,表格,每行,在,统计...
  7. 解决MSN无法登录问题的意外收获
  8. python地图包_Python交互地图-folium包
  9. fastica和pca区别_PCA与ICA
  10. 什么是软件测试?和软件开发又有什么区别?
  11. matlab 马丢函数,振幅调制产生马丢光束的方法与流程
  12. LeetCode-Sum Root to Leaf Numbers
  13. ZZULIOJ 1067: 有问题的里程表
  14. Arduino IDE+_Attiny13/85实践(三) Lilypad Attiny85编程
  15. 等保2.0 安全计算环境 ——Windows服务器(三级系统)
  16. 【安全牛学习笔记】Kali Linux基本工具
  17. 关于学校edu邮箱登录第三方邮件客户端(例如Outlook、Foxmail、QQ邮箱、邮件App等)的注意事项
  18. js将一串数字1607222406转换为日期格式
  19. js随机生成16进制颜色值
  20. 史上最牛mysql-06 (多表连接)

热门文章

  1. 信息学奥赛C++语言:斗转星移
  2. 27 PP配置-生产车间控制-工序-定义确认参数
  3. 如何用excel筛选相似内容_excel如何筛选出相同内容,excel怎么用公式筛选
  4. oracle配置ipv6_pl/sql developer通过IPV6连接oracle-阿里云开发者社区
  5. InceptionNet V4
  6. vm磁盘映射 不能启动_软网推荐:网盘变身本地磁盘
  7. OpenVINO InferenceEngine之读取IR
  8. z01、z02.....怎么解压缩
  9. tf.name_scope()详解【命名空间其实就是给几个变量包一层名字,方便变量管理】
  10. 在新版本caffe里添加新的一层(向旧格式中加)