线性表02

1、线性表的顺序存储结构在存、读数据时,不管是哪个位置,时间复杂度都是O(1)。而在插入或删除时,时间复杂度都是

O(n)。这就说明,线性表的顺序存储结构比较适合元素个数比较稳定,不经常插入和删除元素,而更多的操作是存取数据的应用。

2、线性表顺序存储结构的优缺点:

优点:无须为表示表中元素之间的逻辑关系而增加额外的存 储空间。

可以快速地存取表中任意位置的元素。

缺点:插入和删除操作需要移动大量元素。

当线性表长度变化较大时,难以确定存储空间的容量。

容易造成存储空间的“碎片”。

3、线性表链式存储结构的定义:线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以存在内存中未被占用的任意位。

4、在链式存储结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址(指针)。

5、我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称为指针或链。这两部分信息组成的数据元素称为存储映像,也称为节点(Node)。

6、n个结点链接成一个链表,即为线性表(a1,a2,a3,......,an)的链式存储结构。因为此链表的每个结点中只包含一个指针域,所以叫做单链表。

7、对于线性表来说,总得有个头有个尾,链表也不例外。我们把链表中的第一个结点的存储位置叫做头指针,最后一个结点指针为空(Null)。

8、头指针:头指针是指链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针。

头指针具有标识作用,所以常用头指针冠以链表的名字(指针变量的名字)

无论链表是否为空,头指针均不为空。

头指针是链表的必要元素。

9、头结点:头结点是为了操作的统一和方便而设立的,放在第一个元素的结点之前,其数据域一般无意义(但也可以用来存放链表的长度)

有了头结点,对在第一元素结点前插入和删除结点与其他结点的操作就统一了。

头结点不一定是链表的必须要素。

10、单链表图例:

空链表图例:

11、假设p是指向线性表第i个元素的指针,则该结点ai的数据域我们可以用p->data的值来表示,结点ai的指针域可以用p->next来表示,p->next的值是一个指针。

12、对于插入或删除数据越频繁的操作,单链表较顺序存储效率更高。

13、单链表的数据是分散在内存各个角落的,它的增长也是动态的。

14、对于每个链表来说,它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。

15、创建单链表的过程是一个动态生成链表的过程,从“空表”的初始状态起,依次建立各元素结点并逐个插入链表。

16、单链表整表创建的算法思路:

(1)声明一结点p和计算器变量i

(2)初始化一空链表L

(3)让L的头结点的指针指向NULL,即建立一个带头结点的单链表

(4)循环实现后继结点的赋值和插入

17、头插法建立单链表:头插法从一个空表开始,生成新结点,读取数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,知道结束为止。

简单来说,就是把新加进的元素放在表头后的第一个位置:

(1)先让新结点的next指向头结点之后

(2)然后让表头的next指向新结点

18、尾插法:把新结点都插入到最后。

猜你喜欢

转载自blog.csdn.net/weixin_42617472/article/details/82966540