什么是链表?

链表简介

链表是一种线性数据结构,就如同链子那般串联而成,可通过链子的头部顺藤摸瓜找到下一个链段,如此套娃就形成了完整的链表。如果我们只是单纯的从头摸♂到尾那么这种链表被成为单向链表。如果可以来回摸索,反复穿梭,这种链表则被称为双向链表。当然,链表也能像项链那般围成圆形,这种链表被称为环形链表
在这里插入图片描述

单向链表

单向链表是最基本的链表结构,由DATA数据和NEXT节点组成。DATA指的是存放的数据,而NEXT则指向下一个节点。链表一般还会有一个HEAD表头,HEAD指向链表的第一个节点,因为我们添加完所以节点后链表会指向链表尾部,而使用一般从表头开始使用,所以需要HEAD。

单向列表基本结构

//创建linked类
	linked{
	//data为存放于本节点的数据
	String data ;
	//next 类型为本类,用来存放添加的节点
	linked next;
}

在这里插入图片描述

双向链表

双向链表跟单项列表大致结构一样,只不过多了一个pre节点,用来指向上一个节点。比如有这么一个需求,要求对链表进行逆序输出。单向列表执行这个操作将会很麻烦,但如果为其加一个pre节点,我们可以直接顺序遍历到尾部后,再通过pre节点遍历到头部,从而很方便的逆序输出。

双向列表基本结构

//创建linked类
	doublelinked{
	//data为存放于本节点的数据
	String data ;
	//pre类型为本类,用来存放链表的上一个节点
	linked pre;
	//next 类型为本类,用来存放新添加的节点
	linked next;
}

在这里插入图片描述

环形链表

环形链表只不过是在链表基础上把尾部节点指向了头节点。让其成为了一个环形结构
在这里插入图片描述

链表的增删查改

节点增加

链表增加节点只需要创建一个节点,然后把新节点赋值给旧节点的NEXT,然后再让新节点变成旧节点,循环往复。

//创建新节点
linked newLinked=New Linked()
//创建旧节点
linked frist=New Linked()
//将新节点赋值给旧节点
frist.NEXT= newLinked
//新节点变成旧节点
frist=newLinked


节点删除

通过循环遍历节点的NEXT,找到节点后,将该节点的NEXT指向NEXT节点的NEXT。具体过程如下:

cur=linked;
whlie(True){

	if(cur ==null)
		break;
	if(cur.NEXT.DATA=="目标数据"){
		cur.NEXT=cur.NEXT.NEXT
		break}
cur=cur.NEXT
}

节点查找

通过循环遍历节点的NEXT,直到找到目标节点的DATA为止。具体过程如下:

cur=linked.NEXT;
whlie(True){

	if(cur ==null)
		break;
	if(cur.DATA=="目标数据")
		break;
	cur=cur.NEXT
}

节点修改

通过循环遍历节点的NEXT,找到节点的DATA后对其进行修改即可。具体过程如下:

cur=linked.NEXT;
whlie(True){
	if(cur ==null)
		break;
	if(cur.DATA=="目标数据"){
		cur.DATA=="要修改的数据"
		break}
	cur=cur.NEXT
}

结语

链表也是比较简单的数据结构,只要考察链表的遍历。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值