反转链表,时间复杂度O(n),空间复杂度O(1)

原理:使用三个指针,p,q指向交换的元素,r指向后续元素

代码如下:

class Node{
	int data;
	Node next; 
	Node(int data){
		this.data=data;
	}
}


 Node reverse(Node head) {
		if(head==null || head.next==null) return head;
		Node p=head,q=p.next,r=q.next;
		q.next=p;p.next=null;
		while(r!=null){
			p=q;
			q=r;
			r=r.next;
			q.next=p;
		}
		return q;
	}
}

  

    原文作者:算法小白
    原文地址: https://www.cnblogs.com/mlz-2019/p/5008053.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞