Anda di halaman 1dari 4

Praktikum 12

Graf
NIM/Nama : 3312001006/Daffa Dhiya Ulhaq
Setelah mengikuti praktikum ini, mahasiswa diharapkan dapat:
 Menggambarkan konsep graf pada memory
 Membuat struktur data graf dalam bahasa C
 Melakukan operasi pada graf
 Melakukan penelusuran graf
 Mencari lintasan terpendek pada graf
 Mengaplikasikan graf pada program

Pengumpulan tugas praktikum:


Simpan laporan praktikum ini dengan nama P12_NIM.docx di folder yang sama dengan
folder tempat kode program. Namai folder dengan P12_NIM, kemudian zip. Upload ke
http://learning-if.polibatam.ac.id.

Perhatikan graf berarah berikut.

Representasikan graf tersebut dalam bentuk adjacency matrix. Buatlah program yang dapat
menampilkan simpul-simpul yang ada pada graf tersebut beserta simpul-simpul apa saja yang
terhubung dengannya.
Contoh keluaran program:
Graf terdiri dari simpul: a b c d e
Simpul a terhubung dengan: b d
Simpul b terhubung dengan: c e
Simpul c terhubung dengan:
Simpul d terhubung dengan: b e
Simpul e terhubung dengan: c

Petunjuk:
Gunakan satu matriks berukuran NxN sebagai adjacency matrix, dan satu array sepanjang N
untuk menyimpan nama-nama simpulnya (N adalah banyaknya simpul).

~1~
Salin kode C Anda di sini.
#include <stdio.h>

char sim[5]="ABCDE";
int A[5][5]={
0,1,0,1,0,
0,0,1,0,1,
0,0,0,0,0,
0,1,0,0,1,
0,0,1,0,0
};

main(){
int i, j;
printf("{}{}{}Adjencency Matrix{}{}{}\n");
printf("=============================\n");
printf("Graf terdiri dari simpul : \n");
int x;
for(x=0; x<5 ; x++){
printf(" %c ", sim[x]);
}
printf("\n=============================\n");
for(i=0; i<=4; i++){
printf("\nSimpul %c terhubung dengan : ",sim[i]);
for(j=0;j<=5;j++){
if(A[i][j]==1)
{
printf("%c ",sim[j]);
}
}
}
getch();
}
Tampil dan jelaskan hasil running di sini.

Nilai Ekstra
Dengan menggunakan representasi adjacency list, buatlah program yang dapat mengeluarkan
hasil yang sama.

~2~
Salin kode C Anda di sini.
#include <stdio.h>

typedef struct Node{


struct Node *kiri;
int data;
struct Node *kanan;
};

typedef struct Node Simpul;


Simpul *p, *awal, *akhir, *Q, *R, *S;
Simpul *pointS[5];

void main(){
int A[5][5]={
0,1,0,1,0,
0,0,1,0,1,
0,0,0,0,0,
0,1,0,0,1,
0,0,1,0,0
};
char sim[5]="ABCDE";
int i,j;
i=0;
j=0;
p=(Simpul*)malloc(sizeof(Simpul));
p->data = sim[0];
awal = p;
akhir = p;
p->kiri = NULL;
p->kanan = NULL;
pointS[0] = p;

printf("{}{}{}Adjencency List{}{}{}\n");
printf("=============================\n");
printf("Graf terdiri dari simpul : \n");
int x;
for(x=0; x<5 ; x++){
printf(" %c ", sim[x]);
}
printf("\n=============================\n");
for(i=1; i<=4; i++){
p=(Simpul*)malloc(sizeof(Simpul));
p->data=sim[i];
akhir->kiri=p; akhir=akhir->kiri;
p->kiri=NULL; p->kanan=NULL;
pointS[i]=p;
}
Q=awal;
for(i=0; i<=4; i++)

~3~
{
R=Q;
for(j=0; j<=4; j++)
{
if(A[i][j]==1)
{
p=(Simpul*)malloc(sizeof(Simpul));
p->data=A[i][j];
R->kanan=p;
p->kiri=pointS[j];
p->kanan=NULL;
R=p;
}
}
Q=Q->kiri;
}

Q=awal;
while(Q!=NULL)
{
printf("\nSimpul %c terhubung dengan ",Q->data);
R=Q->kanan;
while(R!=NULL)
{
printf("%c", R->kiri->data);
R=R->kanan;
}
Q=Q->kiri;
}
getch();

}
Tampil dan jelaskan hasil running di sini.

~4~

Anda mungkin juga menyukai