AcWing 3709:单链表节点交换 ← 四川大学考研机试题

【题目来源】
https://www.acwing.com/problem/content/3712/

【题目描述】
输入一个单链表,依次交换前2个数,第3、4个数,第5、6个数,...,以此类推,直到操作完整个链表。
如果链表长度是奇数,则最后一个数不用操作。
输出交换之后的链表。

【输入格式】
第一行包含整数 n,表示节点数量。
第二行包含 n 个整数,表示每个节点的值。

【输出格式】
共一行,输出交换后的链表。

【数据范围】
1≤n≤100,
节点取值范围 [1,100]。

【输入样例】
5
1 2 3 4 5

【输出样例】
2 1 4 3 5

【算法分析】
本题是四川大学考研机试题。
在编码时,不要一看到单链表,就去用链式结构实现,这样就势必增加了编码复杂度。可以考虑用数组模拟实现,可大大简化编码难度。

【算法代码】

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

const int maxn=105;
int a[maxn];

int main() {
    int n;
    cin>>n;
    for(int i=1; i<=n; i++) cin>>a[i];

    int t=n;
    if(n%2!=0) t--;
    for(int i=1; i<t; i+=2) swap(a[i],a[i+1]);
    
    for(int i=1; i<=n; i++) cout<<a[i]<<" ";
}

/*
in:
5
1 2 3 4 5

out:
2 1 4 3 5
*/
相关推荐
Rossy Yan4 天前
【数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】
数据结构·c++·算法·线性表
A懿轩A24 天前
C/C++ 数据结构与算法【线性表】 顺序表+链表详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·考研·算法·链表·线性表
芜湖_1 个月前
【山大909算法题】2014-T1
算法·c·单链表
TPCloud1 个月前
快速利用c语言实现线性表(lineList)
c语言·开发语言·线性表·linelist
大河qu4 个月前
语言基础/单向链表的构建和使用(含Linux中SLIST的解析和使用)
数据结构·单链表·线性表·slist·linux slist·头指针和头节点
wyuchen1234 个月前
单链表的实现
数据结构·c++·链表·单链表
算法小白(真小白)5 个月前
数据结构——考研笔记(三)线性表之单链表
数据结构·考研·链表·线性表
Nelson_hehe6 个月前
考研系列-数据结构第二章、线性表
考研·链表·顺序表·数据结构与算法·线性表·王道考研笔记
Ljw...7 个月前
单链表的实现
数据结构·单链表
꧁༺❀氯ྀൢ躅ྀൢ❀༻꧂7 个月前
数据结构 实验 1
c语言·数据结构·c++·线性表·实验