易錯分析:
1. 可能存在多餘結點,即部分結點即使輸入了,也不在鍊錶中
2. 可能存在大於k的陣列不存在元素
解題過程:
建立乙個結構體陣列,並用空間換時間的方法,把位址作為下標,值作為結構體物件,其中儲存data和next。通過乙個三維向量儲存屬於不同類的元素,最後輸出即可。
程式:
#include #include #include using namespace std;
struct node
linklist[100001];
int main(int argc, char const *argv)
while (start != -1) // 這裡不要用for迴圈,因為會存在有多餘結點的情況。
int flag = 0; // 方便輸出
/* 這種輸出方式可以避免沒有大於k的情況而出現單獨輸出v[3]最後乙個元素出現問題 */
for (int i = 0; i < 3; i++)
for (int j = 0; j < v[i].size(); j++)
else
printf("%05d\n%05d %d ", v[i][j], v[i][j], linklist[v[i][j]].data);
}printf("-1");
return 0;
}
PAT乙1075 鍊錶元素分類 。。。
1075 鍊錶元素分類 25 分 給定乙個單鏈表,請編寫程式將鍊錶元素進行分類排列,使得所有負值元素都排在非負值元素的前面,而 0,k 區間內的元素都排在大於 k 的元素前面。但每一類內部元素的順序是不能改變的。例如 給定鍊錶為 18 7 4 0 5 6 10 11 2,k 為 10,則輸出應該為 ...
PAT1075 鍊錶元素分類
給定乙個單鏈表,請編寫程式將鍊錶元素進行分類排列,使得所有負值元素都排在非負值元素的前面,而 0,k 區間內的元素都排在大於k的元素前面。但每一類內部元素的順序是不能改變的。例如 給定鍊錶為 18 7 4 0 5 6 10 11 2,k為10,則輸出應該為 4 6 2 7 0 5 10 18 11。...
PAT 乙級 1075 鍊錶元素分類 25
00100 9 10 23333 10 27777 00000 0 99999 00100 18 12309 68237 6 23333 33218 4 00000 48652 2 1 99999 5 68237 27777 11 48652 12309 7 33218 33218 4 68237 ...