数据结构5:线性表5-循环链表

文章目录

简介

上一节教程中,我们介绍了最基本的链表结构,如图1所示。从它的结构中可以看出它是一个单向链表,只能沿着一个方向从前到后的遍历。此时存在一个问题,如果我们已经遍历到了Data3的位置,现在想要去读取Data0中的数据,那么我们只能从头开始,这样是很麻烦的。针对这种情况,循环链表被设计了出来,如图所示。

从循环链表的结构图中,可以看出循环链表的最末端节点指针指向了头结点,而不是NULL,此时可以直接从Data3处开始去查找Data0,而不用重新开始。

如果循环链表中有元素则其结构如图2所示,如果没有任何元素则头结点的指针指向头结点,如图3所示。除了末端指针的指向变化外,循环链表与单向链表并没有太大的差别。

函数接口

下面对循环链表的API作用及其实现进行介绍,在看这部分前,需要将单向链表的API作用及其实现理解清楚,否则不易理解循环链表的API。它与单向链表的不同之处主要在创建函数,其他函数没有差别。

c 复制代码
List* ListCreate()
{
	//新建一个表头的指针,并将分配空间
	List *temp = (List *)malloc(sizeof(List));
	//将链表表头的后继设置为NULL,数据设置0(此参数无用)
	temp->head.next = &temp->head;
	temp->head.data = 0;
	//将链表的长度,设置为0
	temp->length = 0;
	//返回
	return temp;
}
相关推荐
code斗8 小时前
Java数据结构:堆详解
java·开发语言·数据结构
Elaine33610 小时前
数据结构与算法-程序
数据结构·python·算法·计算机基础·编程基础
Logic10111 小时前
C语言/数据结构位运算题解:异或XOR找出游戏速通中的“独特初始能量值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Bruce_Liuxiaowei14 小时前
Python 字典默认值完全指南:从 KeyError 到 defaultdict
开发语言·数据结构·python·字典
All for pursuit.17 小时前
【二叉树-10】114.二叉树展开为链表
数据结构·c++·算法·leetcode·链表
心中有你021420 小时前
C语言埃氏筛法(素数筛选)
c语言·数据结构·算法
释厄6231 天前
多黑洞具现论·物理/生物/金融三域显化·虚拟宇宙黑洞·奇点=0 圆圈
开发语言·数据结构·人工智能·程序人生·安全威胁分析
库玛西1 天前
攻克 408 数据结构:图论基石深度拆解(数学极值推演 + 存储内存剖析 + BFS/DFS 双核模板)
数据结构·算法·深度优先·广度优先·图搜索算法
m0_547486667 天前
《数据结构教程》全套 PPT课件2026
数据结构
tryxr7 天前
矩阵的几种基础变换
java·数据结构·算法·矩阵