描述
给定一个单链表,把所有的奇数结点和偶数结点分别排在一起,重新链成一个新链表。请注意,这里的奇数结点和偶数结点指的是结点编号的奇偶性,而不是结点的值的奇偶性。
要求:空间复杂度应为 O(1),时间复杂度应为 O(n),n 为链表结点总数。
输入
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。
输出
奇数结点和偶数结点分割后重新链成的新链表。
输入样例 1
5
1 2 3 4 5
3
1 5 6
4
15 2 3 4
0
输出样例 1
1 3 5 2 4
1 6 5
15 3 2 4
代码
#include <bits/stdc++.h>
using namespace std;
typedef struct link{
int data;
struct link *next;
}link,*linklist;
void Create(linklist& L,int n)
{
L=new link;
L->next=NULL