本文介绍: 题意:以address,val,next_address的形式给定一个链表,同时给定头节点的address,求将该链表排序后的形式。坑点二:没想到吧,给定的链表还可能为空!这种情况下,我们只需要输出0与头结点就行了。坑点一:有的结点不在该链表上,需要遍历一遍链表排除掉。(可以用哈希表存储链表)pat拿分简单,但是拿要高分确实难。
题意:以address,val,next_address的形式给定一个链表,同时给定头节点的address,求将该链表排序后的形式。
pat拿分简单,但是拿要高分确实难。。
坑点一:有的结点不在该链表上,需要遍历一遍链表排除掉。(可以用哈希表存储链表)
坑点二:没想到吧,给定的链表还可能为空!这种情况下,我们只需要输出0与头结点就行了。
#include<bits/stdc++.h>
using namespace std;
struct node{
string address;
int val;
string next;
};
int main(){
vector<node>res;
map<string,node>mp;
int n;cin>>n;
string head;
cin>>head;
for(int i=0;i<n;i++){
string nod,next;
int val;
cin>>nod>>val>>next;
mp[nod]={nod,val,next};
}
while(mp.count(head)){
res.push_back({head,mp[head].val});
head=mp[head].next;
}
sort(res.begin(),res.end(),[](auto&a,auto&b){
return a.val<b.val;
});
if(res.size()==0){
cout<<0<<' '<<head;return 0;
// cout<<0;return 0;
}
n=res.size();
for(int i=0;i<n-1;i++){
res[i].next=res[i+1].address;
}
res[n-1].next="-1";
cout<<n<<' '<<res[0].address<<endl;
for(int i=0;i<n;i++){
cout<<res[i].address<<' '<<res[i].val<<' '<<res[i].next<<endl;
}
}
原文地址:https://blog.csdn.net/qq_63128300/article/details/134620653
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_728.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。