Diktat_Prosedural_07_ADTQueue

Mengirimkan 0 jika q kosong kreator void

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: ue. Mengirimkan 0 jika Q kosong */ /**** Kreator ***/ void CreateEmpty(Queue *Q, int Max); /* I.S. sembarang */ /* F.S. Sebuah Q kosong terbentuk dan salah satu kondisi sbb: */ /* Jika alokasi berhasil, Tabel memori dialokasi berukuran MaxEl */ /* atau : jika alokasi gagal, Q kosong dg Maksimum elemen, MaxEl=0 */ /* Proses : Melakukan alokasi,Membuat sebuah Q kosong */ /**** Destruktor ***/ void DeAlokasi(Queue *Q); /* Proses: Mengembalikan memori Q */ /* I.S. Q pernah dialokasi */ /* F.S. Q menjadi tidak terdefinisi lagi, MaxEl(Q) diset 0 */ /**** Primitif Add/Delete ****/ Oleh: Inggriani Liem/Revisi bab oleh: Tim IF2030 sem. 1 2011-2012/Tgl. Revisi: 24 Okt 2011 5 Draft Diktat Struktur Data Hanya untuk digunakan di lingkungan Sekolah Teknik Elektro dan Informatika ITB void Add (Queue * Q, infotype X); /* Proses: Menambahkan X pada Q dengan aturan FIFO */ /* I.S. Q mungkin kosong, tabel penampung elemen Q TIDAK penuh */ /* F.S. X menjadi TAIL yang baru, TAIL "maju" */ /* Jika Tail(Q)=MaxEl+1 maka geser isi tabel, shg Head(Q)=1 */ void Del(Queue * Q, infotype* X); /* Proses: Menghapus X pada Q dengan aturan FIFO */ /* I.S. Q tidak mungkin kosong */ /* F.S. X = nilai elemen HEAD pd I.S.,HEAD "maju";Q mungkin kosong */ #endif /* File :queues.h */ /* deklarasi Queue yang diimplementasi dengan tabel kontigu */ /* HEAD dan TAIL adalah alamat elemen pertama dan terakhir */ /* Kapasitas Queue=MaxEl buah elemen, dan indeks dibuat “sirkuler” */ #ifndef queues_H #define queues_H #include "boolean.h" #include <stdlib.h> #define Nil 0 /* Definisi elemen dan address */ typedef int infotype; typedef int address; /* indeks tabel */ /* Contoh deklarasi variabel bertype Queue : */ /* Versi I: tabel dinamik,Head dan Tail eksplisit, ukuran disimpan */ typedef struct { infotype * T; /* tabel penyimpan elemen */ address HEAD; /* alamat penghapusan */ address TAIL; /* alamat penambahan */ int MaxEl; /* MAx elemen queue */ } Queue; /* Definisi Queue kosong: HEAD=Nil; TAIL=Nil.*/ /* Catatan implementasi: T[0] tidak pernah dipakai */ /**** AKSES (Selektor) *****/ /* Jika Q adalah Queue, maka akses elemen : */ #define Head(Q) (Q).HEAD #define Tail(Q) (Q).TAIL #define InfoHead(Q) (Q).T[(Q).HEAD] #define InfoTail(Q) (Q).T[(Q).TAIL] #define MaxEl(Q) (Q).MaxEl /* Prototype */ /* ALTERNATIF 3: HEAD bergerak “maju” pada saat penghapusan elemen, */ /* TAIL bergerak “maju” pada saat penambahan elemen*/ /* Penghapusan elemen pada saat HEAD=MaxEl */ /* menyebabkan HEAD “maju” sehingga HEAD=1 /* Penambahan elemen pada saat TAIL=MaxEl dan Q tidak kosong */ /* menyebabkan TAIL “maju” sehingga HEAD=1 boolean IsEmpty (Queue Q); /* Mengirim true jika Q kosong: lihat definisi di atas */ boolean IsFull(Q...
View Full Document

This document was uploaded on 03/15/2014 for the course IF 2030 at Institut Teknologi Bandung.

Ask a homework question - tutors are online