声明
在b站学习然后做的笔记
线性表的链表学习
【数据结构与算法基础(青岛大学-王卓)】 https://www.bilibili.com/video/BV1nJ411V7bd/?p=22&share_source=copy_web&vd_source=5db78eea1ddd8f898d3af5630d27b1b3
链表的分类
单链表的空与非空,定义表示,及组成
头指针L,指向首元节点,首元节点指向头节点。
数据域和指针域 data | next
data的类型由元素类型决定
next存放下一个节点的地址,指针
struct lnode 嵌套的定义,自己定义自己,所以结构名一定要写Lnode。
typedef是定义一个结构类型 名字就叫做Lnode
lnode 和linklist都是类型
lnode *l;等价于=linklist l;
简洁的定义方式
单链表的操作——算法
初始化——有头结点,指针域为空
init_list
L是引用型的变量
从内存中找到这样一块空间,获得这块空间的地址,然后赋值给L。
L->next=null; 表示 L的next域赋为空。
判断链表是否为空 listEmpty(判断语句)
(判断头结点的指针域是否为空就行)
销毁
头指针存储的是头节点的地址
将L赋值给p,则p指向的是头节点 p=L;
L已经指向了a1,p就可以删掉了
然后就可以让指针变量p指向当前的L所指向的节点a1 即p=L
类c语言代码
清空
l的下一个节点地址赋值给p,这p就指向了首元结点a1即p=L->next;
l指向的是头结点 p指向头结点即p=L;
结束,循环条件。
算法
求表长,即表有多少节点
指向首元结点a1
单链表的复习
单链表(带头结点的)取第i个元素
eg
查找(按值查找)
算法步骤
代码
算法2.9 插入
三个难点