计科《算法设计与分析》第四周作业——图的表示
2014-04-07 13:31
363 查看
题目如下:
给定图数据文件(tinyG.txt)(文件内容见下图),计算得到图的邻接矩阵,并把邻接矩阵保存到文件(tinyG_matrix.txt)中。类名:GraphRepresentation。摘自《Algorithms,
4th Edition》P522。
![](http://img.blog.csdn.net/20140407132442828)
我的解答如下:
代码:
给定图数据文件(tinyG.txt)(文件内容见下图),计算得到图的邻接矩阵,并把邻接矩阵保存到文件(tinyG_matrix.txt)中。类名:GraphRepresentation。摘自《Algorithms,
4th Edition》P522。
我的解答如下:
代码:
#include <iostream> #include <fstream> using namespace std; class GraphRepresentation { public: GraphRepresentation(char const * inFileName); ~GraphRepresentation(); void output(char const * outFileName);//输出邻接矩阵 private: int *vertex; int **arc; int vertexNum,arcNum; }; int main(int argc, char const *argv[]) { char const * inFileName= "tinyG.txt"; char const * outFileName = "tinyG_matrix.txt"; GraphRepresentation graph(inFileName); graph.output(outFileName); return 0; } GraphRepresentation::GraphRepresentation(char const * inFileName) { ifstream inFile(inFileName); inFile >> vertexNum >> arcNum; vertex =new int[vertexNum]; arc = new int*[vertexNum]; for (int i = 0; i < vertexNum; ++i) { arc[i] = new int[vertexNum]; } int first[arcNum],second[arcNum]; int i = 0; while(inFile>>first[i]>>second[i]) ++i; for (int i = 0; i < vertexNum; ++i) //初始化顶点数组 { vertex[i] = i; } for (int i = 0; i < vertexNum; ++i) //初始化邻接矩阵 { for (int j = 0; j < vertexNum; ++j) { arc[i][j] = 0; } } for (int i = 0; i < arcNum; ++i) //生成邻接矩阵 { arc[first[i]][second[i]] = 1; arc[second[i]][first[i]] = 1; } inFile.close(); } GraphRepresentation::~GraphRepresentation() { delete[] vertex; for (int i = 0; i < arcNum; ++i) { delete[] arc[i]; } delete[] arc; } void GraphRepresentation::output(char const * outFileName) { ofstream outFile(outFileName); outFile<<"顶点:"<<endl; for (int i = 0; i < vertexNum; ++i) { outFile<<vertex[i]<<" "; } outFile<<endl<<"邻接矩阵:"<<endl; for (int i = 0; i < vertexNum; ++i) { for (int j = 0; j < vertexNum; ++j) { outFile<<arc[i][j]<<" "; } outFile<<endl; } outFile.close(); }结果如下:
相关文章推荐
- 对于Windows的进程间通信的方式
- 设计模式学习总结(19) 备忘录模式
- 状态,
- 用户界面设计的技巧与技术
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- Javascript中的window对象基本属性和方法以及对alert,confirm,prompt的使用
- bootIt 之刻录U盘安装盘,图示
- 形参中的数组,实际是一个指针。sizeof为4,其他地方为数组大小
- C++中delete和delete[]的区别
- BaseAdapter 刷新数据的方法
- HDU 1147 Pick-up sticks
- VS2012+win7(64)+cocos2dx2.1.2
- Linux jobs 前后台运行命令详解
- Mysql gis 空间数据库功能详解学习
- redis学习笔记
- 【DS】排序算法之希尔排序(Shell Sort)
- The Decorator Pattern 装饰者模式
- 使用IKAnalyzer分词计算文章关键字并分享几个分词词典
- 关于安卓系统刷机
- [娱乐] 德云社相声