Task Description
重新排列一組數列,依原順序將奇數項排列在前,偶數項排列在後。
例如,數列 2 1 3 5 6 4 7的奇數項是 2 3 6 7,偶數項是 1 5 4
將之依原順序重新排列為 2 3 6 7 1 5 4。
Hint
oddEvenList.h
打上 function header 以及相關的設定。
#include <stdio.h>
#include <stdlib.h>
struct ListNode
{
int val;
struct ListNode *next;
};
struct ListNode* oddEvenList( struct ListNode* head);
|
oddEvenList.c
撰寫程式碼後對應上傳。
#include "oddEvenList.h"
struct ListNode* oddEvenList( struct ListNode* head)
{
/ add your code /
}
|
main.c
這個檔案無法更改也無須上傳。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include "oddEvenList.h"
void Construct( struct ListNode* node, int length, int num)
{
int a;
scanf ( "%d" , &a);
node->val = a;
if (num >= length)
{
node->next = NULL;
return ;
}
node->next = ( struct ListNode* ) malloc ( sizeof ( struct ListNode));
num++;
Construct(node->next, length, num);
}
int main()
{
struct ListNode* head;
int n, a, length;
head = ( struct ListNode* ) malloc ( sizeof ( struct ListNode));
scanf ( "%d" , &n);
while (n--)
{
scanf ( "%d" , &length);
Construct(head, length, 1);
struct ListNode* ans = oddEvenList(head);
struct ListNode* ptr;
ptr = ans;
while (ptr != NULL)
{
printf ( "%d " , ptr->val);
ptr = ptr->next;
}
printf ( "\n" );
}
}
|
Input Format
輸入第一行表示 m 組數列。
每組數列的第一行表示該數列有 n 個數字 (0≤n≤1000),第二行表示這些數字。
|
Output Format
Sample Input
1 2 3 4 5 | 2
5
1 2 3 4 5
7
2 1 3 5 6 4 7
|
Sample Output