链表的奇偶重排_牛客题霸_牛客网
给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。
注意是节点的编号而非节点的数值。
数据范围:节点数量满足 0≤𝑛≤1050≤n≤105,节点中的值都满足 0≤𝑣𝑎𝑙≤10000≤val≤1000
要求:空间复杂度 𝑂(𝑛)O(n),时间复杂度 𝑂(𝑛)O(n)
方法一:双指针法
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @return ListNode类*/ListNode* oddEvenList(ListNode* head) {// write code hereif(head == NULL) return head;ListNode* even = head->next;ListNode* odd = head;ListNode* evenhead = even;while(even != NULL && even->next != NULL){odd->next = even->next;odd = odd->next;even->next = odd->next;even = even->next;}odd->next = evenhead;//街道奇数的后方return head;}
};