Keluarga Infokom

Keluarga Infokom

Antrian dan Sequential Searching

Inilah contoh membuat program antrian dan sequential searching yang dibuat dengan bahasa C++ dengan menu untuk enqueue, dequeue, tampilkan hasilnya, clear, pencarian, dan keluar
 #include<stdio.h>  
 #include<conio.h>  
 #define MAX 10 // mendefinisikan bahwa maksimal antrian adalah 10  
 //mendefinisikan tipe data bentukan antrian  
 typedef struct{  
  int data[MAX];  
  int head;  
  int tail;  
 } antrian;  
 // antri akan dikenali sebagai antrian  
 antrian antri;  
 void Create(){  
  antri.head=antri.tail=-1;  
 // posisi head dan tail harus -1 agar nanti data bisa dimulai dari data ke 0  
 }  
 // fungsi untuk mengecek apakah antrian kosong  
 int IsEmpty(){  
  if(antri.tail==-1)  
  return 1;  
  else return 0;  
 }  
 //fungsi untuk mengecek apakah antrian penuh  
 int IsFull(){  
  if(antri.tail==MAX-1)  
  return 1;  
  else return 0;  
 }  
 // fungsi untuk memasukkan data pada antrian  
 void Enqueue(int data){  
  if(IsEmpty()==1){  
 // cek apakah antrian kosong  
  antri.head=antri.tail=0;  
  antri.data[antri.tail]=data;  
  printf("Data %d telah masuk!\n",antri.data[antri.tail]);  
  } else  
  if(IsFull()==0){  
 // cek apakah masih bisa memasukkan antrian  
  antri.tail++;  
  antri.data[antri.tail]=data;  
 printf("antrian %d telah masuk!\n",antri.data[antri.tail]);  
  }  
  else  
  printf("Antrian penuh");  
 }  
 // fungsi untuk mengosongkan pada antrian  
 int Dequeue(){  
  if(IsEmpty()==0) {  
  int i;  
  int e = antri.data[antri.head];  
  for(i=antri.head;i<=antri.tail-1;i++){  
  antri.data[i] = antri.data[i+1];  
  }  
 antri.tail--;  
 return e;  
 } else  
  {printf("Antrian %d telah keluar\n");  
  return 0;  
 }}  
 // fungsi untuk mengosongkan antrian  
 void Clear(){  
  antri.head=antri.tail=-1;  
  printf("data berhasil dihapus\n");  
 }  
 // fungsi untuk menampilkan antrian  
 void Tampil(){  
  if(IsEmpty()==0){  
  for(int i=antri.head;i<=antri.tail;i++){  
  printf("%d\n",antri.data[i]);  
  }  
  } else printf("antrian tidak ada!\n");  
 }
 // di sinilah fungsi sequential searching  
 void Cari(int x) {  
 if (IsEmpty()==0) {  
 for(int i=antri.head;i<=antri.tail;i++){  
 if (antri.data[i] == x)  
 printf("antrian %d ditemukan!\n", i+1);  
 else  
 printf("antrian %d tidak ditemukan!\n",i+1);  
 }  
 }else printf("antrian kosong!\n");  
 }  
 //{============================================================}  
 // fungsi utama  
 int main(){  
  int pil;  
  int data;  
  int x;  
 printf("+-----------------------------------+\n");  
 printf("\t  Program \n");  
 printf("+-----------------------------------+\n");  
  Create();  
  do{  
  //clrscr();  
  printf("1. Enqueue\n");  
  printf("2. Dequeue\n");  
  printf("3. Tampilkan\n");  
  printf("4. Kosongkan\n");  
  printf("5. Pencarian\n");  
  printf("6. Keluar\n");  
  printf("Pilihan = ");scanf("%d", &data, pil);  
  switch(pil){  
  case 1: if(IsFull()==1) printf("Antrian penuh\n"); else { printf("antrian ke = ");scanf("%d", &data);  
   Enqueue(data);  
  }  
  break;  
  case 2: printf("antrian yang keluar : %d\n",Dequeue());  
  break;  
  case 3: Tampil();  
  break;  
  case 4: Clear();  
  break;  
  case 5: printf("antrian yang dicari = ");scanf("%d", &x);  
  Cari(x);  
  break;  
  }  
  getch();  
  }  
  while(pil!=6);  
 }  

0 Response to "Antrian dan Sequential Searching"

Posting Komentar