栈的应用及构造
栈的简介
栈是一种只能从一端进行删除和插入的线性结构。因此栈具有后进先出的特点。例如进栈顺序是12345,如果5是第一个出栈的数字,则接下来出栈的一定是4,3,2,1。由于栈后进先出的特点,所以栈经常被递归算法调用,此时栈被称为递归工作栈。从栈的容量来看,栈可被分为动态栈可静态栈。动态栈顾名思义即使栈的容量可变,静态栈即是栈的容量是固定的。
用顺序表构造的静态栈及其操作
1.栈的构造:申请给定大小空间,将栈顶指针指向栈底。
2.栈的初始化:将栈的栈顶指针指向栈底。
3.栈的插入:先检查是否栈满,若栈满,则报错。否则将栈顶指针上移一个单位,将元素插入栈顶。
4。栈的删除:先检查是否栈空。若栈空,则报错。否则,删去栈顶元素,将栈顶下移一个单位。
用顺序表构造的动态栈及其操作
1.栈的构造:申请一定大小的空间。将栈栈顶指针指向栈底(-1)。
2.栈的初始化:将栈顶指针指向栈底(-1)
3.栈的插入:先检查是否栈满,若栈满,则申请一个是此时栈两倍大小新栈。将旧栈内容复制到新栈。并将旧栈空间释放。然后将栈顶指针上移一个单位。然后将新数据插入到栈顶指针所指位置。。
4.栈的删除:先检查是否、栈空,若栈空,则报错。否则删除栈顶元素,并将栈顶元素下移一个单位。
用链表构造的动态栈及其操作
1.栈的构造:申请栈节点指针并赋值null(此栈节点指针即是栈顶指针)
2.栈的初始化:将原有栈节点空间一个一个释放,并将栈顶指针指向空节点。
3.栈的插入:申请一个新的栈节点,将插入数据放在此新申请节点的数据域。并将此新栈节点链入栈顶。将栈顶指针指向此新栈节点。
4.栈的删除:先检查是否栈空。若栈空,则报错。否则将栈顶节点删除,并将栈顶指针指向下一个栈节点。