我看其他博客用的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;
}
标签:1025,index,int,sno,fz,链表,start,vec,反转
From: https://www.cnblogs.com/chengyiyuki/p/18137895