链表部分反转

it2022-05-05  207

反转链表的一部分,从第m个到第n个节点反转,m、n都小于链表长度。

public void reverselist(List l,int m,int n){ //如果m和n相同,则返回原链表 if(m == n){ return l; } //定义一个新的临时头指针 Node tmp = Node(0); tmp.next = l; //移动头指针到第(m-1)个节点 Node pre = tmp; for(int i=0; i<(m - 1); i++){ pre = pre.next; } Node result = null; //将当前节点指向第m个节点 Node cur = pre.next; Node next = Node(0); //开始循环,反转第m到n个节点 for(int j=0; j<(n - m + 1); j++){ next = cur.next; cur.next = result; result = cur; cur = next; } //cur已经指向第(n+1)个节点 pre.next.next = cur; //result指向第n个节点 pre.next = result; return tmp.next; }

最新回复(0)