文章目录

  • 链栈
    • 存储结构
    • 初始化
    • 入栈
    • 出栈
  • 链栈的简单实现
    • 实现效果

链栈

链栈是指采用链式存储结构实现的栈。通常链栈用单链表来表示。

存储结构

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;
}

实现效果

链栈的基本操作和实现相关推荐

  1. python 链栈及基本操作

    链栈,即用链表实现栈存储结构 链栈的实现思路同顺序栈类似,顺序栈是将顺序表(数组)的一端作为栈低,另一端为栈顶:链栈也如此,通常我们将链表的头部作为栈顶,尾部作为栈低,如图1所示: 将链表头部作为栈顶 ...

  2. 链栈的基本操作-C语言

    链栈的基本操作 用链表实现一个栈 具体实现 定义一个链栈 //定义一个链栈 typedef struct LNode {int data;struct LNode* next; }LNode, *Li ...

  3. js进栈出栈_链栈及基本操作(包含入栈和出栈)详解

    链栈,即用链表实现栈存储结构. 链栈的实现思路同顺序栈类似,顺序栈是将数顺序表(数组)的一端作为栈底,另一端为栈顶:链栈也如此,通常我们将链表的头部作为栈顶,尾部作为栈底,如图 1 所示: 图 1 链 ...

  4. 链栈的基本操作(超详细)

    目录 前言 一.链栈的定义 二.链栈的c++语言结构描述表示 三.链栈中基本操作的实现 3.1链栈的初始化 3.2判断链栈是否为空 3.3求链栈的长度 3.4 链栈的入栈 3.4 链栈的出栈 3.5求 ...

  5. 数据结构 栈-链栈及基本操作

    目录 一.栈的定义 二.栈的特点 三.栈的理解 四.链栈引入 五.链栈定义 六.链栈的结构体设计 七.链栈的基本操作 7.1链栈的初始化 7.2链栈判空 7.3链栈入栈 7.4链栈出栈 7.4取栈顶元 ...

  6. C++实现链栈的基本操作

    之前对顺序栈写了基本操作,认为有必要也动手练练栈的链表实现. 对于链栈,一般不会出现栈满的情况. 链栈头文件定义例如以下: #ifndef CSTOCK_H_ #define CSTOCK_H_typ ...

  7. c语言堆栈基本代码入栈出栈_链栈基本操作(入栈和出栈)C语言详解

    链,即用 链栈的实现思路同 图 1 链栈示意图 将链表头部作为栈顶的一端,可以避免在实现数据 "入栈" 和 "出栈" 操作时做大量遍历链表的耗时操作. 链表的头 ...

  8. 数据结构:使用链栈实现回文判断

    题目: 回文判断 试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如'序列1&序列2'模式的字符序列.其中序列1和序列2中都不含字符'&',且序列2是序列1的逆序列.例 ...

  9. 【Python数据结构系列】❤️《栈(顺序栈与链栈)》——❤️知识点讲解+代码实现

    灵魂拷问:为什么要学数据结构? 数据结构,直白地理解,就是研究数据的存储方式.数据存储只有一个目的,即为了方便后期对数据的再利用.因此,数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好 ...

  10. 《数据结构》学习记录(6):链栈

    一.概念 1.链栈 采用链表存储的栈. 二.链栈的基本操作 1.定义链栈 #define elemType char struct LinkStNode { elemType data; //数据域L ...

最新文章

  1. Java 中 PO 与 VO 的区别
  2. 【项目实战课】基于ncnn框架与KL散度的8bit对称模型量化与推理实战
  3. when is One Order gt_plan_exets filled
  4. winmail计算机三级,2016年计算机三级网络技术机考模拟题(1)
  5. React Hooks的使用(一)——useState、useEffect解析
  6. c++-串的模式匹配
  7. hive sql 优化
  8. 用开源代码如何建立网站_建立开源社区时要考虑的6件事
  9. Android 系统(260)---Android 读取SIM卡参数
  10. logstash 收集windows日志--解决日志不能重命名问题
  11. 学习EXT第八天:EXT的布局(Layout)Part 1
  12. 送起来oracle,十一,送你 51 个 Oracle 常用语句~
  13. 高斯加权滤波matlab,简单易懂的高斯滤波
  14. 0x00F749F6 处(位于 基于多态实现职工管理系统.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。
  15. [论文解读]Bayesian Generalized Kernel Inference for Terrain Traversability Mapping
  16. Windows下桌面便签小工具--StickyPad简单使用教程(非StickyNotes)
  17. 微信小程序不能下拉刷新
  18. ikbc机械键盘打字出现重复_再也不怕半夜打字影响家人了——ikbc c104机械键盘评测...
  19. 网页打印的简单实现 + window.print
  20. JavaWeb开发与代码的编写(二十四)

热门文章

  1. OpenCv图像像素操作
  2. 一次非常成功的项目经验分享和糟糕项目的对比
  3. BZOJ4196 NOI2015 软件包管理器
  4. Windows Server 2012中的多元密策略
  5. C4996 'sprintf': This function or variable may be unsafe.
  6. oracle 用工具查询慢,Oracle自带工具sql优化集-SQL Tuning Advisor (使用心得体会)
  7. python做人工智能-马哥教育官网-专业Linux培训班,Python培训机构
  8. jsjavaScript打印99乘法表
  9. c#读取进程列表判断程序是否已经启动(转)
  10. BZOJ4543[POI2014]Hotel加强版——长链剖分+树形DP