鄰接矩陣實現

2021-10-03 22:15:02 字數 2190 閱讀 6666

缺點

//

// created by carso on 2020/3/14.

//#ifndef c___grapmatrix_h

#define c___grapmatrix_h

#include #include #include // 定義頂點

templatestruct vertex

};// 定義邊

templatestruct edge

};// 定義鄰接矩陣

templateclass graphmatrix : public graph

// 析構函式

~graphmatrix()

delete v[i];}}

// 頂點操作

// 返回特定頂點的資料

virtual tv &vertex(int i)

// 入度

virtual int indegree(int i)

// 出度

virtual int outdegree(int i)

// 首個鄰接頂點

virtual int firstnbr(int i)

// 下乙個鄰接頂點, 注意不包含下標j

virtual int nextnbr(int i, int j)

return j;

}// 狀態

virtual vstatus &status(int i)

// 時間標籤

virtual int &dtime(int i)

virtual int &ftime(int i)

// 在遍歷樹中父節點

virtual int &parent(int i)

// 遍歷樹中的優先順序

virtual int &priority(int i)

// 頂點動態操作

// 插入頂點,返回編號

virtual int insert(tv const &vertex)

// 總頂點數+1

n++;

// 建立新邊

vector < edge* > newedgepoint = new vector(n, n, (edge*) null);

e.insert(newedgepoint);

// 頂點向量增加乙個頂點

return v.insert(vertex(vertex));

}// 刪除頂點和關聯邊

virtual tv remove(int i)

}e.remove(i);

n--;

// 刪除頂點

tv vbak = v.remove(i);

// 刪除所有的入邊

for (int k = 0; k < n; ++k)

}return vbak;

}// 邊操作

// 邊(i,j)是否存在

virtual bool exists(int i, int j)

// 邊的型別

virtual etype &type(int i, int j)

// 邊的資料

virtual te &edge(int i, int j)

// 邊的權重

virtual int &weight(int i, int j)

// 插入操作

virtual void insert(te const &edge, int w, int i, int j)

// 建立新邊

e[i][j] = new edge(edge, w);

e++;

v[i].outdegree++;

v[j].indegree++;

}// 邊刪除操作

virtual te remove(int i, int j)

te edge = edge(i, j);

// 刪除邊

delete e[i][j];

// 維持空邊

e[i][j] = null;

// 出度入度

v[i].outdegree--;

v[j].indegree--;

// 邊數

e--;

return edge;

}};#endif //c___grapmatrix_h

Dijkstra 鄰接矩陣實現

dijkstra使用鄰接矩陣儲存圖對比於鄰接表,會佔據大量記憶體,但通常此類題目不會卡記憶體。鄰接矩陣表示的有向圖的dijkstra 單源最短路徑 演算法 頂點節點編號預設範圍為 0,n 1 即n個頂點編號不允許取到n includeusing namespace std define inf 0x...

dj的鄰接矩陣實現

include using namespace std const int maxn 100,bignum 100001 int g maxn maxn dis maxn t maxn siz bool state maxn void creat int k for int i 0 i siz i ...

鄰接矩陣實現Prim演算法

prim是尋找最小生成樹的演算法,本文利用鄰接矩陣,乙個比較方便的方式來進行prim演算法。鄰接矩陣是儲存有向或無向圖的方式,若不帶權,一般用 0 或 inf 表示未連線,用 1 表示連線。如果帶權,可以用乙個矩陣來表示,1是未連線,若連線,則數值等於權值 也可以用兩個矩陣分別表示連線情況和權值。本...