关于栈的链式存储结构
之前在创建栈的链式存储结构时,想当然误以为栈的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就是头结点。
关于栈的链式存储结构相关推荐
- 3.3 栈的链式存储结构
<?php header("content-type:text/html;charset=utf-8"); /*** 栈的链式存储结构的基本操作**包括* 1.初始化 __c ...
- 链式存储mysql_链栈:栈的链式存储结构
前面讲完了栈的顺序存储结构,我们现在来看看栈的链式存储结构,简称为链栈. 链栈是没有附加头结点的运算受限的单链表.栈顶指针就是链表的头指针. 栈是用栈顶来做插入和删除操作,那么对于链栈的栈顶放在链表的 ...
- 栈的链式存储结构及实现
今天学习栈的链式存储结构. 链式存储结构最大的好处就是没有空间的限制,通过指针指向将结点像一个链子一样把结点链接,那么栈的同样可以用于链式存储结构. 栈的链式存储结构,简称为链栈.想想看,栈只是栈顶来 ...
- 3.2_栈_链式存储结构(链表形式)
[链式存储结构] 栈的链式存储结构,简称链栈. [具体实现] package com.Higgin.LinkStack;import java.util.EmptyStackException;/** ...
- 数据结构与算法——栈的链式存储结构及实现
目录 前言 一.栈的链式储存结构 二.栈的链式储存结构的操作 2.1 进栈操作 2.2 出栈操作 总结 前言 讲完了栈的顺序储存结构,我们现在来看看栈的链式存储结构,简称为链栈. 由于单链表中 ...
- 栈的链式存储结构(企业级链表)
#include<stdio.h> #include<stdlib.h> #include<string.h> struct StackNode{struct St ...
- 栈的链式存储结构(C语言实现)
简要 链栈就是利用单链表作为栈的存储结构,单链表的第一个节点为栈顶,而最后一个节点为栈底,链栈既可以带头节点也可以不带头节点. 实现过程 实现代码 #include<iostream> # ...
- c语言存储结构的实现,(C语言)栈的链式存储结构的实现
#includetypedef struct Stack_Linklist{ int data; struct Stack_Linklist *next; }Node,*pNode; typedef ...
- 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...
还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表. 什么是线性表 线性表的划分是从数据的逻辑结构上进行的.线性指的是在数据的逻辑结构上是线性的.即在数据元素的非空有限集中 (1) 存在唯一的 ...
最新文章
- 火锅店市场容量或变化趋势_2020-2026年中国氮肥市场深度研究与投资前景预测报告...
- python写订单管理系统_利用Python快速搭建钉钉和邮件数据推送系统
- Codeforces Round #701 (Div. 2)赛后补题报告(A~D)
- 一起玩Docker之1——Ubuntu配置安装Docker运行环境并安装(Ubuntu、Centos)镜像
- ZZULIOJ 1070:小汽车的位置
- python怎样显示表格数据匹配_Python根据表中每一行中的数据匹配txt文章中出现的次数,表格,每行,在,统计...
- 解决MSN无法登录问题的意外收获
- python地图包_Python交互地图-folium包
- fastica和pca区别_PCA与ICA
- 什么是软件测试?和软件开发又有什么区别?
- matlab 马丢函数,振幅调制产生马丢光束的方法与流程
- LeetCode-Sum Root to Leaf Numbers
- ZZULIOJ 1067: 有问题的里程表
- Arduino IDE+_Attiny13/85实践(三) Lilypad Attiny85编程
- 等保2.0 安全计算环境 ——Windows服务器(三级系统)
- 【安全牛学习笔记】Kali Linux基本工具
- 关于学校edu邮箱登录第三方邮件客户端(例如Outlook、Foxmail、QQ邮箱、邮件App等)的注意事项
- js将一串数字1607222406转换为日期格式
- js随机生成16进制颜色值
- 史上最牛mysql-06 (多表连接)
热门文章
- 信息学奥赛C++语言:斗转星移
- 27 PP配置-生产车间控制-工序-定义确认参数
- 如何用excel筛选相似内容_excel如何筛选出相同内容,excel怎么用公式筛选
- oracle配置ipv6_pl/sql developer通过IPV6连接oracle-阿里云开发者社区
- InceptionNet V4
- vm磁盘映射 不能启动_软网推荐:网盘变身本地磁盘
- OpenVINO InferenceEngine之读取IR
- z01、z02.....怎么解压缩
- tf.name_scope()详解【命名空间其实就是给几个变量包一层名字,方便变量管理】
- 在新版本caffe里添加新的一层(向旧格式中加)