数据结构笔记——栈

Posted sunnyHere

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构笔记——栈相关的知识,希望对你有一定的参考价值。

栈的应用及构造

栈的简介

栈是一种只能从一端进行删除和插入的线性结构。因此栈具有后进先出的特点。例如进栈顺序是12345,如果5是第一个出栈的数字,则接下来出栈的一定是4,3,2,1。由于栈后进先出的特点,所以栈经常被递归算法调用,此时栈被称为递归工作栈。从栈的容量来看,栈可被分为动态栈可静态栈。动态栈顾名思义即使栈的容量可变,静态栈即是栈的容量是固定的。

用顺序表构造的静态栈及其操作

1.栈的构造:申请给定大小空间,将栈顶指针指向栈底。
2.栈的初始化:将栈的栈顶指针指向栈底。
3.栈的插入:先检查是否栈满,若栈满,则报错。否则将栈顶指针上移一个单位,将元素插入栈顶。
4。栈的删除:先检查是否栈空。若栈空,则报错。否则,删去栈顶元素,将栈顶下移一个单位。

用顺序表构造的动态栈及其操作

1.栈的构造:申请一定大小的空间。将栈栈顶指针指向栈底(-1)。
2.栈的初始化:将栈顶指针指向栈底(-1)
3.栈的插入:先检查是否栈满,若栈满,则申请一个是此时栈两倍大小新栈。将旧栈内容复制到新栈。并将旧栈空间释放。然后将栈顶指针上移一个单位。然后将新数据插入到栈顶指针所指位置。。
4.栈的删除:先检查是否、栈空,若栈空,则报错。否则删除栈顶元素,并将栈顶元素下移一个单位。

用链表构造的动态栈及其操作

1.栈的构造:申请栈节点指针并赋值null(此栈节点指针即是栈顶指针)
2.栈的初始化:将原有栈节点空间一个一个释放,并将栈顶指针指向空节点。
3.栈的插入:申请一个新的栈节点,将插入数据放在此新申请节点的数据域。并将此新栈节点链入栈顶。将栈顶指针指向此新栈节点。
4.栈的删除:先检查是否栈空。若栈空,则报错。否则将栈顶节点删除,并将栈顶指针指向下一个栈节点。

以上是关于数据结构笔记——栈的主要内容,如果未能解决你的问题,请参考以下文章

数据结构学习笔记(栈队列)整理与总结

数据结构学习笔记——顺序存储结构实现栈

数据结构与算法学习笔记栈和队列

数据结构学习笔记——栈的基本知识和顺序存储结构实现栈(顺序栈)

《学习JavaScript数据结构与算法》 第四章笔记 栈

数据结构学习笔记--栈