【考研数据结构——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。

相关推荐
JasmineX-12 小时前
数据结构(笔记)——双向链表
c语言·数据结构·笔记·链表
爱编码的小八嘎4 小时前
C语言完美演绎9-7
c语言
澈2075 小时前
深耕进阶 Day1:C 与 C++ 核心差异 + C++ 入门基石
c语言·开发语言·c++
love530love5 小时前
Windows Podman Machine 虚拟硬盘迁移完整指南:从 C 盘到非系统盘
c语言·人工智能·windows·podman
嘻嘻哈哈樱桃5 小时前
牛客经典101题题解集--动态规划
java·数据结构·python·算法·职场和发展·动态规划
Felven5 小时前
C. Need More Arrays
c语言·开发语言
love530love5 小时前
Podman Machine 虚拟硬盘迁移实战二:用 Junction 把 vhdx 从 C 盘搬到其他盘
c语言·开发语言·人工智能·windows·wsl·podman·podman machine
电科一班林耿超5 小时前
第 16 课:动态规划专题(二)—— 子序列与子数组问题:面试最高频的 DP 题型
数据结构·算法·动态规划
代码中介商5 小时前
C语言预处理指令深度解析:从宏定义到条件编译
c语言·开发语言
hnjzsyjyj5 小时前
洛谷 B3622:枚举子集(递归实现指数型枚举)← DFS
数据结构·dfs