输入一个链表,反转链表后,输出新链表的表头

因为这道题花了自己的一些时间,所以还是想写一篇博客纪念一下。

代码如下

package dai.List;
/**
 *  输入一个链表,反转链表后,输出新链表的表头。
 * @author 18491
 *
 */
public class ReverseList02 {
	public ListNode02 reverseList(ListNode02 head) {
		if(head == null) {
			return null;
		}
		//最终需要实现的是 将列表1 -> 2 -> 3 -> 4 转换为1 <- 2 <-3 <- 4
		//为了能够快速反转列表,需要定义节点tem来保存当前节点的next值,定义pre来保存节点的上一个值
		ListNode02 tem = null;
		ListNode02 pre = null;
		while(head != null) {
			//保存当前节点的下一个节点,防止出现断列
			tem = head.next;
			//保存好之后,则将当前节点指向pre
			//例如,当前是第一次循环,则1 -> 2 转变为  null <- 1;方向发生改变,代码实现如下
			head.next = pre;
			//记住当前每个节点的状态,我们将节点都向后移一步
			pre = head;
			head = tem;
		}
		return pre;
	}
}
class ListNode02 {
	int val;
	ListNode02 next;
	public ListNode02(int val){
		this.val = val;
	}
}

 

全部评论

相关推荐

走不到的路就这样算了吗:大佬硬气
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务