鄰接表排序(鍊錶排序)

2021-09-13 01:25:23 字數 740 閱讀 5684

採取冒泡的思想,一次選取兩個,再套一層迴圈即可,但是由於在鄰接表中表頭節點和邊表節點的資料型別並不一樣,因此這相當於乙個沒有頭結點的鍊錶的排序。

可以優化一下的是:如果走一遍沒有發生交換,說明已經有序了,因此就不用再進行冒泡了。可以直接跳出迴圈,減少迴圈次數。

在邊表節點中,我儲存的是string型別的資料,按照其在表頭節點中的索引順序從大到小排序,這樣便於在dfs和bfs的過程中對同乙個圖得到一樣的結果,而不因使用者輸入的不同而使得結果不同。

mapmmp;//對映字串和座標之間的關係

struct arcnode//邊表節點

;struct vertexnode//頂點表節點

;

class graph

;

void graph::sortlist(vertexnode nil)

if(cnt<=1)

//printf("cnt=%d\n",cnt);

arcnode *tmp;

int ok=1;

for(int i=0;inext;

ok=1;

while(now)

pre=now;

now=pre->next;

}if(ok==1)

}/*pre=nil.firstarc;

while(pre)

*/}

void graph::sort()

鍊錶 排序鍊錶

樂扣原題 definition for singly linked list.public class listnode class solution 將鍊錶轉化為陣列 listlist new arraylist while null head 陣列遞增排序 collections.sort li...

鍊錶與鄰接表

對於稀疏圖來說,m要遠遠小於n21 2 3 4 5 6 4 5 1 4 9 4 3 8 1 2 5 2 4 6 1 3 7 第一行兩個整數n m。n表示頂點個數 頂點編號為1 n m表示邊的條數。接下來m行表示,每行有3個數x y z,表示頂點x到頂點y的邊的權值為z。下圖就是一種使用鍊錶來實現鄰接...

鍊錶與鄰接表

鍊錶 陣列是一種支援隨機訪問,但不支援在任意位置插入或刪除元素的資料結構。與之相對應,鍊錶支援在任意位置插入或刪除,但只能按順序依次訪問其中的元素。我們可以用乙個struct 表示鍊錶節點,其中可以儲存任意資料 另外用prev和next兩個指標指向前後相鄰的兩個節點,構成乙個常見的雙向鍊錶結構。為了...