Java链表的反转实现

Java链表的反转实现

本文承接上一篇文章。需要对链表进行创建。详见下方链接
链表的创捷
看到好像很多人都说这道题常考,我就搜了搜看别人怎么做的。
结果我看不懂,可能是我的问题,感觉有点混乱orz。

———————————————————————————————————————————————————————————————————— 自己做了一下,其实很简单。下面进入正题。

反转思路

默认链表至少含有两个节点

  1. 利用三个指针:
    先前节点,当前节点探索节点
  2. 先前节点负责保留前一个节点的地址,当前节点负责连接上一节点,探索节点用于保留原链表下一个节点的地址。
  3. 当前节点为空时,可知已经没有节点需要逆序了,退出循环。
  4. 我这里没有在while中判断,而是用ifbreak代替。方便循环进行。

话不多说直接上代码

public void reverseList()
	{
		if(head == null)
		throw new IllegalArgumentException("您还未创建链表!");
		LinkNode previousNode = null;//先前节点
		LinkNode current = null;//当前节点
		LinkNode explorer = null;//探索节点
		previousNode = head;
		current = previousNode.next;
		explorer = current.next;
		previousNode.next = null;//必经步骤:head变为tail
		while(true)
		{
			current.next = previousNode;//连接上一个节点
			previousNode = current;//先前节点下移
			current = explorer;//当前节点下移
			if(current == null)//检查当前节点是非为空
				break;
			explorer = explorer.next;//探索节点下移
		}
		head = previousNode;//更改头节点
		print();
	}
}

尾言

不懂的话就问我嗷,大家一起进步!!
在这里插入图片描述

以上图片均为互联网资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值