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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38584262/article/details/82821019

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

代码如下

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;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_38584262/article/details/82821019