-
2020-07-21 18:24:28
由于考研需求,又乖乖滚回来捧起数据结构了,一年没碰书,忘得都差不多了,还得捡回来,哭死了。
进入正题,为何头指针为head的带头结点的单链表判空条件head->next==null?其实一开始这里也是没啥问题的,只是突然产生了疑问点——head为头指针,储存了头结点的地址,按照我残余的一点指针知识,我总感觉不对,head只是个地址,咋可以直接head->next使用呢?其实哈,这里又产生了和我之前学结构体这个知识点一样的纠结点(嘿嘿,其实这里也算是结构体类型)——结构体
总之和结构体类型一样这个指向符号“->”,这里是有特殊规定的,比如你定义个结构体类型
struct student { int age; float score; char name[100]; }*pstu,stu;
你用stu.age,pstu->age或者(*pstu).age都是一样可以取到成员变量的,这里的pstu它也是个地址,但是c语言就是这么规定了利用pstu->age可以取到其结构体内部成员变量(记住就好)所以不难理解为啥head这个指向头结点的指针为啥用head->next就能取到头结点结构体中的next成员变量了。
如此便恍然大悟,头结点中next成员变量存储的是下一个结点的地址,若next域中为null,所以除了头结点外,链表中无其他结点,于是单链表判空。
更多相关内容 -
彻底搞清链表的判空条件
2021-02-25 13:09:26分析:带有头节点的链表若为空,只需要整条链表只剩一个头节点,这是和不带头节点的链表的一个很大的区别(不带头结点的链表若要为空,整个链表不能存在一个结点),怎样使带头节点的链表只剩一个头节点呢?...声明:以下头指针都是指向链表的第一个结点(有头节点就指向头结点,没有头节点就指向第一个存储数据的结点),并且默认一下头结点的数据域不存储数据信息
1、单链表
- 无头结点
分析:带有头节点的链表若为空,只需要整条链表只剩一个头节点,这是和不带头节点的链表的一个很大的区别(不带头结点的链表若要为空,整个链表不能存在一个结点),怎样使带头节点的链表只剩一个头节点呢?只需要第一个存储数据的节点不存在即可,即头节点的后继结点不存在即可,所以只需要头节点的next指针域不存在即可(实质上使指向NULL),所以带头点的单链表的判空条件为 head->next=NULL
- 有头节点
分析:若要不带头结点的链表为空,需要链表中所有结点都不能存在,怎样使所有节点都不存在呢?只需要第一个结点不存在即可,所有只需要头指针head=NULL即可
2、双链表
- 带有头节点
判空条件和带头节点的单链表一样 - 不带头结点
判空条件和单链表一样,分析方法也一样
3、循环单链表 - 带头结点
分析:链表为空头节点仍存在,但是同时要满足循环,所以判空条件为head->next=head;
- 无头结点
和单链表分析相同直接head=NULL即可
4、循环双链表 - 带头节点
分析:循环双链表的判空条件有很多,如head->next=head或head->next=head->prior或head->prior=head或head->next=head&&head->prior=head
5、无头节点
和前面的单链表分析一样,直接head=NULL; - 无头结点
-
各类链表判空条件
2022-01-02 20:35:48——> 转自原博客 1.单链表 带头结点: 分析: 带有头节点的链表若为空,只需要整条链表只剩一个头节点 ...所以 带头点的单链表的判空条件为 head->next=NULL 不带头结点: 分析: 若要不带头结点的链表为空,——> 转自原博客
1.单链表
带头结点:
分析:
带有头节点的链表若为空,只需要整条链表只剩一个头节点
[这是和不带头节点的链表的一个很大的区别(不带头结点的链表若要为空,整个链表不能存在一个结点)],
怎样使带头节点的链表只剩一个头节点呢?
只需要第一个存储数据的节点不存在即可,即头节点的后继结点不存在即可
所以只需要头节点的next指针域不存在即可(实质上使指向NULL)
所以 带头点的单链表的判空条件为 head->next=NULL不带头结点:
分析:
若要不带头结点的链表为空,需要链表中所有结点都不能存在
怎样使所有节点都不存在呢?只需要第一个结点不存在即可
所以 不带头指针的单链表判空条件 head=NULL2.双链表
带头结点:
带头结点的双链表的判空条件:head->next = NULL不带头结点:
不带头结点的双链表的判空条件:head = NULL3、循环单链表
带头结点:
分析:
链表为空头节点仍存在,但是同时要满足循环
所以判空条件为head->next=head;不带头结点:
判空条件为head=NULL;
4.循环双链表
带头结点:
分析:
循环双链表的判空条件有很多,
如
head->next=head
head->next=head->prior
head->prior=head
head->next=head&&head->prior=head不带头结点:
head = NULL
-
不带头结点的单链表的判空及初始化
2021-03-12 09:55:45#include<stdio.h> #define ElemType int typedef struct LNode{ //定义单链表结点类型 ElemType data; //每个结点存放一个数据元素 struct LNode* next;... //空表,暂时还没有存放任何结点(防止脏数据)#include<stdio.h> #define ElemType int typedef struct LNode{ //定义单链表结点类型 ElemType data; //每个结点存放一个数据元素 struct LNode* next; //指针指向下一个结点 }LNode,*LinkList; //初始化一个空白的单链表 bool InitList(LinkList &L) { L=NULL; //空表,暂时还没有存放任何结点(防止脏数据) return true; } bool Empty(LinkList L) //判断单链表是否为空 { if(L==NULL)return true; else return false; } int main() { LinkList L; //声明一个指向单链表的指针 //初始化一个空表 InitList(L); if(Empty(L))printf("此单链表为空!\n"); else printf("此单链表不空!\n"); return 0; }
-
单链表为空的判定条件
2019-06-03 16:05:43带头结点的单链表head为空的判定条件是()。 A.head==NULL B.head->next==NULL C.head->next==head D.head!=NULL 正确答案:B 解析:若单链表带头结点,那么判定它为空的条件是head->next==NULL;若... -
线性表文档之循环单链表
2022-04-05 21:58:51线性表文档之循环单链表 -
链表——循环单链表,循环双链表及静态链表
2021-04-18 14:44:40文章目录循环链表循环单链表循环双链表静态链表说明 循环链表 循环链表一般包括循环单链表和循环双链表,如下图所示: 循环单链表 循环单链表与单链表的区别在于,表中最后一个结点的指针不是NULL,而改为... -
判断带头结点的单循环链表为空表的条件
2021-03-28 16:32:16判断带头结点的单循环链表为空表的条件 判断空表的条件是L->next是否等于L; 在循环中判断当前结点是否是尾结点的条件是p->next是否等于L!即当前结点的指针域是否指向头结点。 -
循环单链表
2021-11-28 16:27:28以带头结点的循环单链表为例: 普通的单链表的尾指针指向的是NULL; 而循环单链表的尾指针指向的是头节点; 这就要求循环单链表在定义的时候...判空条件,L->next==L; 判断p是否为尾节点的条件:p->next==L ... -
数据结构之循环单链表(学习笔记)
2020-07-15 17:43:20二、带头结点的循环链表的判空条件 p->next 不等于头结点 在设计循环单链表时,仅设计指向终端结点的尾指针可以提高效率,此时查找开始结点和终端结点就很方便了,下面以此来实现循环单链表 三、循环单链表... -
第二章——单链表和循环单链表
2021-09-13 19:56:08//定义单链表结点类型 单链表和循环单链表基本运算的实现 这里会提供单链表和循环单链表基本运算的实现及代码 建立单链表——头插法 和名字一样,每次将遍历到的新元素插入到头结点之后,最后得到的数据结点的顺序与... -
单链表head为空的判断条件
2019-06-23 12:22:001、带头结点单链表:head->next==NULL 2、带头结点循环链表:head->next==head 3、不带头结点单链表:head==NULL 转载于:https://www.cnblogs.com/claudia529/p/11072341.html... -
C语言 循环单链表的基本操作与实现
2020-03-31 22:09:27再循环单链表中,表尾节点 d 的Next指向L,所以表中没有NULL的节点,因此循环单链表判空条件不是头节点的指针是否为空,而是头节点是否等于头节点. 实现 结构体 typedef struct SqNode { int data; struct S... -
循环链表—循环双链表/循环单链表
2020-08-16 12:36:03循环单/双链表,创建、初始化、尾插、头插、遍历、插入、删除、判空 部分函数采用重载(此处为c++代码) #include <iostream> #include <stdlib.h> #include <stdbool.h> using namespace std; ... -
复习之数据结构_带头结点的循环单链表
2021-02-26 11:52:13带头结点的循环单链表循环单链表简单理解头文件(.h)代码文件(.cpp)代码测试参考资料 循环单链表简单理解 前面复习了单链表,单链表的尾结点的特点是next域为NULL(空);而我们今天要复习的循环单链表,和单链表基本... -
带头结点的单链表head为空的判定条件---腾讯2014研发笔试卷
2016-07-13 21:17:21带头结点的单链表head为空的判定条件( ) 正确答案: B 你的答案: C (错误) head==NULL head->next==NULL head->next==head head!=NULL 添加笔记 收藏 纠错 ... -
【数据结构】-循环链表(单链表)
2020-07-20 20:29:49基本操作4.1 初始化循环单链表4.2 判空4.3 判断表尾结点4.4 按位查找4.5 指定结点后插4.6 创建循环单链表4.7 遍历4.10 main函数5.小结 1.头文件及类型定义 #include<stdio.h> #include<stdlib.h> #... -
王道数据结构实践代码----循环单链表的实现(C语言版)
2021-08-30 19:29:25王道数据结构实践代码----循环单链表的实现(C语言版) 前言 日期:2021年8月30日 书籍:王道2021年数据结构考研复习指导 代码内容:实现循环单链表的实现,包括初始化,插入新元素,删除新元素,输出,查询 代码... -
判断链表为空的三种情况
2021-07-05 20:38:35(1)带头结点单链表:head->next==NULL; (2)带头结点循环链表:head->next==head; (3)不带头结点单链表:head==NULL; -
链表部分之循环单链表
2020-07-20 13:17:51判空条件:head=null; 添加元素:若为第一个元素,head=newNode;head.next=head;//指向自己 temp=head; 若不是第一个元素: temp.next=newNode; newNode.next=head; temp=newNode; 约瑟夫问题:简化说法,有K个小孩,... -
C语言数据结构之判断循环链表空与满
2021-05-21 17:38:36C语言数据结构之判断循环链表空与满前言:何时队列为空?何时为满?由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时头尾指针均相等。因此,我们无法通过front=rear来判断队列“空”... -
单链表&循环链表&双向链表的不同
2022-01-14 10:27:53①判空条件为:p==plist或者p->next==NULL; ②判断结尾不同:循环链表的结尾又回到了头(是一个圈圈一样的循环):p==plist;而单链表的结尾时NULL:p==NULL。 ③循环链表可以从一个结点到达任意节点,而单链表... -
*循环单链表[带头结点]
2016-03-04 03:00:00结构(带头结点) ...判空:(head->next==head) 初始化:主要注意链表为空的条件,执行语句:L->next=L; void InitList(List &L)/*初始化空表*/ { L=(List)malloc(sizeof(Node))... -
Python数据结构与算法—第三大节课—第3-5课时:单链表的判空、长度、遍历与尾部添加结点的代码实现——day...
2020-09-10 02:51:34Python数据结构与算法:第3-5课时:单链表的判空、长度、遍历与尾部添加结点的代码实现 判断链表是否为空: class SingleLinkList(object): """单链表""" def __init__(self): self._head = None def is_... -
问题:链表,栈,队列(循环队列)判定满或者空的条件?急求
2019-07-01 20:29:561、为空条件 单链表:头结点指针域next == NULL 静态链表:数组最后一个元素值为0 循环链表:头结点的指针域指向它本身(循环查找时以p->next !=头结点作为遍历结束条件) 栈 顺序存储时:top == -1 链式存储时:... -
线性表(顺序表,线性链表,循环单链表,双向链表)
2020-01-20 20:45:54线性表中的元素的个数n定义为线性表的长度,当n=0时为空表。 当n>0时,线性表的逻辑结构如下图所示: 逻辑特征: (1). 若至少含有一个元素,则只有唯一的一个起始元素; (2). 若至少含有一个... -
数据结构之线性表(五)——单链表(2 初始化,判断空表,销毁,清空,求表长)
2021-05-23 01:22:491.单链表(带头结点)的初始化即,构造一个空表,如下图, 算法步骤:1.生成新结点作头结点,用头指针L指向头结点。2.将头指针的指针域置空。算法描述:Status InitList_L(LinkList& L){L = new LNode; //在C语言... -
单链表和双链表、循环链表
2020-10-10 13:59:411、链表(Linked List)介绍 1.1、内存结构 内存上来看:链表存储空间不连续(不像数组) 假设有一个线性表为(a1,a2,a3,a4,a5,...下图的单链表是带有头结点的单链表,头结点的作用是方便单链表的特殊操作,简化代