题解 | #链表的奇偶重排#
链表的奇偶重排
http://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3
/**
-
struct ListNode {
-
int val;
-
struct ListNode *next;
-
ListNode(int x) : val(x), next(nullptr) {}
-
}; / class Solution { public: /*
- 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
- @param head ListNode类
- @return ListNode类 */
ListNode* oddEvenList(ListNode* head) { // write code here
if(!head||!(head->next)) return head; ListNode* res1=new ListNode(-1); ListNode* res2=new ListNode(-1); res1->next=head; res2->next=head->next; ListNode* cur=head; while(cur->next) //遍历整个链表,奇偶位结点连接 { ListNode* tmp=cur->next; cur->next=tmp->next; cur=tmp; } cur=head; while(cur->next) //遍历到奇链表末尾时,将偶链表连接在奇链表末尾 { cur=cur->next; } cur->next=res2->next; return res1->next;
} };