单链表是由表头唯一确定的,因此单链表可以用头指针的名字来命名若头指针名是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
算法的步骤:
生成新结点作为头结点,用头指针L指向头结点
将头结点的指针域置空
补充算法1:判断链表是否为空
空表:链表中无元素,称为空链表(头指针和头结点仍然存在)
补充算法2:单链表的销毁:链表销毁后不存在
算法思路:从头指针开始,依次释放所有结点
销毁单链表的算法
补充算法3:单链表的清空:链表仍然存在,但链表中无元素,称为空链表(头指针和头结点仍然存在)
算法思路:依次释放所有的结点,并将头结点指针域设置为空
补充算法4:求单链表的表长
算法思路:从首元结点开始,依次计数所有结点