3.1栈的入门——概念与应用
来源:互联网 发布:db2数据库创建用户 编辑:程序博客网 时间:2024/05/01 10:06
初步认识栈
内容概述:先列举栈的来源框架结构,再开始介绍栈的一些基本知识点,继而说明顺序存储结构和链式存储结构,最后提到应用。
- 前文之前提到的线性表进行一定的操作受限就形成了栈和队列,其逻辑结构是属于线性结构,存储结构可通过顺序存储和链式存储实现。栈的出现是为了解决某些特定情形下的结构运算。具体可看下面的应用部分。
基本概念
栈是指只允许在一端进行插入或删除操作的线性表。因而它的操作受限是指只能在某一端进行插入和删除操作,因而栈的一个明显特性可以概括为后进先出(LIFO)。栈又可称为后进先出线性表。
下面是栈的一些专业名词解释:
基本操作
- 这里的&S是指C++中引用的含义,在C语言中使用*可达到同样目的。一般传入参数,如果无需修改传入参数的值,则无需传址。
顺序存储结构
使用顺序存储结构实现的栈称为顺序栈,是指 利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时附设一个指针(top)指示当前栈顶的位置。
#define MaxSize 50 //定义栈中元素的最大个数typedef struct{ ElemType data[MaxSize]; //存放栈中元素 int top; //栈顶指针}SqStack;
这里是栈顺序存储实现代码
共享栈
共享栈是利用栈底位置相对不变的特性,可以让两个顺序栈共享一个一维数据空间,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸。
链式存储结构
采用链式存储结构实现的栈称为链栈,优点在于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。
typedef struct LinkNode{ ElemType data; //数据域 strcu LinkNode * next; //指针域}*LinStack; //栈类型定义
- 一般使用单链表实现,并且规定所有操作都是在单链表的表头进行,这里规定链栈无头结点,Lhead指向栈顶元素。如下图所示:
应用
栈在括号匹配中的应用
算法思想:
(1)初始化设置一个空栈,顺序读入括号
(2)若是右括号,则或者使置于栈顶的最急迫期待得以消解,或者是不合法的情况(括号序列不匹配,则退出程序)
(3)若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性降了一级。算法结束时,栈为空,否则括号系列不匹配栈在表达式求值中的应用
栈在递归中的应用
阅读全文
0 0
- 3.1栈的入门——概念与应用
- 框架的概念与应用
- Unity Shader入门精要笔记(八):Unity 的基础光照——概念与理论
- 闭包的概念、形式与应用
- 闭包的概念、形式与应用
- MySQL存储引擎的概念与应用
- 闭包的概念、形式与应用
- 闭包的概念、形式与应用
- 闭包的概念、形式与应用
- 闭包的概念、形式与应用
- Android之Intent的概念与应用
- 闭包的概念、形式与应用
- java枚举的概念与应用
- 闭包的概念、形式与应用
- 7.1 缓存的概念与应用
- UV的概念与UE4TexCoord应用
- 七、概念与入门
- 柯里化概念与应用
- python3 字典基本函数实现
- Matplotlib学习笔记(一)
- OpenGL开发学习指南一(freeglut+glew)
- UML静态结构设计中的各种符号以及关系解读
- 关于spring mvc 的alwaysUseFullPath配置
- 3.1栈的入门——概念与应用
- selenium,初学使用chrome时报错
- POJ
- SSM二级缓存ehcache
- 面试总结(一)
- 官网适配手机诀窍
- 基于fedora的.ks文件结构汇总
- 程序员的思维修炼读书笔记(一)
- HTML5-java-web基础-eclipse