//单链表的定义
//(结点)
struct LNode{ //定义单链表结点类型
ElmeType data; //每个结点存放一个数据元素 (数据域)
struct LNode *next; //指针指向下一个结点 (指针域)
};
//增加一个新的结点,在内存中申请一个节点所需的空间
// 并用指针p指向这个节点
struct LNode *p = (struct LNode *) malloc(sizeof(struct LNode));
不带头结点的单链表
#include <bits/stdc++.h>
using namespace std;
//不带头结点的单链表
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
//初始化一个空的单链表
bool InitList(LinkList & L)
{
L = NULL; //空表,暂时还没有任何结点
return true;
}
void test()
{
//(注意此处并没有创建一个结点)
LinkList L; //声明一个指向单链表的指针
//初始化一个空表
InitList(L);
//...后续代码...
}
//判断单链表是否为空
bool Empty(LinkList L)
{
if(L == NULL)
{
return true;
}
else
{
return false;
}
}
单独分析一下这个:
//不带头结点的单链表
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
带头结点的单链表:
#include <bits/stdc++.h>
using namespace std;
//不带头结点的单链表
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;
}
void test()
{
LinkList L; //声明一个指向单链表的指针
//初始化一个空表
InitList(L);
//...后续代码...
}
//判断单链表是否为空(带头结点)
bool Empty(LinkList L)
{
if(L->next == NULL)
{
return true;
}
else return false;
}