线性表—单向循环链表

开始没看单向循环链表,感觉应该很简单,但实际上有几个概念不是很清楚:

头结点,头指针,尾指针,尾节点???

【个人理解】:头结点就是一个链表中实际存储数据的那个节点的前一个节点,这个节点不存储数据,只有一个指针指向第一个实际存储数据的节点(这个有效节点专业术语叫:首元素),这个节点就是头节点,指向头结点的指针就是头指针,至于尾指针,就是单纯的一个指针了,他没有一个节点作依托,孤零零的一个指针。尾指针指向最后一个存储数据的节点(尾指针内部存储的就是这个节点的地址),至于尾节点,还没有见到过。

上面的概念配图解释一下:

有尾指针的单向循环链表的情况:

有头结点无尾指针的情况:

时间: 2024-08-02 09:09:13

线性表—单向循环链表的相关文章

数据结构与算法(四)-线性表之循环链表

前言:前面几篇介绍了线性表的顺序和链式存储结构,其中链式存储结构为单向链表(即一个方向的有限长度.不循环的链表),对于单链表,由于每个节点只存储了向后的指针,到了尾部标识就停止了向后链的操作.也就是说只能向后走,如果走过了,就回不去了,还得重头开始遍历,所以就衍生出了循环链表 一.简介 定义:将单链表中中断结点的指针端有空指针改为指向头结点,就使整个单链表形成一个环,这种头尾详解的单链表称为单循环链表,简称循环链表: 特性: 若链表为空,则头结点的next结点还是指向其本身,即head.next

线性表-双向循环链表

1.双向循环链表 双向链表是在单链表的每个结点中,再设置一个纸箱其前驱结点的指针域.双向链表可以有效的提高算法的时间性能,用空间换取时间. typedef struct Node { ElemType data; struct Node* prior; //直接前驱指针 struct Node* next; //直接后继指针 }Node, * CLinkList; 2.双向链表的插入操作:(注意顺序) s->next=p; s->prior=p->prior; p->prior-&

读书笔记:线性表-单向链表

链表(linklist) 单项链表可以说是数据结构里面最简单的部分,也是十分重要的部分,数据结构后面的学习中 比如说:栈,队列,树, 图 都要使用这种数据结构来表示. 不多说,进入我对链表的理解部分. 简介: 链表是一种数据结构,链表中,数据对象实例的每一个元素都用一个单元或节点来描述.每一个节点中都包含着它的数据[数据部分]和相关节点的位置信息[链接部分],我们称连通两个节点的部分为链(link)或指针(pointer).链表的第一个节点称为头节点(head),最后一个节点为尾节点.头节点没有

【 数据结构(C语言)】线性表——双向循环链表

/** ** 2017.11.2 ** Ahthor:799 ** 循环双向链表 ** ***/ #include <bits/stdc++.h> using namespace std; #define ElemType int #define Status int #define ERROR -1 #define OK 1 typedef struct LNode { ElemType data; struct LNode *prev; struct LNode *next; }; typ

数据结构与算法 1 :基本概念,线性表顺序结构,线性表链式结构,单向循环链表

[本文谢绝转载] <大纲> 数据结构: 起源: 基本概念 数据结构指数据对象中数据元素之间的关系  逻辑结构 物理结构 数据的运算 算法概念: 概念 算法和数据结构区别 算法特性 算法效率的度量 大O表示法 时间复杂度案例 空间复杂度 时间换空间案例 1)线性表: 线性表初步认识: 线性表顺序结构案例 线性表顺序结构案例,单文件版 线性表的优缺点 企业级线性表链式存储案例:C语言实现 企业级线性表链式存储案例:C语言实现 单文件版 企业级线性表链式存储案例,我的练习  线性表链式存储优点缺点

C++ 模版类的单向循环链式线性表

基于之前做的单向链式线性表http://blog.csdn.net/shiwazone/article/details/47000191,改进下,实现了循环链表,相对应单向链表,循环链表将尾节点的指针域指向头节点,加入循环,可以让我们在查找某一个index的节点时,可以先判断一下位置和链表长度的关系,如果index处于链表的前半部分,我们可以从头节点遍历查找,如果处于后半部分,我们可以从尾节点往前查找,当然此时我们需要使用双向链表.双向链表的操作,下次给出吧!循环链表给了我们一种思路,如果我们在

线性表-&gt;链式存储-&gt;循环链表

文字描述 循环链表是另一种形式的链式存储结构.它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环.由此,从表中任一结点出发均可找到表中其他结点. 示意图 算法分析 插入.删除.查找等同单链表. 代码实现 1 // 2 // Created by lady on 19-1-27. 3 // 4 5 #include <stdio.h> 6 #include <stdlib.h> 7 8 //线性表的单向循环链表存储结构 9 typedef struct ElemType

线性表.04.链式存储结构(双向循环链表)

以下是用双向循环链表实现的线性表 #include <stdio.h> #include <stdlib.h> #include <time.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int ElemType;//ElemType这里假设为int,可以根据需要进行更改 typedef int Status;//Status是函数的类型,其值是函数结果状态代码,如OK等 t

小猪的数据结构辅助教程——2.7 线性表中的双向循环链表

小猪的数据结构辅助教程--2.7 线性表中的双向循环链表 标签(空格分隔): 数据结构 本节学习路线图与学习要点 学习要点: 1.了解引入双向循环链表的原因 2.熟悉双向循环链表的特点以及存储结构 3.掌握双向循环链表的一些基本操作的实现逻辑 4.掌握逆序输出双向循环链表元素逻辑 1.双向循环链表的引入 2.双向循环链表的存储结构 双向循环链表的特点: 上面也说了,空间换时间,比起循环链表只是多了一个指向前驱的指针 特点的话: 判断空表:L ->next = L -> prior = L; 存