思路
首先,创建一个结构体 NodeNodeNode:
其中,kkk 代表学号,sss 代表学生名字。
而每个结构体的下标(当前的座位编号)用 xxx 来表示,ax.ka_x.kax .k 表示座位号为 xxx 的学生学号,ax.sa_x.sax .s 表示座位号为 xxx 的学生名字。
然后,我们要用 bbb 数组储存小标 xxx,令 bk=xb_k = xbk =x,之后,对于第 i(1≤i≤k)i(1 \le i \le k)i(1≤i≤k) 次交换,输入 x,yx,yx,y,交换 bxb_xbx 与 byb_yby ,令 abx.k=x,aby.k=ya_{b_x}.k = x,a_{b_y}.k = yabx .k=x,aby .k=y,再交换 abx.sa_{b_x}.sabx .s 与 aby.sa_{b_y}.saby .s 即可。
代码: