【数据结构与算法】—— * 链表 入门(三)*

前言

之前,小玄已经写过了链表相关的文章:

【数据结构与算法】—— * 链表 入门(一)*_forever_bryant的博客-CSDN博客

【数据结构与算法】—— * 链表 入门(二)*_forever_bryant的博客-CSDN博客

在这篇文章,小玄将通过实例讲解的方式来为大家进一步温习相关的内容和知识点。


基本概念 

  1. 结点包括数据域指针域
  2. 链表是由 n 个结点链接成,第一个结点的存储位置叫头指针,最后一个结点的指针为“空”

typedef struct Hero{
	int id;		//英雄编号
	char* name; //英雄名称

	//指向下一结点的指针
	struct Hero* pNext;
}Hero;

int main()
{
	Hero hero1 = { 1, "孙尚香" };
	Hero hero2 = { 2, "武则天" };
	Hero hero3 = { 2, "狂铁" };
	Hero hero4 = { 2, "夏侯惇" };
	Hero hero5 = { 2, "宫本武藏" };

	//Hero1 就是头指针
	hero1.pNext = &hero2;
	hero2.pNext = &hero3;
	hero3.pNext = &hero4;
	hero4.pNext = &hero5;
	hero5.pNext = NULL;

	return 0;
}

链表 实例图解

下图是对上述数据基础的数据结构图:

 如果我们想删除3号元素和4号元素的话,只需将对应的结点进行删除,将对应的指针指向第五个元素,然后释放相关的内存空间即可


链表的头指针和头点 

基本概念

* 头指针 : 链表中第一个结点的储存位置

* 头结点 : 在单链表中的第一个结点前附设的一个结点

异同点 

                           头指针                             头结点
若链表没有头结点,则是指向头指针的指针;若没有则是链表指向第一个头结点的指针;

头结点是为了操作的统一和方便而设立的,放在第一个结点之前

其数据域一般毫无意义(可以存储链表的长度)

头指针具有表示作用,所以常常用头指针表示链表的名字有了头结点,在第一个结点前插入和删除第一个结点时,操作与其他结点的操作就统一了。

无论链表是否为空,头指针均不为空。

头指针是链表的必要元素。

头结点不一定是链表的必要元素。

 

如果觉得有什么意见或者是需要的话,欢迎在评论区向小玄提出哦!

冲冲冲!! 

  • 60
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 41
    评论
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄澈_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值