資料結構 無頭單鏈表氣泡排序的兩種方式

2021-10-10 14:28:51 字數 1447 閱讀 8277

交換節點資料的方式

交換節點指標的方式

# include

using

namespace std;

typedef

int elemtype;

typedef

struct linklist linklist,

*node;

// 建立無頭鍊錶

node createlist

(elemtype num)

// 新增節點, 頭插法, 需要換頭

void

insertlist

(node &head, elemtype num)

// 鍊錶氣泡排序 交換資料

void

bubblesort1

(node &head)

// 每次迴圈到每次最後交換位置

node flag =

null

, j =

null

, t =

null;do

j = j-

>next;}}

while

(flag !=

null);

}// 鍊錶排序 交換指標

/** 因為要考慮到是無頭鍊錶,

可以先用氣泡排序使得除頭節點之外有序,

然後再更換頭節點, 並把原來頭節點插入到合適的位置(一次插排)

*/void

bubblesort2

(node &head)

// 每次迴圈到每次最後交換位置, 對除頭節點外的節點進行排序

node flag =

null

, j =

null

, t =

null;do

j = j-

>next;}}

while

(flag !=

null);

// 更換頭節點, 並且將頭節點插入到合適的位置(一次插排)

node q = head, h = head;

head = head-

>next;

//node q = head->next;

while

(q->next !=

null

) q = q-

>next;}}

// 列印鍊錶

void printlist (node &head)

cout << endl;

}// 銷毀鍊錶

void

destorylist

(node &head)

}int

main()

輸出結果如下:

資料結構無頭單鏈表

template class slist node t data node head node tail int size public slist 複製建構函式 slist const slist sl slist 尾插 void slistpushback t data 尾刪 void slis...

資料結構 無頭結點的單鏈表

start reading 頭結點是用來標記單鏈表的乙個標誌,有些時候我們可以不使用頭結點,這時候操作就完全不一樣了。如何建立乙個無頭結點的單鏈表?不能在頭結點的資料域中放資料再變成假的第乙個資料節點在進行操作,那是自己騙自己。在單鏈表中我們直接頭結點進行解引用,但無頭結點的鍊錶最初其實就是乙個指標...

無頭單鏈表排序

1 無頭頭插單鏈表排序 思路 在原煉表中逐個比較大小,將最小的插入新的鍊錶 插入順序按照尾插的順序 include include typedef struct person per per head list per one,int num 頭插 void show per head 遍歷 whi...