链表反转的两种代码实现

1、递归方法:

static Node  changeLinkedList(Node node){
if(node==null||node.next==null){
   		return node;//说明压根就他一个元素没必要反转,或者到了最后一个节点了
}else{
	Node node=changeLinkedList(node.next);//采取递归的思想移动位置
	node.next.next=node;//让后面那个node的next指针指向当前这个node
	node.next=null;//把前面的那个next指针消除,防止出现循环
	return node;
}
}

2、遍历法

/*
大致的流程就是,设置一个pre指向null,设置curr指向当前要反转的链表,让curr的next直向pur,让后curr后移 pur也后移 。
*/
static Node changeLinkedList(Node node){
		Node  pre=null;//让pur指向null
		Node  curr=node;//让curr指向链表
		//设置一个结束标记,当curr==null时说明已经遍历结束了
		while(curr!=null){
				Node temp=curr.next;//当前node节点的下一个指针
				curr.next=pre;
				pre=cur;	
				cur=temp;
		}
return pre;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值