输入一个单链表,将奇数位置上的节点与偶数位置上的节点进行交换,然后输出交换之后的链表。
输入格式
第一行包含整数 n,表示节点数量。
第二行包含 n 个整数,表示每个节点的值。
输出格式
共一行,输出交换后的链表。
数据范围
1≤n≤100,
节点取值范围 [1,100]。
输入样例:
5
1 2 3 4 5
输出样例:
2 1 4 3 5
Code:
#include <iostream>
#include <stdio.h>
#include <malloc.h>
using namespace std;
const int N = 100010;
typedef int Status;
typedef struct LNode
{
int data;
struct LNode *next;
}
LNode, *LinkList;
int n;
void Init_LinkList(LinkList & L)
{
L = (LinkList) malloc (sizeof(LNode));
L->next = NULL;
}
void Creat_HLinkList(LinkList & L, int n)
{
LNode *r = L;
for(int i = 1; i <= n; i ++ )
{
int x;
scanf("%d", &x);
LNode *s = (LinkList) malloc (sizeof(LNode));
s->data = x;
r->next = s;
s->next = NULL;
r = s;
}
}
void Change_LinkList(LinkList & L) //交换节点
{
LNode *p = L->next; int j = 0;
while(p)
{
j ++;
if(j % 2 == 1 && p->next != NULL) swap(p->data, p->next->data);
p = p->next;
}
}
void Travers_LinkList(LinkList & L)
{
LNode *p = L->next;
while(p)
{
cout << p->data << ' ';
p = p->next;
}
}
signed main()
{
LNode *L;
cin >> n;
Init_LinkList(L);
Creat_HLinkList(L, n);
Change_LinkList(L);
Travers_LinkList(L);
}