輸入一組數,構建有序鍊錶 (C語言實現)

2021-10-07 18:23:21 字數 1095 閱讀 5283

要求說明

輸入一組數,構建有序鍊錶。

整體思路

用陣列儲存這組數,每次都去找最小值,把最小值構建結點並使用頭插法插入到單鏈表中。 然後將該值刪掉(為簡便起見,把值弄成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;

}

執行結果

由於我們每次都是找最小值,故是從小到大的順序插入。

而我們使用的是頭插法,故最終結果從大到小。

所以如果想要讓最終的單鏈表從小到大,每次都找最大值即可。

10

1 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 ...