7 8 鍊錶去重 25分

2021-10-17 03:24:31 字數 2808 閱讀 8875

**

給定乙個帶整數鍵值的鍊錶 l,你需要把其中絕對值重複的鍵值結點刪掉。即對每個鍵值 k,只有第乙個絕對值等於 k 的結點被保留。同時,所有被刪除的結點須被儲存在另乙個鍊錶上。例如給定 l 為 21→-15→-15→-7→15,你需要輸出去重後的鍊錶 21→-15→-7,還有被刪除的鍊錶 -15→15。

輸入格式:

輸入在第一行給出 l 的第乙個結點的位址和乙個正整數 n(≤10

​5,為結點總數)。乙個結點的位址是非負的 5 位整數,空位址 null 用 -1 來表示。

隨後 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`

#include

#include

using

namespace std;

int from[

100000

], to[

100000

], flag[

100000

], defto[

100000

], deff[

100000];

intmain()

flag[

abs(from[f])]

=1; f1 = f;

while

(to[f1]!=-

1)else

else

if(to[to[f1]]!=

-1) to[f1]

=to[to[f1]];

//原鍊錶指向下乙個

else to[f1]=-

1;}}

while

(to[f]!=-

1)printf

("%05d %d %d\n"

, f, from[f],-

1);if

(def !=-1

)printf

("%05d %d %d\n"

, def, deff[def]

, defto[def]);

}}

更新**②

#include

using

namespace std;

int value[

100001

], next1[

100001

], flag[

100001];

intmain()

flag[

abs(value[start])]

=1;int now = start,dels=-1

,dell=-1

;while

(next1[now]!=-

1)else

else

if(dels ==-1

)else}}

int i=start;

for( i = start; next1[i]!=-

1; i = next1[i]

)printf

("%05d %d %05d\n"

, i, value[i]

, next1[i]);

printf

("%05d %d -1\n"

, i, value[i]);

if(dels!=-1

)}

更新**③

給我整吐了,調**一小時,居然是因為沒有初始化del_head,輸出四個測試點都超時了。

#include

#include

#include

using

namespace std;

const

int n =

1000010

;int in_head,del_head =-1

;int _now[n]

,now_next[n]

;int del_next[n]

;int st[n]

;int

main()

if(in_head ==-1

)int temp = in_head, now_temp =-1

;int deltemp =-1

;doelse

//當前的絕對值沒有被使用過;

st[val]=1

;}else

else

} temp = now_next[temp];}

while

(temp !=-1

);now_next[now_temp]=-

1;del_next[deltemp]=-

1;for(

int i = in_head;

~i; i=now_next[i])if

(del_head !=-1

)}return0;

}

鍊錶去重 25 分

給定乙個帶整數鍵值的鍊錶 l,你需要把其中絕對值重複的鍵值結點刪掉。即對每個鍵值 k,只有第乙個絕對值等於 k 的結點被保留。同時,所有被刪除的結點須被儲存在另乙個鍊錶上。例如給定 l 為 21 15 15 7 15,你需要輸出去重後的鍊錶 21 15 7,還有被刪除的鍊錶 15 15。輸入在第一行...

7 103 鍊錶去重 25分

給定乙個帶整數鍵值的鍊錶 l,你需要把其中絕對值重複的鍵值結點刪掉。即對每個鍵值 k,只有第乙個絕對值等於 k 的結點被保留。同時,所有被刪除的結點須被儲存在另乙個鍊錶上。例如給定 l 為 21 15 15 7 15,你需要輸出去重後的鍊錶 21 15 7,還有被刪除的鍊錶 15 15。輸入在第一行...

7 4 鍊錶去重 25分

給定乙個帶整數鍵值的鍊錶 l,你需要把其中絕對值重複的鍵值結點刪掉。即對每個鍵值 k,只有第乙個絕對值等於 k 的結點被保留。同時,所有被刪除的結點須被儲存在另乙個鍊錶上。例如給定 l 為 21 15 15 7 15,你需要輸出去重後的鍊錶 21 15 7,還有被刪除的鍊錶 15 15。輸入在第一行...