给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。
注意是节点的编号而非节点的数值。
数据范围:节点数量满足 0 \le n \le 10^50≤n≤105,节点中的值都满足 0 \le val \le 10000≤val≤1000
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
输入:
{1,2,3,4,5,6}返回值:
{1,3,5,2,4,6}说明:
1->2->3->4->5->6->NULL
重排后为
1->3->5->2->4->6->NULL
输入:
{1,4,6,3,7}返回值:
{1,6,7,4,3}1->4->6->3->7->NULL
重排后为
1->6->7->4->3->NULL
奇数位节点有1,6,7,偶数位节点有4,3。重排后为1,6,7,4,3
- class Solution {
- public:
- /**
- * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
- *
- *
- * @param head ListNode类
- * @return ListNode类
- */
- ListNode* oddEvenList(ListNode* head) {
- // write code here
- if(head==nullptr){
- return head;
- }
- ListNode *even=head->next;
- ListNode *odd=head;
- ListNode *evenHead=even;
- while(even && even->next){
- odd->next=even->next;
- odd=odd->next;
-
- even->next=odd->next;
- even=even->next;
- }
- odd->next=evenHead;
- return head;
- }
- };