《算法与数据结构考研试题精析》笔记(2) - 线性表

Tips

  • 注意细节!看清题目!
  • 在处理链表时,清楚是否有头结点!

Points

单链表中,增加一个头结点是为什么?简单来说(选择题),是为了方便运算的实现;详细来说(简答题或者填空题),如下回答:有头结点后,插入元素和删除元素的算法统一了,不再需要判断是否在第一个元素之前插入和删除第一个元素。另外,不论链表为空,链表指针不变。

静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。

静态链表与动态链表(链表)相比,其缺点:有可能浪费较多空间。

长度为n的顺序表】的相关题目要注意的问题:是移动次数还是平均移动次数?至于平均移动次数求均值就可以了。

对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为O(1)O(n)。【青岛大学2000 五、1】【烟台大学2007 一、2】

线性表中的所有数据元素的数据类型必须相同。

顺序存储结构属于静态结构,链式结构属于动态结构。

静态结构和动态结构相关摘自此网页: (1)数据结构也叫信息结构,讨论的是数据的组织的问题.而我们常用的整型.浮点型等类型的数据,都属于静态数据,他们的存储空间在程序执行过程中不能加以改变,因此被称为静态数据结构。所以静态数据结构的特点由系统分配固定大小的存储空间,以后在程序运行的过程中,存储空间的位置和容量都不会再改变。 (2)动态数据结构不确定总的数据存储量,而是为现有的每一个数据元素定义一个确定的初始大小的空间,若干个数据元素分配若干个同样大小的空间;当问题的数据量发生变化时,数据的存储空间的大小也发生变化。如果数据量增加,就重新向系统申请新的空间;如果数据量减少,就将现有的多余的空间归还给系统。

【换思想解决问题】如果仅仅为下面这种情况“指针p指向单链表的某个结点,在指针p所指结点之前插入s所指结点。其中结点结构为(data,next)”,正常思想是只有知道当前结点p的前继才可以往p结点之前插入结点;但是另外一种处理方式是“交换数据元素的data”,就是插在p的后头,然后将p和s所指结点的数据向交换,如此也可以达到预期目标。

根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成单链表双链表;而又根据指针的连接方式,链表又可分为(动态)链表静态链表

顺序存储结构是通过结点物理上相邻表示元素之间的关系的;链式存储结构是通过结点指针表示元素之间的关系的。

循环单链表的最大优点:从任一结点出发都可访问到链表中每一个元素。

【如何描述算法的功能】先描述算法过程中的关键步骤,最后讲述算法的最终运行结果。