traversing a directed graph (code)
download he header files:
http://h1.ripway.com/vedcruzer111/graph.h
http://h1.ripway.com/vedcruzer111/edge.h
http://h1.ripway.com/vedcruzer111/vertex.h
This is my code for vertex input
#include
#include
#include "edge.h"
#include "vertex.h"
#include "graph.h"
#include
//##################################################################
//############## ###################
//############## vertex ###################
//##################################################################
Vertex::Vertex(char theData, Vertex *nextVert) {
data = theData;
next = nextVert;
edges = NULL;
}
Vertex:: ~Vertex() {
delete next;
delete edges;
}
char Vertex::getData() {
return data;
}
void Vertex::printEdges() {
if (edges == NULL)
cout << "vertex " << getData() << " has no edges\n";
else {
cout << "vertex " << getData() << " has edges to: ";
edges -> print();
}
}
void Vertex::printGraph() {
printEdges();
if (next != NULL)
next -> printGraph();
}
void Vertex::connectTo(Vertex *Vert) {
Edge *newEdge = new Edge(Vert, edges);
edges = newEdge;
}
Vertex *Vertex::getNext() {
return next;
}
//##################################################################
//############## ###################
//############## vertex ###################
//##################################################################
//##################################################################
//############## ###################
//############## edge ###################
//##################################################################
Edge *Vertex::getFirstEdge() {
return edges;
}
Edge::Edge(Vertex *Vert, Edge *nextEdge) {
end = Vert;
next = nextEdge;
}
Edge::~Edge() {
delete next;
}
Vertex *Edge::getEnd() {
return end;
}
void Edge::print() {
cout <<> getData() << " ";
if (next == NULL)
cout << endl;
else {
next -> print();
}
}
Edge *Edge::getNext() {
return next;
}
//##################################################################
//############## ###################
//############## edge ###################
//##################################################################
//#####################################################################
Graph::Graph() {
first = NULL;
}
Graph::~Graph() {
delete first;
}
Vertex *Graph::find(char theData) {
Vertex *vPtr = first;
while (vPtr != NULL) {
if ( vPtr -> getData() == theData)
return vPtr;
vPtr = vPtr -> getNext();
}
return NULL;
}
bool Graph::AddVertex(char theData) {
if ( find(theData) != NULL )
return false;
Vertex *newVertex = new Vertex(theData, first);
first = newVertex;
return true;
}
bool Graph::AddEdge(char Begin, char End) {
Vertex *vEnd = find(End);
if (vEnd == NULL) return false;
Vertex *vBegin = find(Begin);
if (vBegin == NULL) return false;
vBegin -> connectTo(vEnd);
return true;
}
void Graph::print() {
if (first == NULL)
cout << "Graph has no vertexes " << endl;
else
first -> printGraph();
}
//###############################################################################
//############################################################################
int main() {
Graph myGraph;
char vertex;
int choice;
char Begin, End;
myloop:
system("cls");
cout<<"[1.] Add vertex\n";
cout<<"[2.] Add edge\n";
cout<<"[3.] show graph\n\n";
cout<<"Enter mo choice mo: ";
cin>>choice;
if(choice==1)
{
cout<<"Enter the vertex: ";
cin>>vertex;
myGraph.AddVertex(vertex);
goto myloop;
}
else if(choice==2){
cout<<"Enter begin: ";
cin>>Begin;
cout<<"Enter End: ";
cin>>End;
myGraph.AddEdge(Begin, End);
goto myloop;
}
else if(choice==3){
myGraph.print();
system("pause");
goto myloop;
}
system("pause");
return 0;
}
http://h1.ripway.com/vedcruzer111/graph.h
http://h1.ripway.com/vedcruzer111/edge.h
http://h1.ripway.com/vedcruzer111/vertex.h
This is my code for vertex input
#include
#include
#include "edge.h"
#include "vertex.h"
#include "graph.h"
#include
//##################################################################
//############## ###################
//############## vertex ###################
//##################################################################
Vertex::Vertex(char theData, Vertex *nextVert) {
data = theData;
next = nextVert;
edges = NULL;
}
Vertex:: ~Vertex() {
delete next;
delete edges;
}
char Vertex::getData() {
return data;
}
void Vertex::printEdges() {
if (edges == NULL)
cout << "vertex " << getData() << " has no edges\n";
else {
cout << "vertex " << getData() << " has edges to: ";
edges -> print();
}
}
void Vertex::printGraph() {
printEdges();
if (next != NULL)
next -> printGraph();
}
void Vertex::connectTo(Vertex *Vert) {
Edge *newEdge = new Edge(Vert, edges);
edges = newEdge;
}
Vertex *Vertex::getNext() {
return next;
}
//##################################################################
//############## ###################
//############## vertex ###################
//##################################################################
//##################################################################
//############## ###################
//############## edge ###################
//##################################################################
Edge *Vertex::getFirstEdge() {
return edges;
}
Edge::Edge(Vertex *Vert, Edge *nextEdge) {
end = Vert;
next = nextEdge;
}
Edge::~Edge() {
delete next;
}
Vertex *Edge::getEnd() {
return end;
}
void Edge::print() {
cout <<> getData() << " ";
if (next == NULL)
cout << endl;
else {
next -> print();
}
}
Edge *Edge::getNext() {
return next;
}
//##################################################################
//############## ###################
//############## edge ###################
//##################################################################
//#####################################################################
Graph::Graph() {
first = NULL;
}
Graph::~Graph() {
delete first;
}
Vertex *Graph::find(char theData) {
Vertex *vPtr = first;
while (vPtr != NULL) {
if ( vPtr -> getData() == theData)
return vPtr;
vPtr = vPtr -> getNext();
}
return NULL;
}
bool Graph::AddVertex(char theData) {
if ( find(theData) != NULL )
return false;
Vertex *newVertex = new Vertex(theData, first);
first = newVertex;
return true;
}
bool Graph::AddEdge(char Begin, char End) {
Vertex *vEnd = find(End);
if (vEnd == NULL) return false;
Vertex *vBegin = find(Begin);
if (vBegin == NULL) return false;
vBegin -> connectTo(vEnd);
return true;
}
void Graph::print() {
if (first == NULL)
cout << "Graph has no vertexes " << endl;
else
first -> printGraph();
}
//###############################################################################
//############################################################################
int main() {
Graph myGraph;
char vertex;
int choice;
char Begin, End;
myloop:
system("cls");
cout<<"[1.] Add vertex\n";
cout<<"[2.] Add edge\n";
cout<<"[3.] show graph\n\n";
cout<<"Enter mo choice mo: ";
cin>>choice;
if(choice==1)
{
cout<<"Enter the vertex: ";
cin>>vertex;
myGraph.AddVertex(vertex);
goto myloop;
}
else if(choice==2){
cout<<"Enter begin: ";
cin>>Begin;
cout<<"Enter End: ";
cin>>End;
myGraph.AddEdge(Begin, End);
goto myloop;
}
else if(choice==3){
myGraph.print();
system("pause");
goto myloop;
}
system("pause");
return 0;
}
tol. ITE ka rin pala? naglalaro ka ba ng ikariam? taga PIF ka ba?? sa UIC ka ba nagskul? hmmmm.. reply ka nmn sa blog ko.
http://hoowanted.wordpress.com