時間限制
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 23854struct node;23854 -15 99999
99999 -7 -1
00000 -15 87654
87654 15 -1
分析:(模擬)
00100-23854-00000-99999-87654-(-1)
21 -15 -15 -7 15
建立結點模型
首先建立完整鍊錶,在根據調節分開。
#include "cstdio
"#include
"map
"#include
"cmath
"#include
"vector
"#include
"iostream
"using
namespace
std;
struct
node;
map map1;///
通過map記錄各節點資訊,可憑位址快速訪問
map sta;///
判斷值是否重複
vector v1;///
去重後的鍊錶結點依次位址
vector v2;///
被刪除鍊錶各節點的位址
intmain()
///分成兩組
sta[abs(map1[address].value)]++;
v1.push_back(address);
while(1
)
else
}///分別輸出
for(__typeof(v1.begin())it=v1.begin();it!=v1.end();it++)
for(__typeof(v2.begin())it=v2.begin();it!=v2.end();it++)
}return0;
}
L2 002 鍊錶去重 模擬
給定乙個帶整數鍵值的單鏈表l,本題要求你編寫程式,刪除那些鍵值的絕對值有重複的結點。即對任意鍵值k,只有鍵值或其絕對值等於k的第乙個結點可以被保留。同時,所有被刪除的結點必須被儲存在另外乙個鍊錶中。例如 另l為21 15 15 7 15,則你必須輸出去重後的鍊錶21 15 7 以及被刪除的鍊錶 15...
L2 002 鍊錶去重 模擬鍊錶
l2 002 鍊錶去重 25 分 給定乙個帶整數鍵值的鍊錶 l,你需要把其中絕對值重複的鍵值結點刪掉。即對每個鍵值 k,只有第乙個絕對值等於 k 的結點被保留。同時,所有被刪除的結點須被儲存在另乙個鍊錶上。例如給定 l 為 21 15 15 7 15,你需要輸出去重後的鍊錶 21 15 7,還有被刪...
L2 002 鍊錶去重
給定乙個帶整數鍵值的單鏈表l,本題要求你編寫程式,刪除那些鍵值的絕對值有重複的結點。即對任意鍵值k,只有鍵值或其絕對值等於k的第乙個結點可以被保留。同時,所有被刪除的結點必須被儲存在另外乙個鍊錶中。例如 另l為21 15 15 7 15,則你必須輸出去重後的鍊錶21 15 7 以及被刪除的鍊錶 15...