数据结构:第三章学习小结

内容小结:

第三章学习了两种特殊的线性表—栈和队列,其中包括:

1.栈和队列的定义和特点:

  ①栈是限定仅在表尾进行插入或删除操作的线性表,元素后进先出(LIFO),而队列是限定在表头删除、表尾插入的线性表,元素先进先出(FIFO);

2.栈和队列的两种存储结构以及其基本操作:

  ①利用循环队列,避免了“假溢出”问题,需要注意凡是涉及队头或队尾指针的修改操作都要对其进行模运算,比较特殊;

  ②顺序结构的栈和队列需要注意每次插入元素时空间是否为满,删除元素时空间是否为空;

3.递归算法:

  ①学习了汉诺塔问题,了解到栈在算法中如何提供工作栈来保存工作记录、从而实现递归;

  ②根据递归公式来求解问题,分为自底向上和自顶向下两种求解方法,前者由迭代实现,后者由递归实现,但需要注意重复子问题的情况。

 

心得体会:

1.PTA:在理解基本操作和慕课视频辅助下,基本上没有什么问题。最大的感触是使用STL库好方便!

  ①括号匹配:注意题目里的字符输入是包括空格的,因此输入是使用getline函数实现,getline函数终止符为‘/0’。

  ②银行队列:由于对循环队列理解不深,总是输出0和无意义数字,后来检查自己的代码,发现是因为出队操作误取出了队尾元素_(:з」∠)_。以后要更加仔细一点检查代码,避免...这类低级错误发生。

2.分组讨论-绕弯查询:我们小组选择顺序表来实现代码,但是起初陷入了误区,想用编号来替换下标,研究如何将字符串转换成数字(查到的资料太高深),后来转换思路,运用temp存储上次查询的最终位置和break退出当前查询循环来减少查询次数。这些小技巧在平时可能都不太会关注,但在提高效率上挺实用的。

 

上一阶段目标完成情况:

巩固了顺序表和链表的相关操作,但对于循环链表等一些特殊链表可能还是有点生疏……

 

接下来的目标:

巩固之前学习的栈和队列的相关操作,继续努力学习接下来的第四章知识(ง •_•)ง。

 

 

posted @ 2020-04-26 18:49  方璇  阅读(156)  评论(0编辑  收藏  举报