想法
这就是一个对单链表的简单应用,有多种方法来解这道题,这里只写两种:
解法1
这里用的是数组的方法直接解,
不过题目考的是关于单链表的使用,所以之后再用单链表写一遍吧
#include<iostream>
using namespace std;
int main() {
int n;
cin>>n;
int num[n];
for(int i = 0; i < n; i++) cin>>num[i];
for(int i = 0; i < n; i += 2)
if(i + 1 < n) swap(num[i], num[i + 1]);
for(int i = 0; i < n; i++) cout<<num[i]<<' ';
return 0;
}
解法2
用数组模拟单链表
#include<iostream>
using namespace std;
const int N = 110;
int e[N], ne[N], head, idx;
int num[N];
void init() {
head = -1;
idx = 0;
}
int main() {
int n;
cin>>n;
init();
for(int i = 0; i < n; i++) {
int x;
cin>>num[i];
}
for(int i = n - 1; i >= 0; i --) {
e[idx] = num[i], ne[idx] = head, head = idx ++;
}
for(int i = head, j = 0;j < n && i != -1; i = ne[ne[i]], j += 2) { //这里的判断条件其实有些多余,有一个就好
if(j + 1 < n) swap(e[i], e[ne[i]]);
}
for(int i = head; i != -1; i = ne[i]) cout<<e[i]<<' ';
return 0;
}