1.内容:第一章学习中,数据结构包括逻辑结构和存储结构两个层次;逻辑结构包括线性结构和非线性结构,而存储结构包括顺序存储结构和链式存储结构。接着第二章的学习中,具体学习了线性表中的顺序表和链表。

(1)顺序表:数据元素在逻辑上是相邻的,在物理上也是相邻的;而且顺序表上的数据元素是由一组连续的存储单元来依次存储。因此,若已知顺序表的起始存储位置,那么任意的数据元素也可知。顺序表的基本操作:初始化、取值、查找、插入和删除。注意:顺序表取值的时间复杂度为O(1),因为顺序表可以实现随机存取(顺序存储结构)。查找数据元素是,时间主要耗费在数据之间的比较次数上。而顺序表的插入、删除(若是任意位置的插入、删除),时间则主要耗费在移动元素上。

(2)链式表:单链表、单循环链表、双循环链表,主要学习了单链表。单链表是链式存储结构(存放数据元素的地址空间不一定连续),逻辑上相邻,物理上不一定是相邻的。为了表示数据元素之间的逻辑关系,需要使用指针。单链表的基本操作:初始化、取值、查找、插入和删除,以及单链表的创建(前插法和后插法)。不管是取值还是查找,都是由首元结点开始,并依次顺着指针域向下访问或是查找。

前插法:p->next=L->next;

              L->next=p;//将新结点插入到头结点的后面

后插法(尾指针):

              p->next=NULL;

              r->next=p;r=p;//顺序不能改变(先插入新结点,再让尾指针指向新结点)

(2)困惑和经验:(1)对于书中的算法需要理解好每一步,才能更好地利用所学的编程语言编写好程序。(2)学习了时间复杂度,需要运用到具体编程上,即需要考虑T(n)来优化程序,提高程序运行效率。(3)具体问题具体分析,运用顺序表还是链表需要根据具体问题来使用。(4)循环条件应该写清楚。

(3)参考书籍:《C++程序设计语言》192页(链表部分)

(4)目标:(1)深入理解顺序表&链表的基本操作的算法,熟练地运用。(2)编程时多考虑T(n)、S(n),继续巩固和提高编程能力