Diktat_Prosedural_07_ADTQueue

Kasus khusus untuk queue dengan keadaan awal

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: engan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan definisi. Algoritma ini efisien karena tidak perlu pergeseran, dan seringkali strategi pemakaian tabel semacam ini Oleh: Inggriani Liem/Revisi bab oleh: Tim IF2030 sem. 1 2011-2012/Tgl. Revisi: 24 Okt 2011 4 Draft Diktat Struktur Data Hanya untuk digunakan di lingkungan Sekolah Teknik Elektro dan Informatika ITB disebut sebagai “circular buffer”, dimana tabel penyimpan elemen dianggap sebagai “buffer”. Salah satu variasi dari representasi pada alternatif III adalah : menggantikan representasi TAIL dengan COUNT, yaitu banyaknya elemen Queue. Dengan representasi ini, banyaknya elemen diketahui secara eksplisit, tetapi untuk melakukan penambahan elemen harus dilakukan kalkulasi TAIL. Buatlah sebagai latihan. ADT Queue dalam Bahasa C, diimplementasi dengan Tabel /* File : queue.h */ /* deklarasi Queue yang diimplementasi dengan tabel kontigu */ /* HEAD dan TAIL adalah alamat elemen pertama dan terakhir */ /* Queue mampu menampung MaxEl buah elemen */ #ifndef queue_H #define queue_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 2: HEAD bergerak “maju” pada saat penghapusan elemen, */ /* Penggeseran (sehingga HEAD=1) dilakukan jika ada penambahan*/ /* pada saat TAIL=MaxEl dan Q tidak penuh */ boolean IsEmpty (Queue Q); /* Mengirim true jika Q kosong: lihat definisi di atas */ boolean IsFull(Queue Q); /*Mengirim true jika tabel penampung elemen Q sudah penuh */ /* yaitu mengandung MaxEl elemen int NBElmt(Queue Q); /* Mengirimkan banyaknya elemen que...
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