給定乙個帶整數鍵值的單鏈表l,本題要求你編寫程式,刪除那些鍵值的絕對值有重複的結點。即對任意鍵值k,只有鍵值或其絕對值等於k的第乙個結點可以被保留。同時,所有被刪除的結點必須被儲存在另外乙個鍊錶中。例如:另l為21→-15→-15→-7→15,則你必須輸出去重後的鍊錶21→-15→-7、以及被刪除的鍊錶-15→15。
輸入格式:
輸入第一行包含鍊錶第乙個結點的位址、以及結點個數n(<= 10
5的正整數)。結點位址是乙個非負的5位整數,null指標用-1表示。
隨後n行,每行按下列格式給出乙個結點的資訊:
address key next
其中address
是結點的位址,
key是絕對值不超過10
4的整數,
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 題意
鍵值的絕對值有重複的結點
刪除。並把沒有重複的鍊錶,和刪除的鍊錶輸出,
中間的數代表鍵值。
例如:00100
是起始值。把00100做為鍊錶的頭,按照一定的順序排得到
00100 21 23854
23854 -15 00000
00000 -15 99999
99999 -7 87654
87654 15 -1
兩條兩條的看,如:
00100 21 23854
23854 -15 00000
第一條和第二條的鍵值的絕對值不一樣21和-15,所以21這一條鏈就可以確定下來。
23854 -15 00000
00000 -15 99999
第二條和第三條的鍵值的絕對值都為15,所以中間的
00000
00000 -15
刪除掉,變成15
23854 -15
99999
。以此類推。 輸出
第一部分:沒有重複的
00100 21 23854
23854 -15
99999
99999 -7 -1
第二部分:刪除的
00000 -15 87654
87654 15 -1
思路:1.定義乙個結構體
struct nodea[100100]
a[00100].key=21 a[00100].next=23854
每次把當前的next放入a中就可以把這條鍊錶建立起來;
2.寫乙個方法來刪除
用乙個標記陣列flag來記錄鍵值是否重複,開始把第乙個位址做標記
每次把頭和尾傳進去例如00100 和 23854
如果a[23854].next的鍵值沒有用過就把23854和a[23854].next傳入再判斷
如果a[23854].next的鍵值用過,就讓a[00100].next=a[23854].next
這樣就刪除重複的了;再寫乙個結構體把刪除的
結點記錄下來。
然後把新鍊錶的頭尾00100和a[23854].next傳入再判斷。
**:
#include #include #include #include using namespace std;
struct node //放沒有重複的鍊錶
a[101000];
struct del //放刪除的鍊錶
b[101000];
int flag[100100]=;
int m=0;
void delet(int pre,int next)
else//重複時 }
void print1(int n)
printf("%05d %d %d\n",n,a[n].key,a[n].next); }
void print2()
printf("%05d %d -1\n",b[m-1].id,b[m-1].key);
} }int main()
flag[abs(a[start].key)]=1;
delet(start,a[start].next);
print1(start);
print2();
return 0;
}
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的第乙個結點可以被保留。同時,所有...
L2 002 鍊錶去重
時間限制 300 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定乙個帶整數鍵值的單鏈表l,本題要求你編寫程式,刪除那些鍵值的絕對值有重複的結點。即對任意鍵值k,只有鍵值或其絕對值等於k的第乙個結點可以被保留。同時,所有被刪除的結點必須被儲存在...