链表学习(5)

来源:互联网 发布:淘宝下单微信全额返现 编辑:程序博客网 时间:2024/05/22 13:09

1、  散列法存储的基本思想是由关键字的值决定数据的存储位置。

 

2、(非空)广义表中:

       1)表头head可以是原子或一个表;

       2)表尾tail一定是一个表;

 

       广义表的同级元素(直属于同一个表中的各元素)具有线性关系。

 

       广义表难以用顺序表存储结构;广义表可以是一个多层次结构;

 

 

广义表:
广义表是线性表的扩展,具体定义为n(n>=0)个元素的有限集合。其中元素又一下两种类型:
一个原子元素(指不可再分的元素) 一个可以再分的元素(或称为一个子表)
如果所有元素都是原子元素,则称为线性表,如果含有子表,则是广义表。

n的值是广义表的长度,如果n=0,称广义表为空表。

常见的广义表为:
A=();B=(());C=(alb);D=(A,B,C);E=(a,E)
广义表中含有元素的个数称为广义表的长度,广义表中含有的括号对数称为广义表的深度。


从上述定义和例子可推出列表的3个重要结论:
1)列表的元素可以是子表,而子表的元素还可以是子子表…由此,列表是一个多层次的结构。

2)列表可为其他列表所共享。如列表D可以直接引用其他列表。

3)列表可以是一个递归的表,即列表也可以是其本身的一个子表。

 

 

3、广义表中的元素或者是一个不可分割的原子或者是一个非空的广义表。(错误,广义表的元素可以为空。)

 

4、循环单链表的最大优点:从表中任一结点出发均可找到表中其他结点。

 

5、顺序存储结构是一种随机存取的存储结构;链式存储是一种顺序存取的存储结构。

       基本线性表有顺序存储和链式存储两者存储形式。

 

6、若线性表最常用的操作是存取第n个元素及其前驱和后继元素的值,为节省时间应采用的存储方式:顺序表

(分析:只涉及存取,不涉及增删)

 

 

7、若频繁删除某线性表的第一个元素,则不宜采用顺序表的存储方式。

分析:对顺序表来说,删除第一个元素就需要后续元素都向前移动一个位置;每删除一次都需要移动大量数据,因此不宜采用。从时间复杂度上,删除链表元素花销为O(1),而删除顺序表的花销,则要挪动剩余的n-1,花销为O(1).

 

8

1)红黑树插入操作的平均时间复杂度为O(log n),最坏时间复杂度为O(log n);

2)B+树插入操作的平均时间复杂度为O(log n),最坏时间复杂度为O(log n);

3)排序链表插入操作的平均时间复杂度为O(n),最坏时间复杂度为O(n);

4)哈希表:

哈希表插入的时间复杂度与冲突次数有关,O(冲突次数/n),最好的情况冲突次数为0,直接插入,时间复杂度为O(1)。最坏情况是所有值对应同一个键值,这是冲突次数最多,为0+1+2+3+4+…+(n-1)=n*(n-1)/2,平均比较次数为(n-1)/2,时间复杂度为O(n)


补充: