线性表的链式表示和实现:
1.区分一个概念:头结点 头指针 首元节点
首元节点:就是线性表(这里为什么说是线性表,而不说是链表呢?因为我们先来讲清楚首元节点的概念,不涉及指针)当中第一个节点
头指针:头指针是指向首元节点地址的指针
头结点:头结点并不是我们理解的线性表当中第一个元素的数据加上指向第二个数据地址的指针,而是我们指向第一个节点前面的一个节点。这个节点的数据部分可以是任意的,是不受限制的
理解:我们把这三个概念理解成是一列火车,火车的头就是我们真正意义上的头节点,此时的线性表我们称作链表,第一节车厢的我们称作是首元节点,火车头连接第一节车厢的挂钩我们称作是头指针,火车头的车厢我们可以乘坐顾客,也可以不乘坐顾客,也就是头结点的数值部分是任意的,可以有数据也可以没有数据,
++++++++++++++++++++++++++++++++++++++
2.神么情况下,线性链表表示的是一个空的表格呢?
当头结点的指针为空的时候我们就说此时的链表是空的,这是相对于带头指针的链表进行说明的,不是绝对,是相对的,同时我们要明确,这是一种动态指针的结构,
+++++++++++++++++++++++++++++++++++++
3.线性表以及链表的本质区别是什么?
理解:简单的来说,可以将线性表理解成按照顺序来排队等候的人,他们之间只是有先后的顺序,可能之间是陌生的,而链表呢?我们可以理解成大家玩过的老鹰捉小鸡,之间通过手拉手的形式进行一种特殊的连接,这种连接使得我们不能轻易的进行删除成员以及增加人员的操作,因为我们删除第i个元素,需要放开前一个元素的衣袖,同时要求后面的成员不对我们自己进行拽着,很是不方便的。
++++++++++++++++++++++++++++++++++++++++++
4.在链表中我们通常使用i,j,q来表示元素的位置,p,q,r来表示指针,是对照着来进行表示的,指针的移动,数据元素就要移动,同时在进行讨论链表的时候是带有头结点的,不带头结点的我们会有相应的说明,这一点是需要注意的
++++++++++++++++++++++++++++++++++++++++++
5.存取数据对于线性表和链表也是不相同的概念
顺序存取:是相对于链表来进行说明的,就是说想要存取数据的话,必须一个一个来,不能中间进行来,比如三本书放成一摞,我们想要拿最下面的一本,那么我们就要拿走上面的两本书,同时取书的顺序,是取完最上面的一本,然后取第二本,最后我们将最下面的一本取出来,
选择存取:是相对于线性结构来进行说明的,也是拿取书的例子来进行说明,这次我们放置书的顺序是立起来,一本一本的靠在一起。那么我们在进行取书的操作时,就可以有选择的随意进行取书,因此我们称作是选择存取
++++++++++++++++++++++++++++++++++
6.单个的指针在表示条件的时候就是表示指针不为空即p,如果是!p的话那么就代表指针为空,这点在链表当中是很常见的,要记住
+++++++++++++++++++++++++++++++++++
7.data代表着结点的数值部分,我们叫做data,e=p->data的意思是返回p指向的数值,也是可以写成e=p.data同样也是返回指针所指向的数值。
+++++++++++++++++++++++++++++++++++
8.第i个元素不存在的数据结构语言:return ERROR
9.链表中的指针是非常重要的,可以帮助我们找到元素的位置,
+++++++++++++++++++++++++++++++++++
10.插入以及删除元素移动指针的位置:
插入元素移动指针的顺序:设:插入元素我们叫做e,在第i个元素的位置我们进行插入,首先我们将第(i-1)个元素的指针域放到e元素额指针域,然后将e元素的地址交给(i-1)个元素的指针域
删除元素移动指针的顺序:题设还是前面的题设,我们先找到第i个元素,然后将他的指针域给(i-1)个元素的指针域,同时要释放指针free(q)
tips:插入的先后顺序是不能进行改变的,不然就会丢失元素
+++++++++++++++++++++++++++++++++++++++++++++
今天的分享就要结束了,感谢!!!