(07)王道数据结构-单链表的定义

不带头结点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
typedef struct LNode { //定义单链表结构
int data; //每个节点存放一个数据
struct LNode *next; //指针指向下一个节点
}LNode, *LinkList;
bool InitList(LinkList &L);
bool Empty(LinkList L);

int main(void) {
LinkList L;
InitList(L);
if (Empty(L)) {
printf("链表为空!");
}
return 0;
}

//初始化空的单链表
bool InitList(LinkList &L) {
L = NULL; //空表,暂时没有任何节点
return true;
}

//判断单链表是否为空
bool Empty(LinkList L) {
return (L==NULL);
}

注意事项

(一)不带头结点只要判断头指针是否为空就能判断链表是否为空

(二)初始化链表之前需要将头指针置空

带头结点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode { //定义单链表结构
int data; //每个节点存放一个数据
struct LNode *next; //指针指向下一个节点
}LNode, *LinkList;
bool InitList(LinkList &L);
bool Empty(LinkList L);

int main(void) {
LinkList L;
InitList(L);
if (Empty(L)) {
printf("链表为空!");
}
return 0;
}

//初始化空的单链表
bool InitList(LinkList &L) {
L = (LNode *)malloc(sizeof(LNode)); //分配头结点
if (L == NULL) { //内存不足,分配失败
return false;
}
L->next = NULL; //头结点之后暂时没有节点
return true;
}

//判断单链表是否为空(带头结点)
bool Empty(LinkList L) {
if (L->next == NULL) {
return true;
} else {
return false;
}
}

注意事项

(一)头结点并不存储数据,是为了之后的操作

(二)判断链表是否为空,判断的是头结点之后的节点是否为空


(07)王道数据结构-单链表的定义
https://www.eldpepar.com/iecore/54043/
作者
EldPepar
发布于
2022年7月22日
许可协议