單連結串列排序的演算法,連結串列選擇排序的介紹

2025-04-16 17:50:13 字數 2143 閱讀 9363

1樓:網友

非常奇怪的想法,單連結串列是在建立的過程中自動排序的,為御悔什麼要重新排序呢?為什麼要用氣泡排序呢?冒泡排團巧序是所有排序方法中最慢效率最低的方法?

下面的程式實現了乙個有鎮或正序連結串列的建立過程,輸入一串數字,以0結束,然後自動輸出排序結果:

#include

#include

#include

struct tlink {

int data;

struct tlink * next;

struct tlink * insert(struct tlink * root, int data)

tlink * n = tlink *)malloc(sizeof(struct tlink));

memset(n, 0, sizeof(struct tlink));

n->data = data;

if (!root) return n;

struct tlink * p = root;

if (p->data > data) {

n->next = p;

return n;

struct tlink * q = 0 ;

while(p) {

q = p->next ;

if(!q) {

p->next = n;

break;

if (q->data > data) {

n->next = q;

p->next = n;

break;

p = q;

return root;

int main(void)

struct tlink * root = 0; int data = 0;

do {printf("請輸入輸入,輸入0表示結束。");

scanf("%d", data);

root = insert(root, data);

while(data);

while(root) {

printf("%d\t", root->data );

root = root ->next ;

end while

system("pause");

return 0;

連結串列選擇排序的介紹

2樓:網友

連結串列選擇排序是使用連結串列實現選擇排序,一般的選擇排序是在陣列中實現的,與在陣列中實現的選擇排序不同的是,連結串列中選擇排序時每次交換資料是通過交換連結串列的節點來實現的,由於資料是存放與連結串列的節點中的,所以交換節點就等價於交換了資料的順序。

23_順序表和單連結串列的對比分析

3樓:戶如樂

在 中增加乙個查詢操作

在 中實現。

在 中實現。

當插入的為類型別時,需要將類型別繼承自 object 類

對於內建基礎型別,順序表和單連結串列的效率不相上下

對於自定義類型別順序表在效率上低於單連結串列

2) 插入和刪除:

順序表:涉及大量資料物件的複製操作,因此對於自定義的複雜類型別插入和刪除操作效率低。

單連結串列:只涉及指標操作,效率與資料物件無關

3) 資料訪問:

順序表:隨機訪問,可直接定位資料物件。

單連結串列:順序訪問,必須從頭訪問資料物件,無法直接定位。

4) 工程開發中的選擇:

順序表

資料元素的型別相對簡單,不涉及深拷貝;

資料元素相對穩定,訪問操作遠多於插入和刪除操作。

單連結串列:歷困。

資料元素的型別相對複雜,複製操作相對耗時的型別。

資料元素不穩定局基,需要經常插入和刪除,訪問操作較少。

連結串列是順序表嗎?單連結串列與順序表的區別

不是。順序表是線性表用陣列表示的方式。線性表可以用陣列表頃賣吵示 即順序表 也可以用連結串列表示,還可以基於雀侍雜湊表配橡示,所以順序表不是連結串列。.基於儲存的考慮。順序表的儲存空間是靜態分配的,在程式執行之前必須明確規定它的儲存規模,也就是說事先對 maxsize 要有合適的設定,過大造成浪費,過小造成...

如何用C語言編寫連結串列結點查詢的演算法

include using namespace std class chain class chainnode class chain void fun 查詢函式 private chainnode first 指向第一個節點指標 chain chain chain chain void chain...

連結串列作為引數可否傳形參,連結串列的引數問題

你的看法沒有錯,因為你的程式僅僅拷貝了第乙個節點,而第二個乃至以後的節點仍然會受到影響。我想這裡涉及到乙個程式設計的問題,直觀上說如果你不復制第二個練表,不可能讓乙個如你的nochange 函式不去改變第乙個練表值的。原因很簡單,你的nochange 修改了練表節點的值,這個修改假如不影響你原來的練...