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