链表的c语言实现(六)

链表的c语言实现(六),第1张

链表的c语言实现(六),第2张

第一,循环链表

和单链表一样,循环链表也是一种链式存储结构。不同的是循环链表最后一个节点的指针指向循环链表的第一个节点或者头节点,这样就形成了一个循环链。
循环链表的操作和单链表基本相同。区别如下:
1。建立循环链表时,其最后一个节点的指针必须指向头节点,而不是像单链表那样设置为NULL。这种情况也用于在最后一个节点后插入新节点。
2。判断是否到达表尾时,就是判断这个节点的链字段的值是否是头节点。当链字段的值等于头的指针时,意味着它已经到达表的末尾。而不是像单链表一样判断链域值是否为空。

双向链表

双向链表实际上是对单向链表的改进。
我们在操作单链表的时候,有时候要操作一个节点的直接前任,就要从表头开始搜索。这受到单个链表节点结构的限制。因为单链表的每个节点只有一个存储直接后继节点地址的链域,那么是否可以定义一个既有存储直接后继节点地址的链域,又有存储直接前任节点地址的链域的双链域节点结构?这就是双向链表。
在双向链表中,一个节点除了数据字段之外,还有两个链字段,其中一个存储直接后继节点的地址,一般称为右链字段;存储直接前趋的节点地址通常称为左链域。在c语言中,双向链表的节点类型可以定义为:
typedef struct node
{
int data;/*数据字段*/
structnode * llink,* rlink/*链域,*llink是左链域指针,*rlink是右链域指针*/
} JD;
当然,也可以把双向链表构造成双向循环链表。
和单向链表一样,双向链表有三个基本操作:查找、插入和删除。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 链表的c语言实现(六)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情