真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何用C++實現(xiàn)L2-002鏈表去重

本篇內(nèi)容介紹了“如何用C++實現(xiàn)L2-002鏈表去重”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)主要為客戶提供服務(wù)項目涵蓋了網(wǎng)頁視覺設(shè)計、VI標(biāo)志設(shè)計、全網(wǎng)營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)、微商城、網(wǎng)站托管及成都網(wǎng)站維護、WEB系統(tǒng)開發(fā)、域名注冊、國內(nèi)外服務(wù)器租用、視頻、平面設(shè)計、SEO優(yōu)化排名。設(shè)計、前端、后端三個建站步驟的完善服務(wù)體系。一人跟蹤測試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為成都集裝箱行業(yè)客戶提供了網(wǎng)站開發(fā)服務(wù)。

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

輸入格式:

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

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

地址 鍵值 下一個結(jié)點

其中地址是該結(jié)點的地址,鍵值是絕對值不超過104的整數(shù),下一個結(jié)點是下個結(jié)點的地址。

輸出格式:

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

輸入樣例:

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

思路:
很多辦法都可以實現(xiàn),我選擇數(shù)組模擬動態(tài)內(nèi)存,先建立一個鏈表再遍歷,時間復(fù)雜度是O(n),格式控制還是printf好用。

#include
#include
#include
#define NULL -1

using namespace std;

typedef struct node {
	int val;
	unsigned int next;
}node;

node store[100001];//開辟一片模擬內(nèi)存
int flag[10001];//標(biāo)記結(jié)點

int main() {
	int num, startM;//p標(biāo)記當(dāng)前節(jié)點
	cin >> startM >> num;

	for (int i = 0; i < num; i++) {
		int now, val, next;
		cin >> now >> val >> next;
		store[now].val = val;
		store[now].next = next;
	}//鏈表構(gòu)建完成

	int p1=startM,startS=NULL;
	int p2 = 100000,pre;
	bool k = true;
	while (p1 != NULL) {
		if (flag[abs(store[p1].val)] != 0) {
			store[pre].next = store[p1].next;
			store[p2].next = p1;
			store[p1].next = NULL;
			p2 = p1;
			if (k) {
				k = false;
				startS = p2;
			}
			p1 = store[pre].next;
		}
		else {
			flag[abs(store[p1].val)] = 1;
			pre = p1;
			p1 = store[p1].next;
		}
	}//鏈表查重完成

	p1 = startM;
	while (p1 != NULL) {
		if(store[p1].next!=NULL)
			printf("%05d %d %05d\n",p1, store[p1].val, store[p1].next);
		else
			printf("%05d %d %d\n", p1, store[p1].val, store[p1].next);
		p1 = store[p1].next;
	}
	p1 = startS;
	while (p1 != NULL) {
		if (store[p1].next != NULL)
			printf("%05d %d %05d\n", p1, store[p1].val, store[p1].next);
		else
			printf("%05d %d %d\n", p1, store[p1].val, store[p1].next);
		p1 = store[p1].next;
	}
	return 0;
}

“如何用C++實現(xiàn)L2-002鏈表去重”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


文章標(biāo)題:如何用C++實現(xiàn)L2-002鏈表去重
網(wǎng)址分享:http://weahome.cn/article/gcjsis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部