回顾:
这节学习单链表
什么是单链表以及单链表与循序表的对比
用代码定义一个单链表
typedef struct LNode//定义一个单链表结点类型
{
ElemType data;//数据域 //每个节点存放一个数据元素
struct LNode* next;//指针域 //指针指向下一个结点
}LNode;
- 增加一个新的结点;在内存中申请一个结点所需要的空间,并用指针p指向这个结点
struct LNode *p =(struct LNode*)malloc(sizeof(struct LNode));
- typedef 关键字--数据类型重命名
定义不带头结点的单链表
typedef struct LNode//定义一个单链表结点类型
{
ElemType data;//数据域 //每个节点存放一个数据元素
struct LNode* next;//指针域 //指针指向下一个结点
}LNode,*LinkList;
//初始化一个空的单链表
bool InitList(LinkList &L)
{
L=NULL;
return true;
}
//判断单链表是否为空
bool Empty(LinkList L)
{
if(L==NULL)
return true;
else
return false;
}
void test()
{
LinkList L;//声明一个指向单链表的指针
//初始化一个空表
InitList(L);
//......
}
带头结点的单链表
typedef struct LNode//定义一个单链表结点类型
{
ElemType data;//数据域 //每个节点存放一个数据元素
struct LNode* next;//指针域 //指针指向下一个结点
}LNode,*LinkList;
//初始化一个单链表(带头结点)
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;
}
void test()
{
LinkList L;//声明一个指向单链表的指针
//初始化一个空表
InitList(L);
//......
}
下节会细讲带头结点和不带头结点的区别