今天是資料結構的鄰接表

2021-08-22 18:20:56 字數 1114 閱讀 2277

#include

using namespace std;

class list

;class list head[6];

int main()

,,,,

,,,,

,,,,

,};cout

<

<

for(int

i=1;i

<6;i++)

}cout

<

}return 0;

}

於我乙個外行而言,今天第一次接觸class的語法,只能先告訴自己,這class都是一些固定的套路語法,寫完類之後,就可以在主函式宣告ptr和newcode了,同樣,我們設data陣列如上,便於直接的觀察。

我們安排了5行用於表出,每一行都是head【i】=i,輸出是這樣的:

接下來進入鄰接表演算法:

for(int j=0;j<14;j++){

if(data[j][0]==i)

{ newcode = new list;

newcode->val=data[j][1];

//宣告新節點,就假如拿i=1,j=0舉例,此時data[j][0]=1,=i,所以把

//data[j][1]中的2放入新節點的下乙個節點,在exe中顯示就是

//「頂點:1->2」

newcode->next=null;

while(ptr!=null)

ptr=ptr->next;

ptr=newcode ;//加入新節點

//while加下面兩句話刪了也沒太大影響。。。

cout<

① 實現方便

② 計算度數方便

③ 插入刪除操作簡單

缺點 ① 易造成浪費儲存空間

② 時間複雜度為o(n2)

優點 ① 節省空間

② 時間複雜度為o(n+e),比鄰接矩陣快

缺點 ① 求入度時,要先求其反轉線性表

② 插入刪除要先修改相關鏈結,麻煩費事

資料結構 鄰接多重表

上一節總結了有向圖的另外一種鏈式儲存結構 十字鍊錶,該節繼續總結無向圖的另一種鏈式儲存結構。鄰接表雖然已經能夠很好地表示無向圖了,但是無向圖訪問或者刪除一條邊 vi,vj 時需要同時訪問兩個鍊錶i和j並分別找到對應的邊結點,這給針對圖的邊的操作 標記或刪除 帶來不便利。鄰接多重表因此而演變過來的。鄰...

資料結構 鍊錶 鄰接表

在講解這個內容之前,先來回憶陣列能夠完成哪些操作 1 任意訪問乙個元素,時間複雜度為o 1 o 1 o 1 2 刪除乙個元素,要移動此後的所有元素,時間複雜度為o n o n o n 3 在任意位置之後增添乙個元素,要移動此後的所有元素,時間複雜度為o n o n o n 但如果我們的問題並不需要訪...

今天是寫詩的日子

今天是寫詩的日子 代騰飛 2006年12月31日 於成都 這2006年最後的一天 這新舊年輪交替的一天 這一天,總是那麼的特別,總是那麼的神秘,總是那麼的讓人感懷 注定了是讓我感懷萬千 心緒不寧的一天 注定了今天我不得不放下工作專注寫詩 寫下這了令人難以忘懷的時刻 今天是我寫詩的日子 因為今天不僅是...