码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-04-12 20:12:04      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:提高   如何   删除   因此   类型   nbsp   lan   完成   陷阱   

内容小结:

1.书上2.3了解到线性表的类型定义,注意类型定义的规范写法;

2.书上2.4、2.5了解到线性表的两种存储结构,即顺序存储(顺序表)和链式存储(链表),进而学习了相关的初始化、插入、删除等操作及其各操作空间、时间复杂度是如何得出的。其中链表又分为单链表、循环链表等,要注意不同链表基本操作的不同点。

3.书上2.6则比较了顺序表和链表在空间性能(存储空间分配、存储密度大小)和时间性能(存取元素效率、插入和删除操作效率)的不同。后续内容则偏向于具体案例和实践方面,个人感觉有助于代码能力的提高。

 

心得体会:

1.PTA:关于PTA上的作业题和实践题,大多围绕两个有序链表来进行,因此熟练掌握链表的初始化、插入等等操作是很必要的,同时这几个操作也可以反复利用在多道题目里。

 接下来是我在作业中遇到的一些不成熟的问题和改进:

 ①实践2-求两个有序链表序列的交集,需要注意插入新结点的问题——在并集里是先插入新结点,每比较完一次元素,就为新结点赋值;在交集里,应该在比较两元素相等后,再插入新结点赋值,以免造成无效的结点而输出无意义字符。(但是此方法似乎耗时过大?)

 ②实践2-求两个有序链表合并(新表不含重复元素),这题需要考虑链表的输入带有重复元素的情况。对于这个问题,我考虑的方法是先求交集再去重,可能还存在更好的方法亟待发现。

2.分组讨论:在小组合作讨论代码、评论他组代码的过程中,能够感受到不同人的思想碰撞,汲取到别人更巧妙更有趣的想法,也能反省自己的不足,而且最终完成代码、成功运行的成就感是满满的。最重要的是,在小组讨论中,我发现自己打代码的能力偏弱,速度有点跟不上别人,并且对链表指针的运用也不够纯熟,也会忽略掉题目中的一些陷阱,今后应该在这些方面多加努力。

 接下来是我在讨论中遇到的一些问题,以示警醒:

 ①讨论1-有序链表插入:没有考虑到要插入的数为链表头尾的情况。

 ②讨论2-带有头尾指针的链表初始化操作:不太分得清.和->的差别,是在编译器的提醒下不断修正的……

1 void init(List &L)
2 {//构造一个空的单链表L
3   L.tail=new LNode;
4   L.tail->next=NULL;
5   L.head=L.tail;
6 }

 ③讨论2-带有头尾指针的链表删除第一个结点后插入的操作:没有考虑到在只有一个元素的情况下删除的情况,误删了尾指针。

 1 void delet(List &L)
 2 {//在带头结点的单链表L中,删除第一个结点 
 3   int x;
 4   LNode *s;
 5   s=L.head->next;
 6   if(s==L.tail)
 7   {
 8       L.head->next = NULL;
 9       L.tail = L.head;
10   }
11   else L.head->next=s->next;
12   delete s;
13 }

 

接下来的目标:

既要掌握巩固好顺序表和链表的相关操作,尤其是比较特殊的链表,确保能够比较熟练地打出来(无需参考书本);另外,也要努力学习接下来的新知识,好好学习,天天向上(●’?’●)。

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

标签:提高   如何   删除   因此   类型   nbsp   lan   完成   陷阱   

原文地址:https://www.cnblogs.com/Function-F/p/12687191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!