您的位置:首页 > 理论基础 > 数据结构算法

数据结构知识汇总1:线性表,栈和队列

2018-03-06 22:18 246 查看
线性表是零个或者多个数据元素的有限序列。线性表中的元素必须是类型相同的。
线性表的顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素。同时也需要3个属性来描述:
1.存储空间的起始位置
2.线性表的最大存储容量
3.线性表的当前长度
其优点为:线性表中的元素可以随时存取
线性表的链式存储结构:用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的也可以是不连续的。
链式结构除了存储数据本身的信息外,还需存储一个指示其直接后继的信息,单链表的第一个节点称为头结点,可以不存储任何信息。
链表结构:
   1,静态链表:用数组实现,改进了顺序结构中存取需要移动大量元素的缺点,但是失去了存取随机的特性
   2,循环链表:将单链表的终端节点的指针指向头结点,判空时p->next 不等于头结点,则循环没有结束
   3,双向链表:在单链表的每个节点中,在设置一个指向其前驱节点的指针域,但在插入和删除时,需要更改两个指针变量
链表中查询元素的时候不要用for 因为不知道会循环多少次,用while,用空间换时间
栈:是限定仅在表尾进行插入和删除操作的线性表,可以插入和删除的叫做栈顶,另一端叫做栈底,先进后出
栈顶指针top为-1时,栈为空栈。栈结构需要提前规划好空间,可以建两个栈公用空间,一个增长,一个消减。当两个栈顶指针相差为1时栈满
什么时候栈用链式存储?
 当在使用过程中元素变化不可预料,则用链栈,若变化在可控范围内,则用顺序栈。链栈的头指针就是栈顶指针。空就是top=NULL,  
栈是实现递归的最好结构
栈的应用:四则表达式求值。后缀式(逆波兰)表示法
  遇到左括号就进栈push(),遇到右括号就让栈顶的左括号出栈pop()。
队列(queue)只允许在一端进行插入操作,另一端进行删除操作的线性表。
循环队列有两个指针:front和rear,当front 等于rear时,是空队列
循环队列满的条件是:(rear+1)%QueueSize ==front
计算队列长度的是:(rear-front+QueueSize)%QueueSize
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构