牛客刷题——链表反转

挺简单的一道题,当初笔试还写过,简单记录一下~

链表反转1->2->3->4->null;反转后变为4->3->2->1;即null<-1<-2<-3<-4;

因此考虑反转步骤为  1) null<-1,2->3->4  2) null<-1<-2,3->4  3) null<-1-<2-<3,4  4)null<-1<-2<-3<-4

所以只需要采用while循环依次进行处理即可。

在进行处理的时候,首先确定当前结点now,拿到当前结点的next节点 (now和next均不为空)拿到next的next节点nNext(防止链表丢失),然后重新调整now和next之间的关系,调整完之后,now和next后移。

完整代码如下:

 public static ListNode ReverseList(ListNode head) {
		 if(head==null||head.next==null) {  //特殊情况处理  空链表或者单个节点直接返回
	        	return head;
	        }
	      
        	ListNode nowN = head;  //从首元素出发
        	ListNode nextN = nowN.next; //下一个元素
        	nowN.next = null;
	        while(nextN!=null){  
	        	System.out.print(head.val+"  "+nextN.val);
	        	ListNode nNext = nextN.next;
	        	//进行反转
	        	nextN.next=head;
	        	head = nextN;
	        	nextN = nNext;
	            
	        }
	        return head;
	    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值