网上有关“栈的基本操作”话题很是火热,小编也是针对栈的基本操作寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
栈的基本操作如下:
(1)初始化一个栈:InitStack
(2)销毁一个栈:DestroyStack
(3)清空一个栈:ClearStack
(4)判断一个栈是否为空:StackIsEmpty
(5)返回栈中元素个数,即栈的长度:StackLength
(6)入栈,把一个元素加入到栈中:Push?
(7)出栈,把栈顶元素给干掉:Pop?
(8)返回栈顶元素,但不出栈:GetTop
对于栈这一数据结构,我首先写一下它的基本概念。
一.基本概念:
栈(stack)是仅限定在表尾进行插入和删除操作的线性表。
栈就是一个线性表,只不过,栈的Insert 和 delete只能在表尾。
普通的线性表,在表中的任意位置都可以进行insert和delete操作。
LIFO: Last In First Out 后进先出,先进后出。
栈顶(Top): 进行插入和删除操作的一端。
栈底(Bottom)
栈其实我们计算机科学中,更多的一种思想,“先进后出的思想”。在很多算法或应用中,需要用到“先进后出的思想”,我们可以考虑用栈来实现。
二.存储结构:
顺序结构: 用一组地址连续的空间来存储数据元素。
链式结构:用地址不连续的空间来存储数据元素,可能需要额外开辟一些空间,来存储“数据元素之间的逻辑关系"。
栈和队列 - 队列 - 队列的定义及基本运算
利用堆栈将中缀表达式转换为后缀表达式计算。简单给你讲一下算法:
1.从中缀表达式中逐字符读入操作数
2.若操作数为数字,直接输出到后缀表达式队列
3.若操作数为左括号(,将其压栈
4.若操作数为加减乘除运算符,将其与栈顶元素比较:
①操作数优先级高于栈顶元素,则将操作数压栈;
②操作数优先级等于或低于栈顶元素,先将栈顶元素出栈,然后将操作数压栈。
5.若操作数为右括号),从栈顶元素开始出栈,直到遇到左括号(为止,左括号也出栈。若直到栈底仍然没有发现左括号,返回表达式匹配错误(说明右括号过多)
6.表达式读取完毕,开始将栈中所有剩余元素出栈。若出栈过程中发现有左括号,返回表达式匹配错误(说明左括号过多)
除了左括号以外,所有出栈的元素都进入到后缀表达式队列中。
7.根据后缀表达式计算算式结果。
定义
队列(Queue)是只允许在一端进行插入 而在另一端进行删除的运算受限的线性表
( )允许删除的一端称为 队头(Front)
( )允许插入的一端称为 队尾(Rear)
( )当队列中没有元素时称为 空队列
( )队列亦称作先进先出(First In First Out)的线性表 简称为 FIFO表
队列的修改是依先进先出的原则进行的 新来的成员总是加入队尾(即不允许 加塞 ) 每次离开的成员总是队列头上的(不允
许中途离队) 即当前 最老的 成员离队
例在队列中依次加入元素a a … a n 之后 a 是队头元素 a n 是队尾元素 退出队列的次序只能是a a
… a n
队列的基本逻辑运算
( )InitQueue(Q)
置空队 构造一个空队列Q
( )QueueEmpty(Q)
判队空 若队列Q为空 则返回真值 否则返回假值
( ) QueueFull(Q)
判队满 若队列Q为满 则返回真值 否则返回假值
注意
此操作只适用于队列的顺序存储结构
( ) EnQueue(Q x)
若队列Q非满 则将元素x插入Q的队尾 此操作简称 入队
( ) DeQueue(Q)
若队列Q非空 则删去Q的队头元素 并返回该元素 此操作简称 出队
( ) QueueFront(Q)
若队列Q非空 则返回队头元素 但不改变队列Q的状态
lishixinzhi/Article/program/sjjg/201311/23924关于“栈的基本操作”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[埋愁谷]投稿,不代表拾光号立场,如若转载,请注明出处:https://www.7k54.com/shiga/912.html
评论列表(3条)
我是拾光号的签约作者“埋愁谷”
本文概览:网上有关“栈的基本操作”话题很是火热,小编也是针对栈的基本操作寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。栈的基本操作如下:(1)初...
文章不错《栈的基本操作》内容很有帮助