码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构0401

时间:2018-04-10 18:46:38      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:结构   赋值   最大   中间   不可   顺序存储   另一个   数据结构   一个栈   

栈的定义:栈是限定仅在表尾进行插入和删除操作的线性表

允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈,栈又称为后进先出(last in first out)的线性表简称lifo结构(好比子弹弹匣,后装填的先打出去)

注意事项:栈元素具有线性关系,因为栈是一个特殊的线性表,定义里说的表尾是指栈顶不是栈底,删除和插入操作只能在栈顶,栈底是固定的,最先进栈的只能在栈底

栈的插入操作叫进栈也叫压栈,入栈(push)。 栈的删除操作叫出栈(pop)

进栈出栈的变化

并不是所有最先进栈的元素都只能是最后出栈,在不是所有元素都进栈的情况下,先进去的元素也可以出栈,只要保证是栈顶元素就行

例:有三个整形数字1 2 3 依次进栈

1 1 2 3依次进栈,然后321出栈 出栈次序321

2 1进1出2进2出3进3出 进一个出一个 出栈次序123

3 1进 2进 2出 1出 3进3出 出栈次序213

4 1进 1出 2进 3进 3出 2出 出栈次序132

5 1进2 进 2出 3进 3出 1出 出栈次序231 

当然312这样的出栈次序是不可能的

栈的顺序存储结构——进栈操作

栈满返回异常,栈顶指针加一,将新元素赋值给栈顶空间

栈的顺序存储结构——出栈操作

栈顶指针-1,将要删除的栈顶元素返回

一个栈的缺陷:必须事先确定数组存储空间大小,万一不够用了,就需要编程手段来扩展数组容量,但对于两个相同类型的栈。可以做到最大限度地利用先开辟出来的空间进行操作

数组有两个端点,两个栈有两个栈底,让一个栈的栈底为数组的起始端,下标0处,另一个栈为数组的末端,下标为数组长度n-1处,如果两个栈增加元素就是两端点向中间延伸,只要两个栈的栈顶不见面就可以一直使用 

top1 + 1 == top2时则栈满(top为栈下标)

一般只有当两个栈的空间需求有相反关系是,也就是一个栈增长时另一个在缩短(切记相同类型的)

数据结构0401

标签:结构   赋值   最大   中间   不可   顺序存储   另一个   数据结构   一个栈   

原文地址:https://www.cnblogs.com/summervan/p/8746481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!