这一章讲的主要是栈和队列。从数据结构的角度上说,栈和队列也是线性表,只不过是操作受限的线性表。我觉的这句话很有意思,就好像说现在的我还是以前的我,只不过我随着长大好像也开始操作受限了,但是我还是我,可是为什么会这样呢?
虽然这一章仍旧是线性表,不过抽象的程度上有了加深,所以我在这节课上学的稍显吃力。枯了;
小结:
老习惯,先奉上图。
其实在于理论课我觉得是听得头头是道,津津有味。可是一到实操我好像就是一脸懵逼的,看来自己还是太弱了,没有一点点的积累和经验。
好吧,下面补充一下关于栈和队列的一些知识点。
#栈:
1、栈分为链栈和顺序栈;
2、顺序栈需要有栈顶指针和栈底指针;
3、顺序栈缺点是受到最大空间的限制。所谓栈溢出攻击也就来源于此;
4、链栈是没有必要设置头结点的,因为在删除操作有无头结点都要考虑边界与非边界的问题,而在插入操作时,无头结点的链栈可以保持边界与非边界代码的一致性,而有头结点则不行;
5、链栈基本不需要考虑栈满的问题。
#队列:
1、存储类别和顺序栈相似都是占用一片连续的的存储单元;
2、并且在队列上约定-->初始化创建空队列是=时,令front = near =0,每当插入新的队列尾元素时,尾指针rear增加1....在此类插入删除的操作中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一个位置;
3、So,对于循环队列不能以头尾指针的值是否相同来辨别队列空间是“满”还是“空”。
##栈和队列:
1、出栈出队前都要判断是否为空,入队入栈前都要判断是否为满;
2、栈和队列插入操作都是限定在表尾进行,而删除操作就不同->栈的删除操作在表尾进行,队列的删除操作在表头进行;
3、暂时没想到。
体会:
实践操作太弱,建个链表都要半天。
写个博客的目标还是有达到的;
接下来就是慢慢提升自己的编程实践操作;
原来我也是栈和队列。