链栈的基本操作和实现
文章目录
- 链栈
- 存储结构
- 初始化
- 入栈
- 出栈
- 链栈的简单实现
- 实现效果
链栈
链栈是指采用链式存储结构实现的栈。通常链栈用单链表来表示。
存储结构
typedef struct StackNode{ElemType data;struct StackNode *next;
}StackNode, *LinkStack;
初始化
Status InitStack(LinkStack &S){//构造一个空栈,栈顶指针置为空 S = NULL;return OK;
}
入栈
出栈示意图
Status Push(LinkStack &S,ElemType e){LinkStack p;//定义p p=new StackNode;//生成新结点 p->data=e;//e赋给新结点的数据域 p->next=S; //新结点插入栈顶 S=p;//修改栈顶指针为preturn OK;
}
出栈
出栈示意图
Status Pop(LinkStack &S,ElemType &e){LinkStack p;//定义p if(S==NULL) return ERROR;//栈空 e=S->data;//将栈顶元素赋给e p=S;//p临时保存栈顶元素以备释放 S=S->next;//修改栈顶指针 delete p;//释放空间 return OK;
}
链栈的简单实现
#include<iostream>
#define OK 1
#define ERROR 0
using namespace std;
typedef int Status;
typedef int ElemType;
typedef struct StackNode{ElemType data;struct StackNode *next;
}StackNode, *LinkStack;
Status InitStack(LinkStack &S){//构造一个空栈,栈顶指针置为空 S = NULL;return OK;
}
Status Push(LinkStack &S,ElemType e){LinkStack p;//定义p p=new StackNode;//生成新结点 p->data=e;//e赋给新结点的数据域 p->next=S; //新结点插入栈顶 S=p;//修改栈顶指针为preturn OK;
}
Status Pop(LinkStack &S,ElemType &e){LinkStack p;//定义p if(S==NULL) return ERROR;//栈空 e=S->data;//将栈顶元素赋给e p=S;//p临时保存栈顶元素以备释放 S=S->next;//修改栈顶指针 delete p;//释放空间 return OK;
}
ElemType GetTop(LinkStack S){if(S!=NULL) //栈非空return S->data;
}
LinkStack S;
int main(void){int n,x,i,j;ElemType e; InitStack(S); cout<<"链栈简单操作目录:\n"<<"1.入栈\n"<<"2.出栈\n"<<"3.取栈顶元素\n"<<"4.退出\n";while(true){cout<<"请输入目录编号:";cin>>n;switch(n){case 1:cout<<"请输入要入栈的元素的个数:";cin>>x;cout<<"请依次输入"<<x<<"个数字: " ; for(i=1;i<=x;i++){cin>>e;Push(S,e);}break;case 2:cout<<"请输入要出栈的元素的个数:" ;cin>>x;cout<<"出栈元素为:";for(i=1;i<=x&&S!=NULL;i++){Pop(S,e);cout<<e<<" ";}cout<<endl;break;case 3:if(S==NULL){cout<<"栈已空"<<endl;break;}else{cout<<"栈顶元素为:";cout<<GetTop(S)<<endl; break;}case 4:exit(0);} }return 0;
}
实现效果
链栈的基本操作和实现相关推荐
- python 链栈及基本操作
链栈,即用链表实现栈存储结构 链栈的实现思路同顺序栈类似,顺序栈是将顺序表(数组)的一端作为栈低,另一端为栈顶:链栈也如此,通常我们将链表的头部作为栈顶,尾部作为栈低,如图1所示: 将链表头部作为栈顶 ...
- 链栈的基本操作-C语言
链栈的基本操作 用链表实现一个栈 具体实现 定义一个链栈 //定义一个链栈 typedef struct LNode {int data;struct LNode* next; }LNode, *Li ...
- js进栈出栈_链栈及基本操作(包含入栈和出栈)详解
链栈,即用链表实现栈存储结构. 链栈的实现思路同顺序栈类似,顺序栈是将数顺序表(数组)的一端作为栈底,另一端为栈顶:链栈也如此,通常我们将链表的头部作为栈顶,尾部作为栈底,如图 1 所示: 图 1 链 ...
- 链栈的基本操作(超详细)
目录 前言 一.链栈的定义 二.链栈的c++语言结构描述表示 三.链栈中基本操作的实现 3.1链栈的初始化 3.2判断链栈是否为空 3.3求链栈的长度 3.4 链栈的入栈 3.4 链栈的出栈 3.5求 ...
- 数据结构 栈-链栈及基本操作
目录 一.栈的定义 二.栈的特点 三.栈的理解 四.链栈引入 五.链栈定义 六.链栈的结构体设计 七.链栈的基本操作 7.1链栈的初始化 7.2链栈判空 7.3链栈入栈 7.4链栈出栈 7.4取栈顶元 ...
- C++实现链栈的基本操作
之前对顺序栈写了基本操作,认为有必要也动手练练栈的链表实现. 对于链栈,一般不会出现栈满的情况. 链栈头文件定义例如以下: #ifndef CSTOCK_H_ #define CSTOCK_H_typ ...
- c语言堆栈基本代码入栈出栈_链栈基本操作(入栈和出栈)C语言详解
链,即用 链栈的实现思路同 图 1 链栈示意图 将链表头部作为栈顶的一端,可以避免在实现数据 "入栈" 和 "出栈" 操作时做大量遍历链表的耗时操作. 链表的头 ...
- 数据结构:使用链栈实现回文判断
题目: 回文判断 试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如'序列1&序列2'模式的字符序列.其中序列1和序列2中都不含字符'&',且序列2是序列1的逆序列.例 ...
- 【Python数据结构系列】❤️《栈(顺序栈与链栈)》——❤️知识点讲解+代码实现
灵魂拷问:为什么要学数据结构? 数据结构,直白地理解,就是研究数据的存储方式.数据存储只有一个目的,即为了方便后期对数据的再利用.因此,数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好 ...
- 《数据结构》学习记录(6):链栈
一.概念 1.链栈 采用链表存储的栈. 二.链栈的基本操作 1.定义链栈 #define elemType char struct LinkStNode { elemType data; //数据域L ...
最新文章
- Java 中 PO 与 VO 的区别
- 【项目实战课】基于ncnn框架与KL散度的8bit对称模型量化与推理实战
- when is One Order gt_plan_exets filled
- winmail计算机三级,2016年计算机三级网络技术机考模拟题(1)
- React Hooks的使用(一)——useState、useEffect解析
- c++-串的模式匹配
- hive sql 优化
- 用开源代码如何建立网站_建立开源社区时要考虑的6件事
- Android 系统(260)---Android 读取SIM卡参数
- logstash 收集windows日志--解决日志不能重命名问题
- 学习EXT第八天:EXT的布局(Layout)Part 1
- 送起来oracle,十一,送你 51 个 Oracle 常用语句~
- 高斯加权滤波matlab,简单易懂的高斯滤波
- 0x00F749F6 处(位于 基于多态实现职工管理系统.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。
- [论文解读]Bayesian Generalized Kernel Inference for Terrain Traversability Mapping
- Windows下桌面便签小工具--StickyPad简单使用教程(非StickyNotes)
- 微信小程序不能下拉刷新
- ikbc机械键盘打字出现重复_再也不怕半夜打字影响家人了——ikbc c104机械键盘评测...
- 网页打印的简单实现 + window.print
- JavaWeb开发与代码的编写(二十四)
热门文章
- OpenCv图像像素操作
- 一次非常成功的项目经验分享和糟糕项目的对比
- BZOJ4196 NOI2015 软件包管理器
- Windows Server 2012中的多元密策略
- C4996	'sprintf': This function or variable may be unsafe.
- oracle 用工具查询慢,Oracle自带工具sql优化集-SQL Tuning Advisor (使用心得体会)
- python做人工智能-马哥教育官网-专业Linux培训班,Python培训机构
- jsjavaScript打印99乘法表
- c#读取进程列表判断程序是否已经启动(转)
- BZOJ4543[POI2014]Hotel加强版——长链剖分+树形DP