#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年最後的一天 這新舊年輪交替的一天 這一天,總是那麼的特別,總是那麼的神秘,總是那麼的讓人感懷 注定了是讓我感懷萬千 心緒不寧的一天 注定了今天我不得不放下工作專注寫詩 寫下這了令人難以忘懷的時刻 今天是我寫詩的日子 因為今天不僅是...