Sabtu, 01 Agustus 2009

Graph Berarah, Pertemuan ke-12

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>

void input_list();
void tampil_MA();
void tampil_MI();
void tampil_list();
void tampil_v1();
void tampil_v2();
void tampil_v3();
void tampil_v4();
void DFS();
void trav();

int MA[6][6]={{0,0,1,0},{1,1,1,0},{0,0,0,1},{1,1,0,0}};
int MI[6][9]={{3,0,0,0,0,0,0},{0,0,0,0,1,2,3},{0,4,0,0,0,0,0},{0,0,2,1,0,0,0}};
int pilihan,i,j,v[5];

struct simpul
{
int info;
   simpul *next;
};

simpul *baru,*bantu,*verteks1,*verteks2,*verteks3,*verteks4;

void main()
{
input_list();
   pilihan=1;
while(pilihan!=0)
   {
clrscr();
      cout<<"MENU UTAMA";
      cout<<endl<<"1. Tampil Matriks Adjacency";
      cout<<endl<<"2. Tampil Matriks Incidency";
      cout<<endl<<"3. Tampil List";
      cout<<endl<<"4. Tampil DFS";
      cout<<endl<<"0. Keluar";
      cout<<endl<<"Masukkan pilihan anda [1/2/3/4/0]: ";
      cin>>pilihan;
      if(pilihan==1)
      {
      tampil_MA();
      }
      else
      {
      if(pilihan==2)
         {
          tampil_MI();
         }
         else
         {
          if(pilihan==3)
            {
               tampil_list();
            }
            else
            {
            if(pilihan==4)
               {
                DFS();
               }
               else
               {
            if(pilihan==0)
                {
                pilihan==0;
                }
                else
                {
                clrscr();
                cout<<"Masukan salah, silahkan ulangi lagi!"<<endl;
                }
               }
            }
         }
      }
   }
   clrscr();
   gotoxy(30,12);
   cout<<"Press any key to exit!";
   getch();
}



void input_list()
{
//verteks 1
   verteks1=new(simpul);
verteks1->next=NULL;
  for(i=0;i<=3;i++)
   {
    if(MA[0][i]==1)
      {
    baru=new(simpul);
         baru->info=i+1;
         baru->next=NULL;
         if(verteks1->next==NULL)
         {
          verteks1->next=baru;
            bantu=baru;
         }
         else
         {
          bantu->next=baru;
            bantu=baru;
         }
      }
   }

   //verteks 2
   verteks2=new(simpul);
verteks2->next=NULL;
  for(i=0;i<=3;i++)
   {
    if(MA[1][i]==1)
      {
    baru=new(simpul);
         baru->info=i+1;
         baru->next=NULL;
         if(verteks2->next==NULL)
         {
          verteks2->next=baru;
            bantu=baru;
         }
         else
         {
          bantu->next=baru;
            bantu=baru;
         }
      }
   }

   //verteks 3
   verteks3=new(simpul);
verteks3->next=NULL;
  for(i=0;i<=3;i++)
   {
    if(MA[2][i]==1)
      {
    baru=new(simpul);
         baru->info=i+1;
         baru->next=NULL;
         if(verteks3->next==NULL)
         {
          verteks3->next=baru;
            bantu=baru;
         }
         else
         {
          bantu->next=baru;
            bantu=baru;
         }
      }
   }

   //verteks 4
   verteks4=new(simpul);
verteks4->next=NULL;
  for(i=0;i<=3;i++)
   {
    if(MA[3][i]==1)
      {
    baru=new(simpul);
         baru->info=i+1;
         baru->next=NULL;
         if(verteks4->next==NULL)
         {
          verteks4->next=baru;
            bantu=baru;
         }
         else
         {
          bantu->next=baru;
            bantu=baru;
         }
      }
   }
   system("pause");
}

void tampil_MA()
{
clrscr();
cout<<"Matriks Adjacency : "<<endl<<endl;
for(i=0;i<=3;i++)
   {
    for(j=0;j<=3;j++)
      {
      cout<<MA[i][j]<<"\t";
      }
      cout<<endl;
   }
   system("pause");
}

void tampil_MI()
{
clrscr();
cout<<"Matriks Incidency : "<<endl<<endl;
for(i=0;i<=3;i++)
   {
    for(j=0;j<=3;j++)
      {
      cout<<MI[i][j]<<"\t";
      }
      cout<<endl;
   }
   system("pause");
}

void tampil_list()
{
int pilih;
   pilih=1;
   while(pilih!=0)
   {
      clrscr();
      cout<<"MENU TAMPIL LIST";
      cout<<endl<<"1. Tampil hubungan verteks 1";
      cout<<endl<<"2. Tampil hubungan verteks 2";
      cout<<endl<<"3. Tampil hubungan verteks 3";
      cout<<endl<<"4. Tampil hubungan verteks 4";
      cout<<endl<<"9. Kembali ke menu utama";
      cout<<endl<<"0. Keluar";
      cout<<endl<<"Masukkan pilihan [1/2/3/4/9/0] : ";
      cin>>pilih;
    if(pilih==1)
      {
      tampil_v1();
      }
      else
      {
      if(pilih==2)
         {
          tampil_v2();
         }
         else
         {
          if(pilih==3)
            {
            tampil_v3();
            }
            else
            {
            if(pilih==4)
               {
                tampil_v4();
               }
               else
               {
                if(pilih==9)
                  {
                  pilih=0;
                  }
                  else
                  {
                  if(pilih==0)
                     {
                      pilihan=0;
                     }
                     else
                     {

                     }
                  }
               }
            }
         }
      }
   }
   system("pause");
}

void tampil_v1()
{
clrscr();
cout<<"Verteks 1 terhubung ke verteks :"<<endl;
   bantu=verteks1->next;
   while(bantu!=NULL)
   {
    cout<<bantu->info<<"\t";
      bantu=bantu->next;
   }
   cout<<endl;
   system("pause");
}

void tampil_v2()
{
clrscr();
cout<<"Verteks 2 terhubung ke verteks :"<<endl;
   bantu=verteks2->next;
   while(bantu!=NULL)
   {
    cout<<bantu->info<<"\t";
      bantu=bantu->next;
   }
   cout<<endl;
   system("pause");
}

void tampil_v3()
{
clrscr();
cout<<"Verteks 3 terhubung ke verteks :"<<endl;
   bantu=verteks3->next;
   while(bantu!=NULL)
   {
    cout<<bantu->info<<"\t";
      bantu=bantu->next;
   }
   cout<<endl;
   system("pause");
}

void tampil_v4()
{
clrscr();
cout<<"Verteks 4 terhubung ke verteks :"<<endl;
   bantu=verteks4->next;
   while(bantu!=NULL)
   {
    cout<<bantu->info<<"\t";
      bantu=bantu->next;
   }
   cout<<endl;
   system("pause");
}

void DFS()
{
clrscr();
   for(i=0;i<=3;i++)
   {
    v[i]=0;
   }
   for(i=0;i<=3;i++)
   {
    if(v[i]==0)
      {
      trav();
      }
   }
   system("pause");
}

void trav(int i)
{
v[i]=1;
   cout<<i+1<<"\t";
   for(j=0;j<=3;j++)
   {
    if(MA[i][j]==1 && v[j]==0)
      {
      trav(j);
      }
   }
}

0 komentar:

Posting Komentar

Related Posts Plugin for WordPress, Blogger...