L2 002 鍊錶去重

2021-07-28 23:41:13 字數 2470 閱讀 5951

給定乙個帶整數鍵值的單鏈表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的第乙個結點可以被保留。同時,所有被刪除的結點必須被儲存在...