java反转链表

java反转链表

反转机制与实现


设置反转节点,相当于单链表中的头结点。

HeroNode reverseHead = new HeroNode(0, "", "");//设置的反转头结点

遍历整个链表,从头到尾,每遍历一个节点,都放在reverseHead的最前端。

while(cur != null) {
			next = cur.next;//在cur没变的时候,标记下一个节点,以备后用
			cur.next = reverseHead.next;//将当前节点的下一个节点放在反转队列的最前方
			reverseHead.next = cur;//将当前与当前下一个节点互换位置。
			cur = next;//继续向后遍历
		}

上述循环将链表反转,但此时他的头结点为reverseHead,在定义反转链表的方法时,传参为head,为单链表原来的头节点,故还需要最后一步将head.next指向reverseHead.next,此时链表才算真正的反转(而不是跑到期其他地方倒着排队),代码如下

	//将head代替反转链表的reverseHead,将head.next指向reverseHead.next
		head.next = reverseHead.next;
		
  • 总体方法代码
public static void reverseList(HeroNode head) {
		//1.链表只有一个节点或者为空时不需要翻转
		
		if(head.next==null || head.next.next == null) {
			return;
		}
		HeroNode cur = head.next;
		HeroNode next = null;
		HeroNode reverseHead = new HeroNode(0, "", "");//设置的反转头结点
		//遍历整个链表,从头到尾,没遍历一个节点,都放在reverseHead的最前端
		while(cur != null) {
			next = cur.next;//在cur没变的时候,标记下一个节点,以备后用
			cur.next = reverseHead.next;//将当前节点的下一个节点放在反转队列的最前方
			reverseHead.next = cur;//将当前节点链接到新链表上
			cur = next;
		}
		//将head代替反转链表的reverseHead
		head.next = reverseHead.next;
		
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值