目的:将一个单链表进行逆置,例如:1 3 2 7 9 --->9 3 2 7 1
实现思路:先将头结点的位置变成尾节点,将头节点的next,指向新的尾节点,循环执行
public void reverseLink(){
Node<T> p=head;
Node<T> q=p.next;
Node<T> s=q.next;
if(head==null || head.next==null){
//只有一个节点或者空链表head.next==null/size==1
return;
}
//正常情况
head.next=null;//先让原来的头节点转换为尾节点
while (q!=null){//p!=tail
q.next=p;
p=q;
q=s;
if(s!=null){
s=s.next;
}
}
tail=head;
head=p;
}
时间复杂度为O(n)。