小白的数据结构与算法学习笔记(五)----线性表的链式存储结构

前面讲了线性表的顺序存储,就像排队一样,一个挨着一个这样存储,由于逻辑与物理结构的一致性,可以节省描述元素之间逻辑关系的空间而且易于存读数据,但是插入删除元素时却要耗费很多时间,下面介绍的链式存储结构通过指针可以很好解决这个问题。

链式存储结构,顾名思义,就像一条链,把所有元素串在一块,事实上,指针在这里也叫链。链式存储不像顺序存储,它存储元素是一种“乱放”式存储,不是一个挨一个这种,而是哪有空地就搁哪,其实大家想一想,正是因为顺序存储一个挨一个,两个元素之间没有空隙才让插入或删除异常复杂。。。。。。。问题又来了,这样乱放元素,我要怎么找我想要的元素啊?当然是靠指针了!

链式存储不再是简单的仅仅存放数据元素信息,它还需要存放指针。存放数据元素信息的叫数据域,存放指针(指针存放下一个元素的地址)的叫指针域,两个域搁一块叫结点,也叫存储映像。所以看到了,这里的每个结点都只有一个指针,这样的n个结点组成的表就叫单链表,这种结构叫单链表的链式存储结构。链表的第一个结点叫头结点,一般数据域为空,最后一个结点指针域为空。

这里注意:

1、头指针不是头结点的指针!!!头指针是指向链表第一个结点的指针,如果有头结点,头指针就指向头结点。而且就算链表是空,头指针也绝对存在!!由于头指针具有标识作用,链表的名字一般也是头指针的名字,所以假如链表名字是L,那么,L->next就是链表的第一个结点!!

2、头结点不是存放第一个元素的结点,头结点数据域一般为空,也可存放链表长度,指针域指向第一个元素,就是为了使第一个元素的删除与插入操作与其他元素保持相同。

3、头指针必须存在,头结点可有可无。

下一章,我们再来讲解相关操作。

                                                                                                                                                      BY   ZJQ

猜你喜欢

转载自blog.csdn.net/qq_41641805/article/details/81328271