大话数据结构学习笔记(3)静态链表、循环链表、双向链表

一、静态链表

静态链表:用数组描述的链表

静态链表需要预先定义一个指定长度的数组,这个数组里的元素就对应的是静态链表的结点。这个结点包含两个变量一个是data用来存数据,一个是cur,用来存地址,不过这个地址就不一定像普通链表那样存的是下一个结点的地址了。

下面 是我对静态链表的理解,有什么不对的地方希望各位指正。 我觉得静态链表里的结点的属性可以分为四类:

(1)数组第一个元素:这个结点data为空,cur存的是备用成员(备用链表)的首地址。ps:这个结点就像是一扇门,备用成员只能通过这个结点一个一个进出。

(2)数组最后一个元素:同样,这个结点data为空,cur存的是第一个正式成员的地址。这个结点经常用到,因为插值,删除之类的操作都要先定位才能操作,定位要从第一个正式成员开始找。

(2)正式成员:这些结点在数组第一个元素之后。data记录数据,cur记录的是下一个正式成员的地址。最后一个成员的cur记录的是第一个数组元素的位置,也就是0。(因为正式成员用完了,要再加成员的话只能从备用成员里取)。

(3)备用成员:数组元素里除去上面三类结点的就是备用成员了。第一个备用成员的地址存在数组第一个元素的cur里,备用成员的cur里存的是下一个备用成员的cur。ps:这里不知道最后一个备用成员cur存的是什么?数组最后一个元素的地址?

在对静态链表进行插入操作时,首先要存备用成员里取一个成员出来作为正式成员,然后数组第一个元素的cur改为取出的那个数据成员里的cur。给新增的那个正式成员data赋值,插入时的地址变换类似于普通链表变换。先将插入位置的结点的cur取出来送给新结点的cur,这样新结点就与插入位置的下一个结点连接起来了,再把新结点所在的地址送给插入位置的结点的cur,这样插入位置的结点与新结点也建立连接了。

静态链表进行删除操作时,首先需要指导静态链表把删除的结点(也就是正式成员)送入备用成员的位置是第一个位置,也就是说以后需要插入一个正式成员的话,最先调用的就是这个被删除结点。这样删除操作的逻辑就清楚了:数组第一个元素存的cur(也就是原来备用成员的第一个)送入被删除的正式成员的cur(原来备用成员的第一个变为第二位了),再把数组第一个元素存的cur变为删除的正式成员的地址。注意这里如果被删除的是正式成员的第一个,那么数组最后一个元素的cur也要变了,变成原来正式成员的第二个的地址(删除前面的那个正式成员它自然变成第一个了)。

二、循环链表

将单链表中终端结点的指针端由空指针改为指向头节点,就使整个单链表形成一个环,这种头尾相接的单链表称为循环链表。

 

三、双向链表

双向链表再单链表的每个结点中,再设置一个指向其前驱结点的指针域。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值