1.用代码定义一个单链表
typedef struct LNode{ //定义单链表结点类型
ElemType data; //每个节点存放一个数据元素
struct LNode *next; //指针指向下一个结点
}LNode,*LinkList;
要表示一个单链表时,只需声明一个头指针L,指向单链表的第一个结点。
LNode *L; //声明一个指向单链表第一个结点的指针
或 LinkList L; //声明一个指向单链表第一个结点的指针(代码可读性更强)
强调这是一个单链表 ——使用LinkList
强调这是一个结点 ——使用LNode *
2.不带头结点的单链表
2.1单链表的初始化
typedef struct LNode{ //定义单链表结点类型
int data; //每个节点存放一个数据元素
struct LNode *next; //指针指向下一个结点
}LNode,*LinkList;
bool InitList (LinkList &L){ //初始化一个空的单链表
L=NULL; //空表,暂时还没有任何结点
return true;
}
void test(){
LinkList L; //声明一个指向单链表的指针
InitList (L); //初始化一个空表
...//后续代码
}
2.2判断单链表是否为空
bool Empty (LinkList L){
if(L==NULL)
return true;
else
return false;
3.带头结点的单链表
3.1单链表的初始化
typedef struct LNode{ //定义单链表结点类型
int data; //每个节点存放一个数据元素
struct LNode *next; //指针指向下一个结点
}LNode,*LinkList;
bool InitList (LinkList &L){ //初始化一个空的单链表
LNode *L=(LNode *)malloc(sizeof(LNode));//分配一个头结点
if(L==NULL) //内存不足,分配失败
return false;
L—>next=NULL; //头结点之后暂时还没有节点
return true;
}
void test(){
LinkList L; //声明一个指向单链表的指针
InitList (L); //初始化一个空表
...//后续代码
}
3.2判断单链表是否为空
bool Empty (LinkList L){
if(L->next==NULL)
return true;
else
return false;
}
4.不带头结点VS带头结点
5.知识回顾与重要考点