408数据结构与算法—单链表

Posted 王同学要努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了408数据结构与算法—单链表相关的知识,希望对你有一定的参考价值。

【408数据结构与算法】—单链表(五)

一、什么是单链表

  • 单链表:每个结点只有一个指针域
  • 双链表:每个结点有两个指针域
  • 循环链表:链表结点首尾相接

二、带头结点的单链表

单链表是由表头唯一确定的,因此单链表可以用头指针的名字来命名若头指针名是L,则链表称为表L

🎊单链表的存储结构



定义链表L:LinkList;
定义结点指针p:LNode *p<=>LinkList p;

例如:存储学生学号,姓名,成绩的单链表结点类型定义如下:

typedef Struct student
	char num[8];
	char name[8];
	int score;
	struct  student *next;
Lnode,*LinkList;


为了统一链表的操作,通常这样定义:

typedef Struct student
	char num[8];
	char name[8];
	int score;
ElemType;

typedef struct Lnode
	ElemType data;
	struct Lnode *next;
	struct Lnode *next;
Lnode,*LinkList

三、单链表的基本操作

1️⃣单链表的初始化

算法的步骤:

  • 生成新结点作为头结点,用头指针L指向头结点

  • 将头结点的指针域置空

补充算法1:判断链表是否为空

空表:链表中无元素,称为空链表(头指针和头结点仍然存在)

补充算法2:单链表的销毁:链表销毁后不存在
算法思路:从头指针开始,依次释放所有结点

销毁单链表的算法

补充算法3:单链表的清空:链表仍然存在,但链表中无元素,称为空链表(头指针和头结点仍然存在)
算法思路:依次释放所有的结点,并将头结点指针域设置为空


补充算法4:求单链表的表长

算法思路:从首元结点开始,依次计数所有结点



以上是关于408数据结构与算法—单链表的主要内容,如果未能解决你的问题,请参考以下文章

408数据结构与算法—单链表

408数据结构与算法—单链表的基本操作

408数据结构与算法—单链表的基本操作

408数据结构与算法—单链表的基本操作

(王道408考研数据结构)第二章线性表-第三节1:单链表的定义及其操作(插入和删除,建立之尾插和头插)

(王道408考研数据结构)第二章线性表-第三节3:循环单链表和循环双链表