一、两种单链表
首先定义一个单链表结点类型:
#include<stdio.h>typedef struct LNode{
ElemType data;
struct LNode *next; //指针指向下一个节点。
}LNode,*LinkList;
在这个代码中我们使用typedef重命名了struct LNode型为 LNode和*
LinkList。 LNode与*
Linklist本质相同,但一般我们将其做如下代表:
LNode* 强调所引用的为电联表上的结点。
LinkList 则强调所引用的为单链表。
1.不带头节点单链表
//初始化不代头节点的空单链表。
bool InitList(LinkList &L){
L=NULL; //空表,暂时没有任何结点(防止脏数据)。
return true;
}
//主函数
void mine(){
LinkList L; //这里的LinkList是struct LNode的指针,所以L是一个指针型。
InitList(L); //初始化空单链表。
}
2.带头节点的单链表
//初始化代头节点的单链表。
bool InitList(LinkList &L){
L=(LNode*)molloc(sizeof(LNode)); //分配一个头结点。
if(L==NULL) return false; //以防出现内存不足分配失败的状况。
L->next=NULL; //头结点之后暂时没有结点。
}
v