简单无向图(Grahp) -- C++实现


实现代码

// Graph.h
// 无向图
#ifndef GRAPH_H
#define GRAPH_H

#include "Component.h"

namespace jay{

	class Graph
	{
	private:

		LinkList<int> *m_pList; // 邻接表 存放了每个对应对应的已连通的顶点
		int m_V; // 顶点的数量
		int m_E; // 边的数量

	public:

		void AddEdge(int v,int w );
		void checkValid(int v);

		void Show();

		Graph(int TableSize);
		~Graph();

	};

	Graph::Graph(int V):m_E(0),m_V(V)
	{
		m_pList = new LinkList<int>[V];
	}

	Graph::~Graph()
	{
		delete []m_pList;
		m_pList = nullptr;
	}

	void Graph::checkValid(int v)
	{
		if (v <0 || v>= m_V)
		{
			throw "指定顶点异常,其值必须大于等于0,且小于顶点的总数量 ";
		}
	}

	void Graph::AddEdge(int v,int w )
	{
		
		checkValid(v);
		checkValid(w);

		m_pList[v].Add(w);
		m_pList[w].Add(v);
		m_E++;
	}

	void Graph::Show()
	{
		for(int i=0;i<m_V;i++)
		{
			cout << "当前顶点 " << i << ": ";
			m_pList[i].Show();
		}
	}
};

#endif

测试代码

//main.cpp

#include <time.h>
#include<windows.h>

#include <iostream>
#include <string>
#include <vector>
using namespace std;
#include "Component.h"
#include "Graph.h"

using namespace jay;



int main(int argc, char* argv[])
{

	int iV(0) ;
	cin>>iV;
	Graph gra2(iV);


	int iCount = 0;
	int p,q;
	while(cin>>p)
	{
		cin>>q;
		gra2.AddEdge(p,q);
	}

	gra2.Show();

//	cout << mylist.Find
}

 

暂无评论

注册用户登录后才能发表或者回复评论,请先登录 注册。