最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ 實(shí)現(xiàn)L2-002 鏈表去重

 更新時(shí)間:2021年07月06日 15:55:19   作者:一只特立獨(dú)行的貓  
這篇文章主要介紹了C++ 實(shí)現(xiàn)L2-002 鏈表去重,本文通過(guò)簡(jiǎn)要的案例,解題思路講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

給定一個(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(≤10​5​​,為結(jié)點(diǎn)總數(shù))。一個(gè)結(jié)點(diǎn)的地址是非負(fù)的 5 位整數(shù),空地址 NULL 用 −1 來(lái)表示。

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

地址 鍵值 下一個(gè)結(jié)點(diǎn)

其中地址是該結(jié)點(diǎn)的地址,鍵值是絕對(duì)值不超過(guò)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í)現(xiàn),我選擇數(shù)組模擬動(dòng)態(tài)內(nèi)存,先建立一個(gè)鏈表再遍歷,時(shí)間復(fù)雜度是O(n),格式控制還是printf好用。

#include<iostream>
#include<cstdio>
#include<cmath>
#define NULL -1

using namespace std;

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

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

int main() {
	int num, startM;//p標(biāo)記當(dāng)前節(jié)點(diǎn)
	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;
}

到此這篇關(guān)于C++ 實(shí)現(xiàn)L2-002 鏈表去重的文章就介紹到這了,更多相關(guān)C++ 鏈表去重內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談 C++17 里的 Visitor 模式

    淺談 C++17 里的 Visitor 模式

    Visitor模式經(jīng)常用于將更新的設(shè)計(jì)封裝在一個(gè)類中,并且由待更改的類提供一個(gè)接受接口,其關(guān)鍵技術(shù)在于雙分派技術(shù),本文主要介紹 C++17 里的 Visitor 模式的相關(guān)資料,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 利用C語(yǔ)言將點(diǎn)分十進(jìn)制的IP字符串轉(zhuǎn)成4個(gè)整數(shù)

    利用C語(yǔ)言將點(diǎn)分十進(jìn)制的IP字符串轉(zhuǎn)成4個(gè)整數(shù)

    這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)將點(diǎn)分十進(jìn)制的IP字符串轉(zhuǎn)成4個(gè)整數(shù),文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01
  • MFC實(shí)現(xiàn)漂亮界面之美化按鈕

    MFC實(shí)現(xiàn)漂亮界面之美化按鈕

    這篇文章主要為大家詳細(xì)介紹了MFC實(shí)現(xiàn)漂亮界面之美化按鈕,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C語(yǔ)言之單向鏈表詳解及實(shí)例代碼

    C語(yǔ)言之單向鏈表詳解及實(shí)例代碼

    這篇文章主要介紹了C語(yǔ)言之單向鏈表的相關(guān)資料,及實(shí)例代碼,幫助大家學(xué)習(xí)參考,,需要的朋友可以參考下
    2016-09-09
  • 一篇文章帶你了解C語(yǔ)言內(nèi)存對(duì)齊解決的問(wèn)題

    一篇文章帶你了解C語(yǔ)言內(nèi)存對(duì)齊解決的問(wèn)題

    內(nèi)存對(duì)齊的目的是為了提高CPU讀寫(xiě)內(nèi)存里數(shù)據(jù)的速度?,F(xiàn)代的CPU讀取內(nèi)存并不是一個(gè)一個(gè)字節(jié)挨著讀取,這樣做的效率非常低。現(xiàn)代的CPU一般以4個(gè)字節(jié)(32bit數(shù)據(jù)總線)或者8個(gè)字節(jié)(64bit數(shù)據(jù)總線)為一組,一組一組地讀寫(xiě)內(nèi)存里的數(shù)據(jù)
    2021-08-08
  • C語(yǔ)言三子棋小游戲的實(shí)現(xiàn)代碼

    C語(yǔ)言三子棋小游戲的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言三子棋小游戲的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++?opencv圖像處理實(shí)現(xiàn)圖片邊緣檢測(cè)示例

    C++?opencv圖像處理實(shí)現(xiàn)圖片邊緣檢測(cè)示例

    這篇文章主要為大家介紹了C++?opencv實(shí)現(xiàn)圖片邊緣檢測(cè)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • C和C++11之enum枚舉的具體使用方法

    C和C++11之enum枚舉的具體使用方法

    這篇文章主要介紹了C和C++11之enum枚舉的具體使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳解C++的String類的字符串分割實(shí)現(xiàn)

    詳解C++的String類的字符串分割實(shí)現(xiàn)

    這篇文章主要介紹了詳解C++的String類的字符串分割實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • c++中堆棧及創(chuàng)建對(duì)象示例代碼

    c++中堆棧及創(chuàng)建對(duì)象示例代碼

    這篇文章主要給大家詳細(xì)介紹了c++如何實(shí)現(xiàn)堆棧及創(chuàng)建對(duì)象,文中先進(jìn)行了簡(jiǎn)單的介紹,而后給出了詳細(xì)的示例代碼及注釋,相信對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2016-12-12

最新評(píng)論

西青区| 湖南省| 双流县| 双辽市| 淳化县| 荆州市| 郧西县| 永新县| 凉城县| 武夷山市| 萍乡市| 阿尔山市| 巴彦县| 南昌县| 巴林右旗| 绥棱县| 察哈| 会东县| 新邵县| 长沙县| 漳浦县| 古交市| 蒲江县| 宝清县| 芮城县| 深水埗区| 华宁县| 依兰县| 宜君县| 湖南省| 安丘市| 甘肃省| 汉中市| 汪清县| 长葛市| 吉木萨尔县| 巴楚县| 临邑县| 子长县| 肃宁县| 泗阳县|