图的创建(邻接表)
来源:互联网 发布:商家怎么加入淘宝联盟 编辑:程序博客网 时间:2024/06/05 09:38
转换成链表
特点:
可以直接查找一个节点的所有出度,但是想要知道一个几点的入度必须遍历整个图的存储结构.
#include <iostream>using namespace std;typedef char VextexType;typedef int EdgeType;#define VexNum 5struct EdgeNode;struct EdgeNode { VextexType name; EdgeType weight; EdgeNode *next;};typedef struct { VextexType name; EdgeNode *next;}VexNode;VexNode adjList[VexNum];void creatGraph(){ VextexType vextemp; EdgeType edgetemp; //input n vextex for ( int i=0; i<VexNum ; ++i ){ cin>>vextemp; adjList[i].name=vextemp; adjList[i].next =NULL; } for ( int i=0; i<VexNum*VexNum; ++i ){ cin>>edgetemp; if ( edgetemp==0 ){ continue; } EdgeNode *pEdge = new EdgeNode; pEdge->name = adjList[i%VexNum].name; pEdge->weight = edgetemp; pEdge->next = adjList[i/VexNum].next; if ( pEdge->next ){ while ( pEdge->next->next ){ pEdge->next =pEdge->next->next; } pEdge->next->next = pEdge; pEdge->next=NULL; } else { adjList[i/VexNum].next = pEdge; pEdge->next = NULL; } }}void destroyGrape(){ for ( int i=0; i<VexNum ;++i ){ EdgeNode *p = adjList[i].next; EdgeNode *q; while ( p ){ q = p; p = p->next; delete q; } }}void printGrape(){ for ( int i=0; i<VexNum; ++i ){ cout<<adjList[i].name<<"-->"; EdgeNode *p = adjList[i].next; while ( p ){ cout<<"("<<p->name<<","<<p->weight<<")"; p = p->next; } cout<<endl; }}int main(){ creatGraph(); printGrape(); destroyGrape();}
0 0
- 图的创建(邻接表)
- 邻接表的创建
- 邻接表的创建
- 邻接表创建图
- 邻接表创建图
- 邻接表创建图
- 图的邻接表的创建
- 图的邻接表创建输出
- 图的邻接表创建以及遍历
- 邻接链表创建图
- 图的邻接表的创建与遍历
- 图的邻接表的创建与遍历
- 邻接表实现的图创建及遍历源码
- 图的邻接表创建和深度优先搜索
- 邻接表无向图的创建和遍历(dfs)
- 图-深度优先广度优先,以及邻接表的创建
- 图的邻接表创建与遍历(C语言)
- (学习java)邻接表 图的简单创建
- hdu-2412-Party at Hali-Bula
- DOM对象内的元素属性遍历
- ARP
- vim 比较文件
- sql left join 用法
- 图的创建(邻接表)
- 函数式宏定义与普通函数
- Android中的Service详解
- 搭建spring MVC项目
- IPhone中SQLite3的使用
- ios SQLite3的使用
- 图的创建(十字链表)
- 学习笔记 第6章
- Java中获取前一天和后一天时间