L2 4 鍊錶去重(25 分)

2021-08-17 16:55:35 字數 1328 閱讀 8355

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

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

0​5​

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

隨後 n 行,每行按以下格式描述乙個結點:

其中位址是該結點的位址,鍵值是絕對值不超過10

​4​​

首先輸出去重後的鍊錶,然後輸出被刪除的鍊錶。每個結點佔一行,按輸入的格式輸出。

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

原來鍊錶還可以這樣玩,雖然這並不是鍊錶,,比賽的時候我用結構體陣列模擬了鍊錶,刪除操作也是,但只拿到了19分,隨後看到了下面這種做法,可以說是非常簡便了

#include #include #include #include #include using namespace std;

const int n = 1e5 + 3;

struct nodelist[n];

int main()

int ans[n], k1 = 0;

int res[n], k2 = 0;

bool vis[n];

memset(vis, 0, sizeof(vis));

int p = head;

while(p != -1)

else

p = list[p].next;

}printf("%05d", head);

for(int i = 1; i < k1; i++)

printf(" %d -1\n", list[ans[k1-1]].data);

if(k2 > 0)

printf(" %d -1", list[res[k2-1]].data);

}return 0;

}

L2 4 鍊錶去重 25分

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

L2 4 鍊錶去重

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

L2 4 彩虹瓶 (25 分

題目鏈結 彩虹瓶的製作過程 並不 是這樣的 先把一大批空瓶鋪放在裝填場地上,然後按照一定的順序將每種顏色的小球均勻撒到這批瓶子裡。假設彩虹瓶裡要按順序裝 n 種顏色的小球 不妨將順序就編號為 1 到 n 現在工廠裡有每種顏色的小球各一箱,工人需要一箱一箱地將小球從工廠裡搬到裝填場地。如果搬來的這箱小...