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;
}


|

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

1 Response to "traversing a directed graph (code)"

  1. Anonymous says:

    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

Post a Comment