要求說明
輸入一組數,構建有序鍊錶。
整體思路
用陣列儲存這組數,每次都去找最小值,把最小值構建結點並使用頭插法插入到單鏈表中。 然後將該值刪掉(為簡便起見,把值弄成max)。
這裡使用的是類直接插入的排序方法。
**實現
#include
#include
#define max 1000000
// 單鏈表結構體定義
typedef
struct node
node;
// 順序列印鍊錶
void
printnode
(node* l)
}int
main()
// 表頭結點head 和 需要插入的結點s
node *head,
*s;// 生成表頭結點,表頭結點不存放資料
head =
(node*
)malloc
(sizeof
(node));
head->next =
null
;for
(i=0
; i// 頭插法構建單鏈表
s =(node*
)malloc
(sizeof
(node));
s->val = min;
s->next = head->next;
head->next = s;
// 初始化最小值標識
arr[min_index]
=max;
min = max;
}// 輸出單鏈表
printnode
(head)
;return0;
}
執行結果
由於我們每次都是找最小值,故是從小到大的順序插入。
而我們使用的是頭插法,故最終結果從大到小。
所以如果想要讓最終的單鏈表從小到大,每次都找最大值即可。
101 9 5 4 3 2 1 5 8 6
9 8 6 5 5 4 3 2 1 1
C語言 K個一組翻轉鍊錶
給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1 4 ...
c 使用單向鍊錶儲存一組有序資料 鍊錶初相識
我們知道陣列需要一塊連續的記憶體空間來儲存資料,而鍊錶恰恰相反,它並不需要連續的記憶體空間,它通過 指標 將零散的記憶體塊連線起來使用,通常將記憶體塊稱為鍊錶的 結點 單鏈表 既然是儲存資料,那就少不了插入和刪除操作,與陣列不同,鍊錶的插入和刪除不需要搬移資料,插入 刪除 從圖中可以看出鍊錶的插入和...
C語言實現查詢一組數中的眾數
實現思路 第一步將無序陣列排序 第二步排好序的陣列找出連續相等最多的那個數字 比如 已排好序的陣列如 就找出連續相等次數最多的數字3 include 交換兩個整數的值 void swap int p,int q 快速排序 void quick sort int a,int low,int high ...