1.单向链表的定义
单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列表中的下一个结点;
2.单向链表(不带头结点)的图解
data称为数据域,next为指针域。其中头指针head为NULL时,单向链表为空,否则为非空表。同时链表中的尾结点的next为空
3.单向链表(不带头结点)的实现详细介绍
以下是详细代码:
```c
#include<stdio.h>
#include<malloc.h>
#define ElemType int
typedef struct LinkNode{
ElemType data;
struct LinkNode *pNext;
}LinkNode;
LinkNode *pHead = NULL; //单向链表的头指针
LinkNode *pEnd = NULL; //单向链表的尾指针
//创建单向链表节点
void CreateNode(LinkNode *pNode)
{
if(NULL != pNode)
{
printf("请输入结点数据:");
scanf("%d", &pNode->data);
}
pNode->pNext = NULL;
}
//创建单向链表(不带头节点)
//链表中头指针是必需的,但是头结点可有可无
void CreateLinkList()
{
if(NULL == pHead) //判断单向链表是否存在,不存在的话就创建单向链表
{
LinkNode *pNew = malloc(sizeof(LinkNode));
CreateNode(pNew);
pHead = pNew; //将头、尾指针都指向新创建的结点
pEnd = pNew;
printf("创建链表成功!\n");
}
}
//添加结点,结点后面依次按顺序添加,注意与后面的插入结点区分开
void AddNode()
{
if(NULL != pHead) //单向链表存在则添加节点
{
LinkNode *pNew = malloc(sizeof(LinkNode));
CreateNode(pNew);
pEnd->pNext = pNew;
pEnd = pNew;