测试点6:没有说所有给的测试点都是有效的,从头到尾遍历链表后,要更新节点数目。
比如说:
00100 8 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218
66 33 33
78 78 78
8个节点中只有6个是有效的,最后两个是凑数的。
测试点5:运行超时
把cout换成printf输出
注意:printf输出string
string str="test";
printf("%s\n",str.c_str);
#include <iostream>
#include"stdlib.h"
#include <vector>
#include <cstdio>
//scanf printf防止超时
#include <algorithm>
//vector的sort
#include <sstream>
//转换
using namespace std;
#include<iomanip>
//精度
class element
{
public:
string add;
int data;
string next;
element()
{
add="";
data=0;
next="";
}
};
int main()
{
string first;
int number;
int K;
cin>>first>>number>>K;
vector<element> List;
for(int i=0;i<number;i++)
{
string add;
int data;
string next;
cin>>add>>data>>next;
element temp;
temp.add=add;
temp.data=data;
temp.next=next;
List.push_back(temp);
}
vector<element> right_seq;
string point=first;
while(point!="-1")
{
for(int i=0;i<List.size();i++)
{
if(List[i].add==point)
{
right_seq.push_back(List[i]);
point=List[i].next;
}
}
}
//去除无效节点
number=right_seq.size();
int time=number/K;
vector<element> res;
for(int i=1;i<=time;i++)
{
for(int j=i*K-1;j>=(i-1)*K;j--)
{
element temp;
temp.add=right_seq[j].add;
temp.data=right_seq[j].data;
res.push_back(temp);
}
}
if(number%K>0)
{
for(int i=time*K;i<right_seq.size();i++)
{
element temp;
temp.add=right_seq[i].add;
temp.data=right_seq[i].data;
res.push_back(temp);
}
}
//cout<<"res"<<endl;
for(int i=0;i<res.size()-1;i++)
{
printf("%s %d %s\n",res[i].add.c_str(),res[i].data,res[i+1].add.c_str());
//cout<<res[i].add<<" "<<res[i].data<<" "<<res[i+1].add<<endl;
}
printf("%s %d -1\n",res[number-1].add.c_str(),res[number-1].data);
//cout<<res[number-1].add<<" "<<res[number-1].data<<" -1"<<endl;
return 0;
}