博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java数据结构与算法(二)----栈和队列
阅读量:5328 次
发布时间:2019-06-14

本文共 941 字,大约阅读时间需要 3 分钟。

1.栈的定义

  栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表

  (1)插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)

  (2)当表中没有元素时称为空栈

  (3)栈为后进先出(Last In First Out)的线性表,简称LIFO

  

  栈的修改时按后进先出的原则进行,每次删除(退栈)的总是当前栈中最新的元素。即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。

2.栈的基本运算

  a.InitStack (S)

    构造一个空栈S

  b.StackEmpty (S)

    判断栈是否为空栈

  c.StackFull (S)

    判断栈是否为满栈

  d.Push (S,x)

    进栈,若栈S不满,则将元素x插入S的栈顶。

  e.Pop (S)

    退栈。若栈S非空,则将S的栈顶元素删掉,并返回该元素。

  f.StackTop (S)

    取栈顶元素。若栈S非空,则返回栈顶元素,但不改变栈的状态。

 

队列

1.队列的定义

  队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表

(1)允许删除的一端称为队头(Front)

(2)允许插入的一端称为队尾(Rear)

(3)当队列中没有元素时称为空队列

(4)队列也称为先进先出(First In First Out)的线性表,简称为FIFO表

队列的修改是依先进先出的原则进行的,新来的成员总是加入队尾,每次离开的成员总是在队列头上的(不允许中途离开)。

 

2.队列的基本逻辑运算

a.IninQueue (Q)

置空队。构造一个空队列Q

b.QueueEmpty (Q)

判断队列是否为空

c.QueueFull (Q)

判断队列是否满

d.EnQueue (Q,x)

若队列Q非满,则将元素x插入Q的队尾。即入队

e.DeQueue (Q)

若队列Q非空,则删去Q的队头元素,并返回该元素。即出队

f.QueueFront (Q)

若队列Q非空,则返回队头元素,但不改变队列Q的状态。

 

 

转载于:https://www.cnblogs.com/shenming/p/3630994.html

你可能感兴趣的文章
delphi 内嵌汇编例子
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
对闭包的理解
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
windows编程ASCII问题
查看>>
.net webService代理类
查看>>
Code Snippet
查看>>
Node.js Express项目搭建
查看>>
zoj 1232 Adventure of Super Mario
查看>>