首先是链表的定义
typedef int ElemType;//指定结点中元素的类型
typedef struct LNode LNode;//修改类型别名让代码更简洁
typedef struct LNode *LinkList;
struct LNode //定义一个结点类
{
ElemType data;
struct LNode*next;
};
如果上面的定义还不够简洁的话
我们可以采用下面的这种方式
typedef int ElemType;
typedef struct LNode
{
ElemType data;//每个结点存放一个数据元素
struct LNode *next;//指针指向下一个结点
}LNode,*LinkList;
不带头结点的单链表
bool InitList(LinkList &L)
{
L = NULL;//将头指针指向空,此时是一个空表
return true;
}
//判断单链表是否为空
bool Empty(LinkList L)
{
return(L == NULL);
}
void test()
{
LinkList L;//声明一个指向单链表的指针
InitList(L);
}
带头结点的单链表
//初始化一个空链表,,带头结点的情况
bool InitList(LinkList &L)
{
L = ( LNode *) malloc ( sizeof ( LNode ) );//分配一个头结点
if (L == NULL)
return false;//内存不足 分配失败
L->next = NULL;//头结点之后暂时还没有新结点
return true;
}
//判断单链表是否为空
bool Empty(LinkList L)
{
return (L->next == NULL)
}



