单链表_类c语言描述

本文介绍了单链表的概念,详细阐述了头指针、头结点、首元结点之间的区别,并列举了单链表的一系列基本操作,包括初始化、取值、查找、插入、删除、创建以及销毁等操作,涵盖了单链表的主要操作方法和思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、单链表的定义

  1. 由n个结点(ai(1<=i<=n)的存储映像)链结成一个链表, 即为线性表(a1,a2,…,an)的链式存储结构。又由于链表中的每个结点只包含一个指针域,故又称为线性链表单链表
  2. 单链表包括两个域:数据域【存储数据元素信息的域】和指针域【存储直接后继存储位置的域】,其中指针域中存储的信息称作指针或链。
  3. 图示
    在这里插入图片描述

2、头指针、头结点、首元结点的区别

1)三者的定义:

  1. 头指针是指向链表中第一个结点的指针。
  2. 头结点是在首元结点之前附设的一个结点,其指针域指向首元结点,头结点的数据域可以不存放任何信息,也可以存储与数据类型相同的其他附加信息。
  3. 首元结点是指链表中存储第一个数据元素a1的结点。

1)三者关系图示:

在这里插入图片描述
在这里插入图片描述

3、单链表的操作

1)单链表的定义和表示

单链表的存储结构

//线性表的单链表存储结构
typedef struct LNode{
   
	ElemType data;//结点的数据域
	struct LNode *next ;//结点的指针域
}LNode,*LinkList;//LinkList为结构体LNode的指针类型

注意:ElemType表示数据域data的通用类型
例如:
在单链表中存储学生学号、姓名、性别、成绩的类型定义如下

typedef struct student{
   
char num[8];//学号,数据域
char name[8];//姓名,数据域
char gender[8];//性别,数据域
int score;//成绩,数据域
struct student *next;//指针域
}LNode,*LinkList;

为了方便链表的操作,通常是这样来定义的

typedef struct{
   
char num[8];//学号,数据域
char name[8];//姓名,数据域
char gender[8];//性别,数据域
int score;//成绩,数据域
}ElemType;

typedef struct LNode{
   
ElemType data;//数据域
struct LNode *next;//指针域
}LNode,*LinkList;

2)单链表的基本操作

<1> 初始化 【InitList】

思路:

  1. 要创建什么样类型的单链表,这是必须明确的;
  2. 生成新结点作为头结点,用头指针L指向头结点;
  3. 头结点的指针域置空。

代码演示:

Status InitList(LinkList &L){
   
	//构造一个空的单链表L
	L=(LinkList)malloc(sizeof(LNode));
	L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值