Senin, 09 Juli 2012

Struktur data Circular


    CIRCULAR
Pengertian secara umumnya DLLC itu Linked list yang menggunakan pointer, dimana setiap node memiliki 3 field, yaitu:1 field pointer yang menunjuk pointer berikutnya "next",1 field menunjuk pointer sebelumnya " prev ", 1 field yang berisi data untuk node tersebut .Double Linked List Circular pointer next dan prev nya menunjuk kedirinya sendiri secara circular. Bentuk Node DLLCDouble : artinya field pointer- nya terdiri dari dua buah dan dua arah , yaitu prev dan next Linked List : artinya node-node tersebut saling terhubung satu sama lain. Circular : artinya pointer next dan prev-nya menunjuk ke dirinya sendiri Double Link List Circular menggunakan head Menggunakan 1 pointer head (*first) Head selalu menunjuk node pertama 





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

int main() {
    int queue[10], i, head=-1, tail=-1, enqueue, pil, urut=0, tmp;
   
    do {
        system("pause");
        system("cls");
        printf("1. Masukkan Antrian\n");
        printf("2. Keluarkan Antrian\n");
        printf("3. Lihat Antrian\n");
        printf("4. Keluar\n\n");
        printf("Silahkan masukkan pilihan anda : ");
        scanf("%d", &pil);
        printf("\n");

       
        if(pil==1) {if(tail==9) {printf("Antrian Penuh\n\n");}
                    else if(tail==-1) {head++;tail++;
                                       printf("Masukkan nilai : ");
                                       scanf("%d", &enqueue);
                                       queue[tail]=enqueue;
                                       urut++;
                                       printf("\nNomor urut : %d\n", urut);
                                       printf("Langsung dilayani\n\n");}
                    else {tail++;
                          printf("Masukkan nilai : ");
                          scanf("%d", &enqueue);
                          queue[tail]=enqueue;
                          urut++;
                          printf("\nNomor urut : %d\n", urut);
                          printf("Anda harus menunggu %d antrian lagi\n\n", tail);}}
                         
        else if(pil==2) {if(tail==-1) {printf("Antrian kosong\n\n");}
                         else {printf("Data dengan nilai %d sudah dilayani\n\n", queue[head]);
                               tmp=queue[head];
                               for(i=head;i<=tail;i++) {queue[i]=queue[i+1];}
                               queue[tail]=tmp;
                               urut++;
                               printf("Data dengan nilai %d masuk antrian kembali dengan no. urut %d\n", queue[tail], urut);
                               if(tail==0) {printf("Yang bersangkutan langsung dilayani\n\n");}
                               else {printf("Yang bersangkutan harus menunggu %d antrian lagi\n\n", tail);}}}
                              
        else if(pil==3) {if(tail==-1) {printf("Antrian kosong\n\n");}
                         else {for(i=head;i<=tail;i++) {printf("Antrian ke-%d : %d\n", i+1, queue[i]);}
                         printf("\n");}}
                        
        else if(pil==4) {printf("Anda telah selesai menggunakan program Queue Circular\n\n");}
       
        else {printf("Pilihan yang anda masukkan tidak valid\n\n");}
        } while(pil!=4);
       
    getch();
}

Tidak ada komentar:

Posting Komentar