日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

L2-002 链表去重 (25 分) 船新方法

發(fā)布時(shí)間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 L2-002 链表去重 (25 分) 船新方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
L2-002 鏈表去重 (25 分)

給定一個(gè)帶整數(shù)鍵值的鏈表 L,你需要把其中絕對(duì)值重復(fù)的鍵值結(jié)點(diǎn)刪掉。即對(duì)每個(gè)鍵值 K,只有第一個(gè)絕對(duì)值等于 K 的結(jié)點(diǎn)被保留。同時(shí),所有被刪除的結(jié)點(diǎn)須被保存在另一個(gè)鏈表上。例如給定 L 為 21→-15→-15→-7→15,你需要輸出去重后的鏈表 21→-15→-7,還有被刪除的鏈表 -15→15。

輸入格式:
輸入在第一行給出 L 的第一個(gè)結(jié)點(diǎn)的地址和一個(gè)正整數(shù) N(為結(jié)點(diǎn)總數(shù))。一個(gè)結(jié)點(diǎn)的地址是非負(fù)的 5 位整數(shù),空地址 NULL 用 ?1 來表示。

隨后 N 行,每行按以下格式描述一個(gè)結(jié)點(diǎn):

地址 鍵值 下一個(gè)結(jié)點(diǎn)
其中地址是該結(jié)點(diǎn)的地址,鍵值是絕對(duì)值不超過10
?4
?? 的整數(shù),下一個(gè)結(jié)點(diǎn)是下個(gè)結(jié)點(diǎn)的地址。

輸出格式:
首先輸出去重后的鏈表,然后輸出被刪除的鏈表。每個(gè)結(jié)點(diǎn)占一行,按輸入的格式輸出。

輸入樣例:

00100 5 99999 -7 87654 23854 -15 00000 87654 15 -1 00000 -15 99999 00100 21 23854

輸出樣例:

00100 21 23854 23854 -15 99999 99999 -7 -1 00000 -15 87654 87654 15 -1

你之前從沒見過的全新版本;
大家都很老實(shí),題目讓你鏈表去重你就真的認(rèn)認(rèn)真真的鏈表去重,太老實(shí)了!!!!!
其實(shí)只需要存一個(gè)東西就行了,就是——————地址。
因?yàn)榈刂返闹的闶侵赖?#xff0c;上一個(gè)的下一個(gè)就是你這個(gè)地址,所以根本不用七八十行。
上代碼:

#include<iostream> #include<cmath> #include<vector> #include<iomanip> using namespace std; bool pan[100005]={false}; struct node{int data;int nd; }ch[100005]; int main() {int head,n;cin>>head>>n;for (int i=0;i<n;i++){int adress,data,next;cin>>adress;cin>>ch[adress].data>>ch[adress].nd;}vector<int>cun1,cun2;while (head!=-1){int data=ch[head].data;data=abs(data);if (pan[data]==false){cun1.push_back(head);//存儲(chǔ)一隊(duì)的地址pan[data]=true;}else{cun2.push_back(head);//存儲(chǔ)二隊(duì)的地址}head=ch[head].nd;}//我知道printf輸出比較簡(jiǎn)單,但帥就完事了,迭代器加c++輸出方式,*格就上來了!for (vector<int>::iterator it=cun1.begin();it!=cun1.end();it++){if (it==cun1.begin()){cout<<setw(5)<<setfill('0')<<*it<<" "<<ch[*it].data<<" ";}else {cout<<setw(5)<<setfill('0')<<*it<<endl<<setw(5)<<setfill('0')<<*it<<" "<<ch[*it].data<<" ";}}cout<<"-1"<<endl;for (vector<int>::iterator it=cun2.begin();it!=cun2.end();it++){if (it==cun2.begin()){cout<<setw(5)<<setfill('0')<<*it<<" "<<ch[*it].data<<" ";}else {cout<<setw(5)<<setfill('0')<<*it<<endl<<setw(5)<<setfill('0')<<*it<<" "<<ch[*it].data<<" ";}}if (cun2.size()) cout<<"-1"<<endl;//特別注意,第三個(gè)測(cè)試點(diǎn)是沒有重的return 0; }

一個(gè)結(jié)構(gòu)體一存,兩個(gè)vector存儲(chǔ)結(jié)果,輸出的時(shí)候注意就行了。
52行,美滋滋。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的L2-002 链表去重 (25 分) 船新方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。