數據結構實驗之鏈表一:順序建立鏈表
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
輸入N個整數,按照輸入的順序建立單鏈表存儲,並遍歷所建立的單鏈表,輸出這些數據。
Input
第一行輸入整數的個數N;
第二行依次輸入每個整數。
Output
輸出這組整數。
Sample Input
8 12 56 4 6 55 15 33 62
Sample Output
12 56 4 6 55 15 33 62
Hint
不得使用數組!
Source
數據結構實驗之鏈表二:逆序建立鏈表
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
輸入整數個數N,再輸入N個整數,按照這些整數輸入的相反順序建立單鏈表,並依次遍歷輸出單鏈表的數據。
Input
第一行輸入整數N;;
第二行依次輸入N個整數,逆序建立單鏈表。
Output
依次輸出單鏈表所存放的數據。
Sample Input
10 11 3 5 27 9 12 43 16 84 22
Sample Output
22 84 16 43 12 9 27 5 3 11
Hint
不能使用數組!
Source
數據結構實驗之鏈表三:鏈表的逆置
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
輸入多個整數,以-1作爲結束標誌,順序建立一個帶頭結點的單鏈表,之後對該單鏈表的數據進行逆置,並輸出逆置後的單鏈表數據。
Input
輸入多個整數,以-1作爲結束標誌。
Output
輸出逆置後的單鏈表數據。
Sample Input
12 56 4 6 55 15 33 62 -1
Sample Output
62 33 15 55 6 4 56 12
Hint
不得使用數組。
Source
數據結構實驗之鏈表四:有序鏈表的歸併
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
分別輸入兩個有序的整數序列(分別包含M和N個數據),建立兩個有序的單鏈表,將這兩個有序單鏈表合併成爲一個大的有序單鏈表,並依次輸出合併後的單鏈表數據。
Input
第一行輸入M與N的值;
第二行依次輸入M個有序的整數;
第三行依次輸入N個有序的整數。
Output
輸出合併後的單鏈表所包含的M+N個有序的整數。
Sample Input
6 5 1 23 26 45 66 99 14 21 28 50 100
Sample Output
1 14 21 23 26 28 45 50 66 99 100
Hint
不得使用數組!
Source
數據結構實驗之鏈表五:單鏈表的拆分
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
輸入N個整數順序建立一個單鏈表,將該單鏈表拆分成兩個子鏈表,第一個子鏈表存放了所有的偶數,第二個子鏈表存放了所有的奇數。兩個子鏈表中數據的相對次序與原鏈表一致。
Input
第一行輸入整數N;;
第二行依次輸入N個整數。
Output
第一行分別輸出偶數鏈表與奇數鏈表的元素個數;
第二行依次輸出偶數子鏈表的所有數據;
第三行依次輸出奇數子鏈表的所有數據。
Sample Input
10 1 3 22 8 15 999 9 44 6 1001
Sample Output
4 6 22 8 44 6 1 3 15 999 9 1001
Hint
不得使用數組!
Source
數據結構實驗之鏈表六:有序鏈表的建立
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
輸入N個無序的整數,建立一個有序鏈表,鏈表中的結點按照數值非降序排列,輸出該有序鏈表。
Input
第一行輸入整數個數N;
第二行輸入N個無序的整數。
Output
依次輸出有序鏈表的結點值。
Sample Input
6 33 6 22 9 44 5
Sample Output
5 6 9 22 33 44
Hint
不得使用數組!
Source
數據結構實驗之鏈表七:單鏈表中重複元素的刪除
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
按照數據輸入的相反順序(逆位序)建立一個單鏈表,並將單鏈表中重複的元素刪除(值相同的元素只保留最後輸入的一個)。
Input
第一行輸入元素個數 n (1 <= n <= 15);
第二行輸入 n 個整數,保證在 int 範圍內。
Output
第一行輸出初始鏈表元素個數;
第二行輸出按照逆位序所建立的初始鏈表;
第三行輸出刪除重複元素後的單鏈表元素個數;
第四行輸出刪除重複元素後的單鏈表。
Sample Input
10 21 30 14 55 32 63 11 30 55 30
Sample Output
10 30 55 30 11 63 32 55 14 30 21 7 30 55 11 63 32 14 21
Hint
Source
不得使用數組!
數據結構實驗之鏈表八:Farey序列
Time Limit: 10 ms Memory Limit: 600 KiB
Problem Description
Farey序列是一個這樣的序列:其第一級序列定義爲(0/1,1/1),這一序列擴展到第二級形成序列(0/1,1/2,1/1),擴展到第三極形成序列(0/1,1/3,1/2,2/3,1/1),擴展到第四級則形成序列(0/1,1/4,1/3,1/2,2/3,3/4,1/1)。以後在每一級n,如果上一級的任何兩個相鄰分數a/c與b/d滿足(c+d)<=n,就將一個新的分數(a+b)/(c+d)插入在兩個分數之間。對於給定的n值,依次輸出其第n級序列所包含的每一個分數。
Input
輸入一個整數n(0<n<=100)
Output
依次輸出第n級序列所包含的每一個分數,每行輸出10個分數,同一行的兩個相鄰分數間隔一個製表符的距離。
Sample Input
6
Sample Output
0/1 1/6 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 5/6 1/1
Hint
Source
數據結構實驗之鏈表九:雙向鏈表
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
學會了單向鏈表,我們又多了一種解決問題的能力,單鏈表利用一個指針就能在內存中找到下一個位置,這是一個不會輕易斷裂的鏈。但單鏈表有一個弱點——不能回指。比如在鏈表中有兩個節點A,B,他們的關係是B是A的後繼,A指向了B,便能輕易經A找到B,但從B卻不能找到A。一個簡單的想法便能輕易解決這個問題——建立雙向鏈表。在雙向鏈表中,A有一個指針指向了節點B,同時,B又有一個指向A的指針。這樣不僅能從鏈表頭節點的位置遍歷整個鏈表所有節點,也能從鏈表尾節點開始遍歷所有節點。對於給定的一列數據,按照給定的順序建立雙向鏈表,按照關鍵字找到相應節點,輸出此節點的前驅節點關鍵字及後繼節點關鍵字。
Input
第一行兩個正整數n(代表節點個數),m(代表要找的關鍵字的個數)。第二行是n個數(n個數沒有重複),利用這n個數建立雙向鏈表。接下來有m個關鍵字,每個佔一行。
Output
對給定的每個關鍵字,輸出此關鍵字前驅節點關鍵字和後繼節點關鍵字。如果給定的關鍵字沒有前驅或者後繼,則不輸出。
注意:每個給定關鍵字的輸出佔一行。
一行輸出的數據之間有一個空格,行首、行末無空格。
Sample Input
10 3
1 2 3 4 5 6 7 8 9 0
3
5
0
Sample Output
2 4
4 6
9
Hint
Source