第三章学习小结

 

数据结构第三章栈与队列学习小结

在这一章中,我们学习了栈和队列,栈和队列都有顺序结构和链式结构两种存储结构,

栈只能在栈头插入删除,而队可以在队头删除,队尾插入,但是从上课和PTA中,我发现可能栈是本章的重点比较多。

栈:

通过对比书上和课件对顺序栈的基本操作的代码,我发现了,对于顺序栈有两种数据类型的表示。1)将topbase定义为指针型,表示的是存储空间的其实地址,所以我们在后续初始化的过程中需要申请动态空间。

 

2)topbase定义为非指针类型,此时在初始化的过程中,就不需要申请动态空间了,因为已经提前定义了静态数组空间。

 

 

 

除此之外我发现了顺序栈中表示栈空其实有很多方法:

S.top==S.base  S.top=0S.top=-1

 

       

 

 

              

 

 

          

关于top做指针的时候有①top为栈顶指针,其初值指向栈底;插入新的元素,指针加一;②删除时减一;③栈非空的时候,top始终指向栈顶元素的上一个位置

在写PTA的括号匹配那道题的时候 我发现我刚开始用switch函数的时候,答案总是部分正确

其实关于更好地理解栈的结构,可以到慕课上上网课

进退栈动画显示:https://www.icourse163.org/learn/PAEU-1001660013?tid=1206000229#/learn/content?type=detail&id=1210574379&cid=1212765925

实例应用如表达式求值:

https://www.icourse163.org/learn/PAEU-1001660013?tid=1206000229#/learn/content?type=detail&id=1210574379&cid=1212765921

而对于栈的链式结构其实就是单链表,在链栈中,主要的问题是要不要设置头结点?

其实头结点作用:1.由于头结点指向下一个元素,所以一般在栈头进行数据的插入和删除

 

头结点不代表任何一个元素,只是有了头结点可以更好地找到下面的结点

2.头指针和栈顶指针合二为一

链栈:https://www.icourse163.org/learn/ZJU-93001?tid=1003997005#/learn/content?type=detail&id=1007588480&cid=1009151946

与顺序栈不同的是:链栈当中入栈和出栈不需要判断栈满或栈空

实际应用:1中缀表达式变为后缀表达式

https://www.icourse163.org/learn/ZJU-93001?tid=1003997005&from=study#/learn/content?type=detail&id=1007588480&cid=1009151947

队:

在队中最重要的是循环队列,我认为最重要是记得几个公式:

Q.front=Q.rear;②(Q.rear+1%MAXSIZE==Q.front

(Q.rear-Q.front+MAXSIZE)%MAXSIZE

https://www.icourse163.org/learn/PAEU-1001660013?tid=1206000229#/learn/content?type=detail&id=1210574380&cid=1212765926

 

 

 

 

 

 

 

 

值得注意的是队空和队满的表示都是一样的

 

posted on 2019-03-31 22:28  流星雨lxy  阅读(153)  评论(2编辑  收藏  举报

导航