#include<bits/stdc++.h>
using namespace std;
struct node{
int data;
int addr;
int next;
}Nodes[100002];
typedef struct node Node;
vector<Node> jihe;
vector<Node> jihe1;
bool isdup[1000000] = {false};
int main(){
int head , m;
cin>>head>>m;
for(int i = 0 ; i < m ;i++){
int addr , data , next;
cin>>addr>>data>>next;
Nodes[addr].addr = addr;
Nodes[addr].data = data;
Nodes[addr].next = next;
}
int address = head;
while(address!=-1){
int index = abs(1.0*Nodes[address].data);
if(!isdup[index]){
jihe.push_back(Nodes[address]);
isdup[index] = true;
}else{
jihe1.push_back(Nodes[address]);
}
address = Nodes[address].next;
}
for(int i = 0 ; i < jihe.size()-1 ; i++){
printf("%05d %d %05d\n",jihe[i].addr,jihe[i].data,jihe[i+1].addr);
}
if(jihe.size()!=0)
printf("%05d %d -1\n",jihe[jihe.size()-1].addr,jihe[jihe.size()-1].data);
int sign = jihe1.size() - 1;
for(int i = 0 ; i < (int)(jihe1.size()-1) ; i++){
printf("%05d %d %05d\n",jihe1[i].addr,jihe1[i].data,jihe1[i+1].addr);
}
if(jihe1.size()!=0)
printf("%05d %d -1",jihe1[jihe1.size()-1].addr,jihe1[jihe1.size()-1].data);
return 0;
}
错误原因:
该开始在for循环当中使用了vector.size()-1,结果告诉发生了段错误。
直到输出vector.size()-1才发现了原因
推荐博文:[为什么会发生这样的错误](https://blog.csdn.net/struggle6688/article/details/104063577)