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数据结构与算法—单链表的主要内容,如果未能解决你的问题,请参考以下文章