1025 反转链表
我看其他博客用的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; }