作者:雷丶冷凝 | 来源:互联网 | 2024-10-27 14:49
本文详细介绍了如何使用C++实现邻接表数据结构。邻接表是一种用于表示图的数据结构,特别适用于稀疏图的存储。通过定义最大顶点数和顶点类型,本文展示了如何利用标准模板库(STL)中的容器来构建和操作邻接表,从而高效地管理和查询图中的节点及其连接关系。此外,还提供了具体的代码示例,帮助读者更好地理解和应用这一数据结构。
#include using namespace std; #define MAXNODE 100 typedef char VertexType; typedef int EdgeTypd; typedef struct EdgeNOde{ int node_index; EdgeTypd weight; struct EdgeNOde* next; } EdgeNOde; typedef struct VertexNode{ VertexType data; EdgeNOde * firstedge; } VertexNode, MyList[ MAXNODE] ; typedef struct { MyList mylist; int num_Edge, num_Node; } GraphList; void CreateGraph ( GraphList & G) { EdgeNOde * pe; cin>> G. num_Node>> G. num_Edge; for ( int i&#61; 0 ; i< G. num_Node; i&#43;&#43; ) { cin>> G. mylist[ i] . data; G. mylist[ i] . firstedge&#61; NULL ; } int vi, vj; for ( int j&#61; 0 ; j< G. num_Edge; j&#43;&#43; ) { cin>> vi>> vj; pe&#61; ( EdgeNOde* ) malloc ( sizeof ( EdgeNOde) ) ; pe- > node_index&#61; j; pe- > next&#61; G. mylist[ vi] . firstedge; G. mylist[ vi] . firstedge&#61; pe; pe&#61; ( EdgeNOde* ) malloc ( sizeof ( EdgeNOde) ) ; pe- > node_index&#61; vi; pe- > next&#61; G. mylist[ vj] . firstedge; G. mylist[ vj] . firstedge&#61; pe; } } int main ( ) { GraphList G; CreateGraph ( G) ; return 0 ; }
参考大佬代码写的模板