欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

輸入格式:

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

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

地址 鍵值 下一個結點

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

輸出格式:

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

輸入樣例:

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)存,先建立一個鏈表再遍歷,時間復雜度是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];//開辟一片模擬內(nèi)存
int flag[10001];//標記結點

int main() {
	int num, startM;//p標記當前節(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;
	}//鏈表構建完成

	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 鏈表去重的文章就介紹到這了,更多相關C++ 鏈表去重內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Qt+QWidget實現(xiàn)簡約美觀的加載動畫

    Qt+QWidget實現(xiàn)簡約美觀的加載動畫

    這篇文章主要為大家詳細介紹了Qt如何結合QWidget實現(xiàn)簡約美觀的加載動畫,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • 淺談C語言的字符串分割

    淺談C語言的字符串分割

    下面小編就為大家?guī)硪黄獪\談C語言的字符串分割。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • Qt寫入Json文件的方法詳解(含源碼+注釋)

    Qt寫入Json文件的方法詳解(含源碼+注釋)

    在Qt庫中,為JSON的相關操作提供了完整的類支持,下面這篇文章主要給大家介紹了關于Qt寫入Json文件(含源碼+注釋)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • c++ 構造函數(shù)中調(diào)用虛函數(shù)的實現(xiàn)方法

    c++ 構造函數(shù)中調(diào)用虛函數(shù)的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猚++ 構造函數(shù)中調(diào)用虛函數(shù)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++ 虛函數(shù)表圖文解析

    C++ 虛函數(shù)表圖文解析

    最近學了設計模式中的簡單工廠模式,對多態(tài)有了具體的認識。于是補了補多態(tài)、虛函數(shù)、虛函數(shù)表相關的知識,本文介紹了C++ 虛函數(shù)表,感興趣的了解一下
    2021-05-05
  • C++中的memset用法詳解

    C++中的memset用法詳解

    memset是一個初始化函數(shù),作用是將某一塊內(nèi)存中的全部設置為指定的值,本文給大家介紹C++中的memset用法,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • C語言從猜數(shù)字游戲中理解數(shù)據(jù)結構

    C語言從猜數(shù)字游戲中理解數(shù)據(jù)結構

    猜數(shù)字是興起于英國的益智類小游戲,起源于20世紀中期,一般由兩個人或多人玩,也可以由一個人和電腦玩。游戲規(guī)則為一方出數(shù)字,一方猜,今天我們來用這個游戲案例理解數(shù)據(jù)結構
    2022-04-04
  • C語言中((type *)0) 和(type *0)區(qū)別小結

    C語言中((type *)0) 和(type *0)區(qū)別小結

    ((type *)0)?和?(type *0)?在 C 和 C++ 中有不同的含義和用途,本文主要介紹了C語言中((type *)0) 和(type *0)區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • C語言實現(xiàn)文本文件/二進制文件格式互換

    C語言實現(xiàn)文本文件/二進制文件格式互換

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)文本文件和二進制文件格式互換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 完美解決QT?QGraphicsView提升到QChartView報錯的問題

    完美解決QT?QGraphicsView提升到QChartView報錯的問題

    使用QT提供的QChartView來繪制圖表,提升QGraphicsView控件繼承QChartView后,然后將QGraphicsView提升到我們自己寫的類,怎么才能確保提升后編譯不報錯呢,下面小編給大家?guī)砹薗T QGraphicsView 提升到QChartView報錯解決方案,感興趣的朋友一起看看吧
    2023-05-05

最新評論