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

简介: 单链表:每个结点只有一个指针域

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

一、什么是单链表

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

2345_image_file_copy_125.jpg

二、带头结点的单链表

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

2345_image_file_copy_126.jpg

2345_image_file_copy_127.jpg

🎊单链表的存储结构

2345_image_file_copy_128.jpg

2345_image_file_copy_129.jpg

2345_image_file_copy_130.jpg

定义链表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

2345_image_file_copy_132.jpg

三、单链表的基本操作

1️⃣单链表的初始化

算法的步骤:

  • 生成新结点作为头结点,用头指针L指向头结点
  • 将头结点的指针域置空

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

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

2345_image_file_copy_134.jpg

补充算法2:单链表的销毁:链表销毁后不存在

算法思路:从头指针开始,依次释放所有结点

2345_image_file_copy_135.jpg

销毁单链表的算法

2345_image_file_copy_136.jpg

补充算法3:单链表的清空:链表仍然存在,但链表中无元素,称为空链表(头指针和头结点仍然存在)

算法思路:依次释放所有的结点,并将头结点指针域设置为空

2345_image_file_copy_137.jpg

2345_image_file_copy_138.jpg

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

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

2345_image_file_copy_139.jpg

2345_image_file_copy_140.jpg

2345_image_file_copy_141.jpg

相关文章
|
4月前
【数据结构】单链表(长期维护)(1)
【数据结构】单链表(长期维护)(1)
|
2月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
48 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
2月前
|
存储
[数据结构] -- 单链表
[数据结构] -- 单链表
28 1
|
3月前
|
存储 Java
java数据结构,线性表链式存储(单链表)的实现
文章讲解了单链表的基本概念和Java实现,包括头指针、尾节点和节点结构。提供了实现代码,包括数据结构、接口定义和具体实现类。通过测试代码演示了单链表的基本操作,如添加、删除、更新和查找元素,并总结了操作的时间复杂度。
java数据结构,线性表链式存储(单链表)的实现
|
2月前
|
存储
【数据结构】——单链表实现
【数据结构】——单链表实现
|
2月前
|
存储
数据结构2——单链表
数据结构2——单链表
39 1
|
2月前
|
存储
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(一)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
|
2月前
|
存储
数据结构(单链表)
数据结构(单链表)
23 0
|
2月前
|
存储
数据结构--单链表
数据结构--单链表
|
3月前
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
702 6