栈和队列是两种重要的线性结构。栈和队列是限定插入和删除只能在表的“端点”进行的线性表。
栈--后进先出
由于栈的操作具有后进先出的固有特性,使栈成为程序设计中有用的工具。另外 ,如果问题求解过程中具有“后进先出”的天然特性则求解的算法中必须利用“栈”
栈(stack)是限定仅在表尾进行插入或删除操作的线性表。又称后进先出(Last In First Out的线性表简称LIFO结构
表尾an端为栈顶Top 表头a1端栈底Base(Bottom)不含元素的空表称为空栈。
插入元素到栈顶(表尾)的操作叫入栈(压栈)
从栈顶(表尾)删除最后一个元素的操作称为出栈(弹栈)
“入”压入PUSH(x) "出"弹出POP(y).
栈的别名:"后进先出"表,反转存储器,地窖,堆栈
它的这个特点可用铁路调度站形象地表示
栈的小结:
1.定义:限定只能在表的一端进行插入和删除操作运算的线性表(只能在栈顶操作)
2.逻辑结构:同线性表一样栈元素具有线性关系即前驱后继关系(一对一)
3.存储结构:顺序栈和链栈均可,顺序栈更常见
4.运算规则:只能在栈顶运算,且访问结点时依照后进后出的原则(LIFO)
5.实现方式:关键是编写入栈和出栈函数具体实现依顺序栈和链栈的不同而不同
栈和线性表唯一的区别在于运算规则。线性表插入删除位置任意而栈只能对表尾(栈顶)的元素进行插入和删除操作。(后进先出的原则)
入栈与出栈过程:
队列--先进先出(先进入的元素先被删除)
由于队列的操作具有先进先出的特性,使得队列成为程序设计中解决类似排队问题的有用工具。
队列(queue)是一种先进先出(First In First Out FIFO)的线性表。在表一端(表尾)插入,在另一端(表头)删除
队列的总结:
1.定义:只能在表的一端进行插入运算在表的另一端进行删除操作运算的线性表(头删尾插)
2.逻辑结构:同线性表一样栈元素具有线性关系即前驱后继关系(一对一)
3.存储结构:顺序队和链队均可,循环顺序队更常见
4.运算规则:只能在队首和队尾运算,且访问结点时依照后进先出的原则(FIFO)
5.实现方式:关键是掌握入队和出队操作具体实现依顺序队和链队的不同而不同
栈和队列的区别:栈是吃进去的东西吐出来(嘴【栈顶】)队列是吃进去的东西拉出来(队首和队尾)
栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因此,可称为限定性的数据结构。