206-链表的反转
class Solution {
public ListNode reverseList(ListNode head) {
//定义当前节点,定义一个新链表为空
ListNode cur = head;
ListNode newlist = null;
while(cur!=null){
ListNode temp = cur.next;
//头插法
cur.next=newlist;
//把第一个节点设定为新链表的头结点
newlist=cur;
//将余下节点插入
cur=temp;
}
return newlist;
}
}
92实现从m-n的反转
找到m节点,tail标记n节点,头插法实现倒转
class Solution {
public ListNode reverseBetween(ListNode head, int m, int n) {
int len=n-m+1;
ListNode rel=head;
ListNode prehead = null;
//找到m节点
while(head!=null&&m>1){
--m;
prehead=head;
head=head.next;
}
//标记tail为n节点
ListNode tail=head;
ListNode ans=null;
while(head!=null&&len!=0){
//头插法
ListNode temp=head.next;
head.next=ans;
ans=head;
head=temp;
len--;
}
tail.next=head;
if(prehead!=null){
prehead.next=ans;
}else{
rel=ans;
}
return rel;
}
}