- 上一章我们学习到了线性表,其重点也是数据的存储结构,这一章我们来讨论一下"特殊的线性表"一一栈与队列。栈与队列和线性表一样,是两种十分常用的数据结构。他们各有各的特点和使用方式。
- 栈
- 栈是限定仅在一端进行插入和删除的操作的线性表,允许插入和删除的一端称为栈顶,另一端称为栈底。不含任何数据元素的栈称为空栈。这与线性表不同,线性表可以选择进行删除或添加的位置。而栈只能在栈底操作,而且始终秉持着后进先出的原则。
- 顺序栈和顺序表无太大差异,有着只是栈和线性表的差异。栈需要定义一个栈顶指针top指向栈顶数据。顺序栈中包含的基本成员函数有:构造函数,析构函数,入栈(入栈top加一),出栈(出栈top减一),取栈顶元素,判空。
- 顺序栈是静态存储分配,不用定义析构函数,为空。
- 判断是否为空栈只需要判断top是否等于-1即可。
链栈
其结点结构与单链表一致。首先第一步与单链表构建一致,先定义结点。每个结点存储着数据也存储这下面数据的地址。基本操3作与顺序栈一致。在入栈出栈的操作上更偏向类似单链表中的插入删除操作。
总结来说 栈类似一个死胡同,先进的只能后出,后进的只能先出。具体实现代码,数据结构课本上有些十分详细的介绍。
通过资料查询得知,我们也可以直接调用栈,不需要我们构建。头文件stack。stack<数据类型>栈名。即可直接调用。里面包含的函数功能有push()入栈。pop()出栈。top()取栈顶元素。empty()判空。等都可以直接调用。