How Many Vertices? 9  Enter Vertices Name : A B C D E F G J K  Enter Link for each Vertices (0 as Last Input):         Enter Adjacents of B : G C 0  Enter Adjacents of C : F 0  Enter Adjacents of D : C 0  Enter Adjacents of E : D C J 0  Enter Adjacents of F : D 0  Enter Adjacents of G : C E 0  Enter Adjacents of J : D K 0  Enter Adjacents of K : E G 0  Graph Created : The Adjacency Matrix is         Download Original File
Enter Adjacents of A : F C B 0 
-----------------------------------------------------------         
A F C B         
B G C         
C F         
D C         
E D C J         
G C E         
J D K         
K E G
......................
/****************************************
      APPLICATION : Program to create a Graph
      CODED BY    : Ankit Pokhrel
      COMPILED ON : Borland C++ Ver 5.02
      DATE     : 2010 - October - 12
      ****************************************/
      #include "iostream.h"
      #include "conio.h"
      struct Node //Structure to represent a Node or Vertices of a Graph
      {
      char data;
      struct Node *next,*head; //Pointers to next node and Start
      struct Adjacent *adj; //Pointer to Adjacent node
      };
      struct Adjacent //Structure to represent Adjacent node of a Graph
      {
      struct Node *next;
      struct Adjacent *adj; //Pointer for next Adjacent
      };
      Node *New,*top; //Global Variables for New node and Pointer to Top
      void create()
      {
      New = new Node; //Create a node
      New -> next = NULL;
      New -> adj = NULL;
      }
      void CreateVertices(Node *&n,char Item) //Function to Create a Vertices of a Graph
      {
      if(n == NULL) //if first node
        {
         n = new Node; //Create a node
         n -> data = Item; //Insert Data
         n -> next = NULL;
         n -> adj = NULL;
         n -> head = n; //Initialize head
         top = n; //Update top
         return;
        }
      create(); //Create a node
      New -> data = Item; //Insert Item
      top -> next = New; //Assign new node to next of top
      top = New; //Update top
      }
      void LinkVertices(Node *&n)
      {
      Adjacent *a,*ptr;
      cout << "\nEnter Link for each Vertices (0 as Last Input): ";
      Node *temp = n -> head,*tmp;
      while(temp != NULL) //Until last
      {
        cout << "\nEnter Adjacents of " << temp -> data << " : ";
        int flag = 0;
        char ch;
        do
         {
          cin >> ch; //Scan Adjacent
          a = new Adjacent; //Create an Adjacent
          a -> adj = NULL;
          a -> next = NULL;
          if(flag == 0) //if first Adjacent
           {
            temp -> adj = a;
            ptr = a;
            flag++; //Increase flag
           }
          else
           {
            ptr -> adj = a;
            ptr = a;
           }
         tmp = n -> head; //from start
         while(tmp != NULL) //Until end
          {
           if(tmp -> data == ch) //if node found
            a -> next = tmp; //Link adjacent
           tmp = tmp -> next;
          }
         }while(ch != '0');
         temp = temp -> next;
        }
      }
      void display(Node *n)
      {
      if(n == NULL)
        {
         cout << "Graph is Empty.";
         return;
        }
      Node *temp = n,*tmp;
      Adjacent *a;
      while(temp != NULL) //Until Last
        {
         cout << temp -> data << ' '; //Print first data
         a = temp -> adj; //go to adjacent node
         while(a -> adj != NULL) //Until last of adjacent
          {
           tmp = a -> next;
           cout << tmp -> data << ' '; //print adjacent
           a = a -> adj; //goto next adjacent
          }
         cout << endl;
         temp = temp -> next; //goto next Node
        }
      }
      int main()
      {
      int m;
      char ch;
      Node *nd = NULL;
      cout << "How Many Vertices? "; //Number of Nodes on a Graph
      cin >> m;
      cout << "\nEnter Vertices Name : "; //Input the name of Vertices
      for(int i = 0;i < m;i++)
        {
         cin >> ch;
         CreateVertices(nd,ch);
        }
      LinkVertices(nd);
      cout << endl << "Graph Created : ";
      cout << "The Adjacency Matrix is\n";
      cout << "---------------------------------------\n";
      display(nd);
      getch();
      }
      OUTPUT
      
Labels:
Graph
 
 
No comments:
Post a Comment