(四)《数据结构与算法》 青岛大学-王卓 链栈
《数据结构与算法》 青岛大学-王卓 栈(链式存储)C++
1.数据类型:栈
2.存储方式:链式存储
3.常用名称:链栈
(注:图片截取自《数据结构与算法》-青岛大学王卓bilibili视频)
/*链栈数据结构:栈 线性表存储类型:链式存储
*/#include<iostream>
using namespace std;#define MAX_SIZE 100
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status; // Status是函数的类型,其值是函数结果状态代码
typedef int SElemType; // 根据自己的数据类型进行定义// 链栈结构体
typedef struct StackNode
{SElemType data;struct StackNode* next;
}StackNode, *LinkStack;// 初始化
Status InitStack(LinkStack& S)
{S = NULL; // 构造一个空栈,栈顶指针置为空return OK;
}// 是否为空
Status StackEmpty(LinkStack S)
{if (S == NULL) return TRUE;else return FALSE;
}// 链栈的入栈
Status Push(LinkStack& S, SElemType e)
{StackNode* p = new StackNode; // 生成新的结点pp->data = e; // 将数据加载到p的数据域p->next = S; // 将新结点插入栈顶; 因为S中存放的地址即下一结点的地址S = p; // 修改栈顶指针return OK;
}// 链栈的出栈
Status Pop(LinkStack& S, SElemType& e)
{if (S == NULL) return ERROR;e = S->data;LinkStack p = S; // 将S的指针指向放入临时变量p中,否则链表丢失S = S->next; // 将S指针指向下一个结点delete p; // 释放preturn OK;
}// 取栈顶元素
SElemType GetTop(LinkStack S)
{if (S != NULL) return S->data;
}int main()
{LinkStack S; InitStack(S);Push(S, 10);Push(S, 30);Push(S, 50);Push(S, 60);int e;while (S!=NULL){Pop(S, e);cout << e << endl;}return 0;
}
(四)《数据结构与算法》 青岛大学-王卓 链栈相关推荐
- 数据结构与算法 | 青岛大学 | 王卓
来源链接:https://space.bilibili.com/40323036/video?tid=0&page=6&keyword=&order=pubdate https ...
- 数据结构与算法学习笔记——链栈
数据结构与算法学习笔记(C语言) 链栈 在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现. /*用顺序栈这种数 ...
- 数据结构与算法基础-王卓
文章预览: 数据结构与算法基础-王卓 第一章绪论 **1.1.1基本概念和术语** 数据 数据元素 数据项 数据对象 1.1.2基本概念和术语 1.数据结构解释 2.数据结构包括三方面内容 3.数据结 ...
- 数据结构与算法(C++)– 栈(Stack)
数据结构与算法(C++)– 栈(Stack) 1.栈是什么 后进先出(Last in, First out) push 入栈,pop 出栈,top栈顶 2.栈的实现 单链表:在单链表的前端插入实现 p ...
- 数据结构和算法(五)--栈(Stack)
数据结构和算法(五)–栈(Stack) 什么是栈 栈是一种特殊的线性表,只能在一端进行操作 往栈中添加元素,一般叫做push,入栈 往栈中移除元素,一般叫做pop,弹栈/出栈(只能移除栈顶元素) 栈遵 ...
- 03_JavaScript数据结构与算法(三)栈
JavaScript 数据结构与算法(三)栈 数组是一个线性结构,并且可以在数组的任意位置插入和删除元素. 但是有时候,我们为了实现某些功能,必须对这种任意性加以限制. 栈和队列就是比较常见的受限的线 ...
- 数据结构与算法(3-1)栈(顺序栈、两栈共享空间、链栈、栈的计算器)
目录 一.顺序栈 存储结构 总代码 二.两栈共享空间 存储结构: 总代码: 三.链栈 存储结构: 总代码: 一.顺序栈 存储结构: 栈特点:先进后出,后进先出.(特殊的线性表) 入栈时在栈顶添加元素, ...
- 数据结构与算法--举例分析法- 栈的压入弹出序列
举例分析 与上两篇问中画图方法一样,我们可以用举例模拟的方法思考分析复杂问题.当一眼不能看出问题的规律的时候,我们可以用几个具体的例子来模拟一下问题的过程.这样就和我们在程序出现问题时候的debug一 ...
- 数据结构和算法(03)---栈和队列(c++)
文章目录 目录 一.栈 1.栈的基本操作 2.使用C++模板类实现栈 二.队列 1.队列的基本操作 2.循环队列 **循环队列顺序存储** **循环队列链式存储** 3.双端队列 目录 数据结构: 逻 ...
最新文章
- linux清除history历史命令:history -c
- Intellij IDEA自定义类注释模板
- 用Visual Studio 2008编写Win32汇编程序
- Maven服务器的使用之Maven桌面项目和Maven Web项目的创建
- 诺基亚9 PureView五摄机皇再曝光 低配高价毫无诚意?
- 使用计算机进行电路分析,计算机辅助电路分析,computer aided analysis of circuits,音标,读音,翻译,英文例句,英语词典...
- web打印组件康虎云报表与odoo整合示例
- 深入浅出Python闭包
- vb实现随机生成100个整数,将其中的奇数由大到小排序,偶数由小到大排序,找出其中所有素数并求和
- regedit是什么意思_regedit是什么意思?
- 【开箱即用】HTML5教程
- 第八届2005汕头国际音响大展
- 英特尔服务器新消息,又一个时代的眼泪!英特尔安腾处理器走完20年成为历史...
- Google卫星地图的URL计算
- 10章 RxJava源码分析
- eagle PCB软件使用心得
- i5 i7 Oracle,Intel Core i5/i7哪款最适合你?Intel Core i5/i7处理器简略对比评测
- python输入矩形的长和宽、输出矩形的面积_c语言,输入长方形的长和宽,计算长方形的周长和面积,并输出,输出结果保留2位小数...
- android richtext显示html,RichText Android 平台下的富文本显示控件 @codeKK Android开源站...
- itools苹果录屏大师_苹果怎么录屏?这两种方法值得了解