我看其他部落格用的reverse,但是下標我真的有點糊塗,以下是參考某位dalao的。
#include <bits/stdc++.h>
using namespace std;
struct node {
int sno;
int data;
int next;
} s[100010];
int main() {
int start,cnt,fz;//start
cin>>start>>cnt>>fz;
for(int i=0; i<cnt; i++) {
int sno;
cin>>sno;
s[sno].sno = sno;
cin>>s[sno].data>>s[sno].next;
}
//start是起始的地址
int i = start;
vector<node> vec;
while(i!=-1) {
vec.push_back(s[i]);
i=s[i].next;
}
int flag = 0;
int index = fz - 1;//定位的索引位置
while(index < vec.size()) {
//進行反轉輸出
for(int i=index; i>index-fz; i--) {
if(flag==0) {
printf("%05d %d ",vec[i].sno,vec[i].data);
flag = 1;
}else{
printf("%05d\n%05d %d ",vec[i].sno,vec[i].sno,vec[i].data);
}
}
index += fz;
}
//將剩餘的部分輸出
index = index - fz + 1;
for(int i=index;i<vec.size();i++){
if(flag==0){
printf("%05d %d ",vec[i].sno,vec[i].data);
flag = 1;
}else{
printf("%05d\n%05d %d ",vec[i].sno,vec[i].sno,vec[i].data);
}
}
cout << "-1\n";
return 0;
}