PAT甲级1052 Linked List Sorting:[C++题解]链表排序
生活随笔
收集整理的這篇文章主要介紹了
PAT甲级1052 Linked List Sorting:[C++题解]链表排序
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 題目分析
- 題目鏈接
題目分析
題意:給定數(shù)據(jù)(里面有不構(gòu)成鏈表的數(shù)據(jù),若是,則跳過(guò)),是鏈表的構(gòu)成鏈表。然后根據(jù)數(shù)值大小重新排序,構(gòu)成新的鏈表。
分析:用數(shù)組模擬鏈表,先建立鏈表。遍歷鏈表,用pair來(lái)存 <結(jié)點(diǎn)的地址,數(shù)值>,存入vector。然后對(duì)vector排序,然后就是輸出即可。
ac代碼
#include<bits/stdc++.h> using namespace std;typedef pair<int,int> PII; //地址 ,數(shù)據(jù) const int N=1e5+10; int n,h; int e[N],ne[N];vector<PII> res;bool cmp(PII a, PII b){return a.second < b.second; }int main(){cin>>n>>h;if(h!=-1){ //非空鏈表for(int i=0;i<n;i++){int address , data , next;cin>>address>> data >>next;e[address] =data, ne[address]=next;}for(int i=h;i!=-1;i=ne[i]){res.push_back({i,e[i]}); //下標(biāo) 和 數(shù)據(jù)}sort(res.begin(),res.end(),cmp);printf("%d %05d\n",res.size(),res[0].first);for(int i=0;i<res.size();i++){printf("%05d %d ",res[i],e[res[i].first]);if(i+1 == res.size()) cout<<-1<<endl;else printf("%05d\n",res[i+1].first);}}else{ //空鏈表cout<<0<<" "<<-1<<endl;}}題目鏈接
PAT甲級(jí)1052 Linked List Sorting
總結(jié)
以上是生活随笔為你收集整理的PAT甲级1052 Linked List Sorting:[C++题解]链表排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PAT甲级1133 Splitting
- 下一篇: PAT甲级1075 PAT Judge: