畅谈链表---初级篇1---谈谈链表结构本身

链表新手在刚刚学习链表操作的时候,总会对繁杂的链表操作感到陌生而恐惧。因为其思维模式较线性表来说确实有本质上的不同。举个例子:线性表相邻元素之间紧邻,没有空位。故进行插入,删除操作时往往都需要“大动干戈”,但是其操作在理解上的难度较小,不像链表对初学者的恐吓度这样的高。我在初次学习链表时也对这些代码感到恼火,于是我总结出了一套自己对链表的"世界观"辅助我进行记忆,理解。

链表定义联想到"一个满是房屋和路牌的街区"

typedef struct LinkList
{
	ElemType data;
	struct LinkList *next;
};

在C语言中,指针变量是存放地址的变量。所以我自然而然的联想到将其中的next指针理解为"指向下一幢房子地址的路牌"。
我眼中的链表结构

  • 1号房即为ElemType data,其中存放了元素data
  • 紧接着1号房的路牌(路牌上写着2号房)即为LinkList *next,指向了下一幢房子
  • 1号房的房子本身以及其指向2号房的路牌为一个整体
  • 因为3号房之后没有路牌,故证明此街区中仅有这么3幢房子(链表中仅有三个结点),即类比到house3->next = nullptr为整个链表的结束条件
  • 不要因为此图三幢房子处于同一水平线上而误认为链表其存储空间也是连续的。如下图所示

1号房的路牌指向的是2号房,即告知了2号房的地址,顺着路牌所指引的方向即可找到2号房
发现了8!诚然C/C++中指针的灵活使用是具有一定难度的,且链表中的操作均和指针挂上了钩,但不要把链表本身想的太复杂,之后的博客中我所写的链表操作,均可以借助这样的房屋的建造/路牌的改向等等…来进行辅助理解。你要做的是和我一起塑造起链表的"世界观",克服你"链表萌新"的恐惧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值