L2 002 鍊錶去重

2021-08-16 19:13:28 字數 900 閱讀 5960

from:

給乙個鍊錶,去重(去掉值或者絕對值相等的),先輸出刪除後的鍊錶,再輸出刪除了的鍊錶。

分析:用結構體陣列儲存這個鍊錶,大小為maxn = 100000,node[i]表示位址為i的結點。在結構體中定義乙個num變數,將num變數先初始化為2 * maxn。通過改變num變數的值最後sort排序來改變鍊錶的順序。

將沒有刪除的結點的num標記為cnt1,cnt1為當前沒有刪除的結點的個數;將需要刪除的結點的num標記為maxn + cnt2,cnt2表示當前刪除了的結點的個數,因為一開始初始化為了2 * maxn,所以我們可以通過對num排序達到:num = 0~maxn為不刪除結點,num = maxn~2maxn為刪除結點,num = 2maxn為無效結點

這樣sort後就會按照需要輸出的順序將結點排序,我們只需要輸出前cnt1+cnt2個結點即可~~~~

#include 

using

namespace

std;

const

int maxn=100000;

const

int inf=0x3f3f3f3f;

struct node

for (int i=0;iint a;

cin >> a;

cin >> node[a].key >> node[a].next;

node[a].add=a;

}for (int i=begin;i!=-1;i=node[i].next)

else

}sort(node,node+maxn);

int cnt=cnt1+cnt2;

for (int i=0;iif (i!=cnt1-1&&i!=cnt-1)

else

}}

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的第乙個結點可以被保留。同時,所有...