这种题目属于常用的数据结构,是重点题目,熟能生巧,写的多了,自然就会更加的得心应手。
题目描述如下:
题目大致意思:
这是一道链表排序的题目,按照结构体中存储的整数进行从小到大的排序。
大致思路:
用一个结构体来存储当前地址,当前数据,下一地址。使用vector结构体数组来存储输入即可,对该数组按照结构体中的当前数据变量进行排序即可。排序之后,进行一遍遍历,修改下一跳的地址。
提交结果如下:
有两个测试用例错误,暂时放在第二轮刷题时解决。
提交的代码如下:
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct Node
{
string address;
int data;
string next;
};
bool cmp(Node node1,Node node2)
{
return node1.data<node2.data;
}
int main()
{
vector<Node> arr;
int n,begin;
cin>>n>>begin;
for(int i=0;i<n;i++)
{
Node node;
cin>>node.address>>node.data>>node.next;
arr.push_back(node);
}
sort(arr.begin(),arr.end(),cmp);
cout<<n<<" "<<arr[0].address<<endl;
for(int i=0;i<arr.size()-1;i++)
{
arr[i].next=arr[i+1].address;
}
arr[arr.size()-1].next="-1";
for(int i=0;i<arr.size();i++)
{
cout<<arr[i].address<<" "<<arr[i].data<<" "<<arr[i].next<<endl;
}
}
本次提交后累计得分为1289。