单链表的定义需要注意,代码实现部分很多是在C语言环境下编译不了的。
在具体C/C++实现时需要注意。
定义节点:
typedef struct LNode
{
ElemType data; //数据域
struct LNode *next; //指向下一个节点的指针
}LNode,*LinkList;
上述结点定义的代码与下面的写法含义相同:
struct LNode
{
ElemType data; //数据域
struct LNode *next; //指向下一个节点的指针
}
typedef struct LNode LNode; //
tyopedef struct LNode *LinkLIst; //结构体LNode类型的指针
要表示一个单链表时,只需要声明一个头指针L即可:
LNode *L; //或者 LinkList L;单链表的初始化
单链表有带头结点和不带头结点的两种,都可以实现。但是带头结点的单链表在实现某些操作如插入,删除,查找时比较简单。不带头结点的单链表代码较为复杂。
不带头结点bool InitList(LinkList &L)
{
L=NULL;
return true;
}
void test()
{
LinkList L;
//LNode *L;
InitList(L);
//。。。。
}
带头结点
链表(单、双、静态、循环)的头结点的数据域一般不存放数据,也可以存放链表的某些信息如长度等。
bool InitList(LinkList &L)
{
L=(LNode*)malloc(sizeof(LNode));
if(L==NULL) //假如内存不足,分配失败
return false;
L->next=NULL;
return true;
}



