L2 002 鍊錶去重

2021-09-08 04:46:11 字數 1948 閱讀 9321

時間限制

300 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者

陳越

給定乙個帶整數鍵值的單鏈表l,本題要求你編寫程式,刪除那些鍵值的絕對值有重複的結點。即對任意鍵值k,只有鍵值或其絕對值等於k的第乙個結點可以被保留。同時,所有被刪除的結點必須被儲存在另外乙個鍊錶中。例如:另l為21→-15→-15→-7→15,則你必須輸出去重後的鍊錶21→-15→-7、以及被刪除的鍊錶-15→15。

輸入格式:

輸入第一行包含鍊錶第乙個結點的位址、以及結點個數n(<= 105 的正整數)。結點位址是乙個非負的5位整數,null指標用-1表示。

隨後n行,每行按下列格式給出乙個結點的資訊:

address key next

輸出格式:

首先輸出去重後的鍊錶,然後輸出被刪除結點組成的鍊錶。每個結點佔一行,按輸入的格式輸出。

輸入樣例:

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

1

//l2-002. 鍊錶去重2/*

3輸入得到的是亂序鍊錶,排個順序讓它成為正常的序列

4然後開始輸出鍊錶,用集合set來輔助看是不是絕對之已經輸出過,如果是,就放在刪除鍊錶所在的鏈 5*/

67 #include 8 #include 9 #include

10 #include //

abs函式

11using

namespace

std;

1213

string

firstadd;

14int

n;15

struct

nodea[10005],b[10005],d[10005

]; 22

23bool

operator

<(const node &p,const node &p1)

2627

2829

//讀入資料

30void

readdata()

37}

3839

void

printdata()43}

4445

//讓鍊錶sortnum編號有序

46void

findsortnum()56}

57}58}

5960

//找到 去重煉表b 和 刪除鍊錶 d

61set

set1;

62int b1=0,d1=0;63

void

findans()

69else72}

73//

修正鍊錶

74for(int i=1;i)

77 b[b1].next="-1"

;7879for(int i=1;i)

82 d[d1].next="-1"

;83}84

85//

輸出去重煉表和 刪除鍊錶

86void

printans()

90for(int i=1;i<=d1;i++)

93}

9495

96int

main()

L2 002 鍊錶去重

給定乙個帶整數鍵值的單鏈表l,本題要求你編寫程式,刪除那些鍵值的絕對值有重複的結點。即對任意鍵值k,只有鍵值或其絕對值等於k的第乙個結點可以被保留。同時,所有被刪除的結點必須被儲存在另外乙個鍊錶中。例如 另l為21 15 15 7 15,則你必須輸出去重後的鍊錶21 15 7 以及被刪除的鍊錶 15...

L2 002 鍊錶去重

給定乙個帶整數鍵值的單鏈表l,本題要求你編寫程式,刪除那些鍵值的絕對值有重複的結點。即對任意鍵值k,只有鍵值或其絕對值等於k的第乙個結點可以被保留。同時,所有被刪除的結點必須被儲存在另外乙個鍊錶中。例如 另l為21 15 15 7 15,則你必須輸出去重後的鍊錶21 15 7 以及被刪除的鍊錶 15...

L2 002 鍊錶去重

l2 002.鍊錶去重 時間限制 300 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定乙個帶整數鍵值的單鏈表l,本題要求你編寫程式,刪除那些鍵值的絕對值有重複的結點。即對任意鍵值k,只有鍵值或其絕對值等於k的第乙個結點可以被保留。同時,所有...