【考研数据结构——C语言描述】第二章 线性表链式存储结构上的基本操作——单链表的初始化

25计算机考研,数据结构知识点整理(内容借鉴了王道408+数据结构教材),还会不断完善所整理的内容,后续的内容也会不断更新(可以关注),若有错误和不足欢迎各位朋友指出!

一.单链表的初始化

步骤:

(1)生成新结点作为头结点,用头指针L指向头结点

(2)将头结点的指针域置空,(空表)->即构造一个空表

带头结点和不带头结点的单链表的初始化操作是不同的。带头结点的单链表初始化时,需要创建一个头结点,并让头指针指向头结点,头结点的next域初始化为NULL。

cpp 复制代码
InitList(LinkList *L)
{ 
  *L=(LinkList)malloc(sizeof(Node));  //建立头结点
  (*L)->next=NULL; //建立空的单链表L即头结点后暂未有其他元素结点
}

不带头结点的单链表初始化时,只需将头指针初始化为NULL。

cpp 复制代码
InitList(LinkList *L)
{
  L=NULL;  //不带头结点的单链表的初始化
}

L是指向单链表的头结点的指针,用来接收主程序中待初始化单链表的头指针变量的地址。*L相当于主程序中待初始化单链表的头指针变量。

注意:
设p为指向链表结点的结构体指针,则*p表示结点本身,因此可用 p->data或(*p).data访问*p这个结点的数据域,二者完全等价。成员运算符(.)左边是一个普通的结构体变量,而指向运算符(->)左边是一个结构体指针。通过(*p).next 可以得到指向下一个结点的指针,因此(*(*p).next).data就是下一个结点中存放的数据,或者直接用 p->next->data。

相关推荐
Wangshanjie_989 分钟前
【C语言】-递归
c语言
记得早睡~27 分钟前
leetcode73-矩阵置零
数据结构·leetcode·矩阵
a.3021 小时前
C++ 时间处理指南:深入剖析<ctime>库
数据结构·c++·算法
CodeWithMe4 小时前
【C/C++】高效的位操作
c语言·c++
学习噢学个屁4 小时前
基于STM32物联网智能鱼缸智能家居系统
c语言·stm32·单片机·嵌入式硬件·物联网·智能家居
圈圈编码7 小时前
LeetCode Hot100刷题——合并两个有序链表
java·数据结构·算法·leetcode·链表
啊我不会诶8 小时前
篮球杯软件赛国赛C/C++ 大学 B 组补题
c语言·c++
jingfeng5148 小时前
详解快排的四种方式
数据结构·算法·排序算法
蒙奇D索大10 小时前
【11408学习记录】考研数学攻坚:行列式本质、性质与计算全突破
笔记·学习·线性代数·考研·机器学习·改行学it