0% menganggap dokumen ini bermanfaat (0 suara)
192 tayangan7 halaman

Modul 2 Tumpukan Dan Antrian

Modul ini membahas tentang struktur data tumpukan (stack) dan antrian (queue) yang meliputi pengertian, operasi dasar, contoh implementasi menggunakan array dan list, serta soal latihan dan tugas terkait implementasi stack dan queue menggunakan bahasa pemrograman C/C++.

Diunggah oleh

reva.alesandra
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
192 tayangan7 halaman

Modul 2 Tumpukan Dan Antrian

Modul ini membahas tentang struktur data tumpukan (stack) dan antrian (queue) yang meliputi pengertian, operasi dasar, contoh implementasi menggunakan array dan list, serta soal latihan dan tugas terkait implementasi stack dan queue menggunakan bahasa pemrograman C/C++.

Diunggah oleh

reva.alesandra
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 7

Modul Praktikum Struktur Data & Algoritma Lanjut

MODUL 2
TUMPUKAN (STACK) DAN ANTRIAN (QUEUE)

2.1 TUJUAN
Tujuan modul ini, adalah:
 Memperkenalkan penggunaan perangkat lunak bahasa pemrograman untuk
mengimplementasikan struktur data (tipe data abstrak, tumpukan/stack dan
antrian/queue).
 Memperkenalkan instruksi-instruksi yang dapat digunakan untuk menerapkan
struktur data tersebut.
 Memperkenalkan cara pembuatan program yang berhubungan dengan konsep
tumpukan dan antrian.
 Melatih mahasiswa menyelesaikan masalah tentang tumpukan dan antrian
dalam bentuk program aplikasi.

2.2 TEORI TUMPUKAN/STACK (MATERI PERTEMUAN KEEMPAT)


Stack sebenarnya merupakan list, tetapi list yang dikenai proses penghapusan dan
penyisipan hanya pada sebuah tempat yaitu di ujung (top of stack). Dengan
demikian jika akan dilakukan penghapusan data, data yang akan dihapus justru
data yang paling baru disisipkan. Karena inilah maka nama lain dari stack adalah
LIFO (Last In First Out), atau push down list.
Contoh dalam kehidupan sehari-hari adalah tumpukan piring, tumpukan buku di
lantai, daging pada sate, dan lain –lain.

Gambar 2.1 : Ilustrasi Proses Insert dan Delete pada Stack


Operasi-operasi dasar yang dapat dilakukan pada stack adalah :
Makenull(s) : kosongkan stack s
Top (s) : ambil elemen top stack
Pop (s) : hapus elemen pada top stack
Push(x,s) : sisipkan elemen x pada top stack
Empty(s) : cek kekosongan stack s

Penyajian Stack
Ada beberapa cara untuk menyajikan sebuah stack dalam bahasa pemrograman
Pascal. Cara penyajian ini didasarkan pada tipe struktur data yang digunakan.

Lab. Applied Database Versi/Revisi : 1/3 Halaman: 2 - 1


Modul Praktikum Struktur Data & Algoritma Lanjut

Cara yang pertama menggunakan tipe struktur data yang disebut larik (array),
sedangkan cara yang kedua menggunakan struktur data senarai berantai (list).
Masing-masing cara mempunyai kekurangan dan kelebihan.
Penyajian dengan menggunakan array mudah diimplementasikan dalam bahasa
pemrograman, tetapi cara ini juga mempunyai kelemahan yaitu jumlah elemen
dalam stack sudah tertentu (statis), sedangkan dengan menggunakan senarai
berantai (list) kelemahan ini bisa ditutupi.
Dalam bab ini kita akan menggunakan array untuk mengimplementasikan stack.
Contoh deklarasi stack dengan menggunakan array adalah sebagai berikut :
#define MaxElemen 255
typedef struct{
int Isi[MaxElemen];
int Atas;
}Stack;
Setelah mendeklarasikan suatu stack, maka yang harus kita lakukan adalah
melakukan inisialisai dari stack tersebut. Contoh prosedur untuk menginisialisasi
stack adalah

//************************************************
//* Prosedur inisialisasi awalan *
//************************************************
void Awalan (Stack Tumpukan){
Tumpukan.Atas = 0;
}

Program 2.1. Prosedur Inisialisasi Awalan

Operasi Push
Operasi Push digunakan untuk menyisipkan atau menambah data pada stack.
Contoh prosedur untuk operasi Push adalah sebagai berikut :
//************************************************
//* Program 2.2. *
//* Prosedur untuk memasukan elemen ke dalam tumpukan *
//************************************************
void Push(Stack Tumpukan, int penuh, int elemen){
if (Tumpukan.Atas == MaxElemen){
Penuh = 1; }//Penuh=True
else{
penuh = 0;//Penuh=False
Tumpukan.Atas = Tumpukan.Atas + 1;
Tumpukan.Isi[Tumpukan.Atas] = elemen;}
}
Program 2.2. Prosedur Untuk Memasukan Elemen Ke Dalam Tumpukan

Lab. Applied Database Versi/Revisi : 1/3 Halaman: 2 - 2


Modul Praktikum Struktur Data & Algoritma Lanjut

Operasi Pop
Operasi Pop digunakan untuk menghapus elemen yang terletak pada posisi paling
atas dari sebuah stack. Contoh prosedur untuk operasi Pop adalah sebagai berikut:
//****************************************************
//* Program 2.3. *
//* Prosedur untuk menghapus elemen pada stack *
//****************************************************
void Pop (Stack Tumpukan , int elemen){
if (Tumpukan.Atas == 0){
printf(‘Stack kosong\n’);}
else {
Elemen = Tumpukan.Isi[Tumpukan.Atas];
Tumpukan.Atas = Tumpukan.Atas –1;}
}

Program 2.3. Prosedur Untuk Memasukan Elemen Ke Dalam Tumpukan


Berikut ini suatu ilustrasi bagaimana operasi Pop dan Push dikenakan pada
sebuah stack :
1. push (“a”);
2. push(“b”);
3. push(“c”);
4. pop;
5. push(“d”);
6. push(“e”);
7. pop;
8. pop;
9. pop;

e
c d d d
b b b b b b b
a a a a c c c c c

Gambar 2.2 Contoh Isi Stack


Salah satu contoh aplikasi yang menggunakan konsep stack adalah program yang
bisa mengkonversi dari bilangan integer berbasis sepuluh (base-ten
representation) ke dalam bilangan biner (base-two representation). Misalkan
bilangan integer berbasis sepuluh adalah bilangan 26, maka setelah dikomputasi
akan didapat 11010 yang merupakan bilangan biner.

Lab. Applied Database Versi/Revisi : 1/3 Halaman: 2 - 3


Modul Praktikum Struktur Data & Algoritma Lanjut

2.3 SOAL TUGAS & LATIHAN (PERTEMUAN KEEMPAT)


2.3.1 TUGAS PENDAHULUAN
Tugas pendahuluan dikumpulkan pada pertemuan keempat :
1. Dapatkan suatu masalah yang berhubungan dengan tumpukan. Buat
deskripsi singkatnya dan gambar contohnya. Tumpukan yang dibuat harus
berupa tumpukan/stack of type buatan, misalnya tumpukan data buku,
tumpukan data pegawai, dll. Kasus setiap kelompok harus berbeda
dengan kelompok lain. Kemudian buat struktur data untuk
menggambarkan tumpukan/stack pada array dari masalah tersebut !
2. Dari struktur data pada nomor 1, buat algoritma penambahan (PUSH) data
pada tumpukan!
3. Buatlah algoritma untuk menghapus (POP) data pada tumpukan!
4. Buatlah algoritma untuk menampilkan semua isi tumpukan!

2.3.2 LATIHAN PRAKTIKUM


Latihan untuk pertemuan keempat :
1. Implementasikan struktur data tumpukan (dalam array) pada tugas
pendahuluan nomor 1 menggunakan bahasa C/C++ dan lengkapi
programnya untuk PUSH & POP seperti pada tugas pendahuluan nomor
A.2 dan A.3 (program 2.2 dan 2.3)!
2. Kembangkan program tersebut untuk menampilkan isi dari tumpukan
tersebut (gunakan program utama)!

2.3.3 TUGAS RUMAH


Tugas pendahuluan dikumpulkan pada pertemuan kelima :
1. Dapatkan suatu masalah yang berhubungan dengan antrian. Buat deskripsi
singkatnya dan gambar contohnya. Antrian yang dibuat harus berupa
antrian/queue of type buatan, misalnya antrian data buku, antrian data
pegawai, dll. Kasus setiap kelompok harus berbeda dengan kelompok
lain. Kemudian buat struktur data untuk menggambarkan antrian/queue
dengan list berkait dari masalah tersebut !
2. Dari struktur data pada nomor 1, buat algoritma penambahan data antrian
dengan list berkait!
3. Buatlah algoritma untuk menghapus data antrian dengan list berkait!
4. Buatlah algoritma untuk menampilkan semua isi antrian!

2.4 SOAL TUGAS & LATIHAN (PERTEMUAN KELIMA)


2.4.1 LATIHAN PRAKTIKUM
Latihan untuk pertemuan kelima :
1. Implementasikan struktur data tumpukan (dalam list berkait) pada tugas
pendahuluan nomor 1 menggunakan bahasa C/C++ dan lengkapi
programnya untuk PUSH & POP seperti pada tugas pendahuluan nomor 2
dan 3!

Lab. Applied Database Versi/Revisi : 1/3 Halaman: 2 - 4


Modul Praktikum Struktur Data & Algoritma Lanjut

2. Kembangkan program tersebut untuk menampilkan isi dari tumpukan


tersebut (gunakan program utama)!

2.4.2 TUGAS RUMAH


Tugas pendahuluan dikumpulkan pada pertemuan keenam :
1. Dapatkan suatu masalah yang berhubungan dengan antrian. Buat deskripsi
singkatnya dan gambar contohnya. Antrian yang dibuat harus berupa
antrian/queue of type buatan, misalnya antrian data buku, antrian data
pegawai, dll. Kasus setiap kelompok harus berbeda dengan kelompok
lain. Kemudian buat struktur data untuk menggambarkan anrian/queue
pada array dari masalah tersebut !
2. Dari struktur data pada nomor 1, buat algoritma penambahan data antrian
dengan array!
3. Buatlah algoritma untuk menghapus data antrian dengan array!
4. Buatlah algoritma untuk menampilkan semua isi antrian!

2.5 TEORI ANTRIAN/QUEUE (MATERI PERTEMUAN


KEENAM)
Antrian atau lebih dikenal dengan struktur FIFO (First In First Out) atau struktur
FCFS (First Come First Served) merupakan salah satu TDA (Tipe Data Abstrak)
yang sering digunakan dalam ilmu komputer. Konsep antrian ini dalam kehidupan
sehari-hari sudah diterapkan dalam antrian untuk membeli karcis kereta api atau
bioskop, dalam hal mana orang yang datang pertama akan diberikan kesempatan
pertama untuk mendapat karcis, orang yang datang kedua akan mendapat
kesempatan kedua untuk mendapat karcis, dan seterusnya. Seperti halnya stack,
antrian juga dapat diimplementasikan dalam struktur array atau list.
Di dalam antrian juga mengenal dua prosedur utama, yaitu prosedur untuk
memasukkan atau menambah elemen baru dan mengeluarkan atau menghapus
elemen. Penambahan elemen dilakukan pada salah satu ujung (belakang) dan
untuk menghapus elemen dilakukan pada ujung yang lain (depan).
Elemen baru dimasukkan sebagai elemen pertama dalam antrian dan hal ini
dilakukan dengan prosedur ADDQ. Elemen yang dapat dihapus adalah elemen
terakhir dalam antrian dan ini dilakukan dengan prosedur DELETEQ. Dalam
penerapannya kedua prosedur ini sangat mirip dengan prosedur insert dan delete
pada suatu list berkait. Berikut ini adalah suatu contoh proses pemasukkan serta
juga pengeluaran sejumlah data dari suatu antrian.
Misalkan diberikan suatu antrian Q yang kosong. Lalu dilakukan beberapa operasi
ADDQ dan DELETEQ berikut ini maka isi dari q dapat ditulis sebagai berikut :

Lab. Applied Database Versi/Revisi : 1/3 Halaman: 2 - 5


Modul Praktikum Struktur Data & Algoritma Lanjut

Suatu antrian dapat diimplementasikan dalam bentuk array Q[0..N]. Dalam hal ini
diperlukan dua buah indeks khusus (atau pointer dalam implementasi list berkait)
yaitu depan dan belakang. Depan selalu menunjuk pada unsur sebelum unsur yang
pertama dalam antrian sedangkan belakang, selalu menunjuk pada unsur yang
paling belakang yang ada dalam antrian. Jadi data yang dimasukkan dalam antrian
akan masuk dibagian belakang dan data yang akan dihapus dari antrian akan
dihapus dari depan. Dalam array Q[0..N] tadi hanya dapat disimpan dalam N
data. Satu tempat khusus digunakan untuk menunjukkan unsur yang paling depan.
Depan selalu menunjuk pada unsur yang seolah-olah ada di depan unsur yang
pertama.
Keadaan awal dari antrian adalah Depan = Belakang = 0. Bila ada pemasukkan
elemen baru, nilai belakang akan bertambah satu; sedangkan bila ada elemen yang
dikeluarkan, nilai Depan akan bertambah satu. Suatu antrian Q yang kosong dapat
dilihat dengan membandingkan Depan dan Belakang. Bila Depan = Belakang
antrian tersebut adalah kosong. Berikut adalah algoritma untuk Tambah dan
Hapus antrian
Procedure ADDQ (data, q,n,belakang);
Begin
Bila belakang = n maka antrian_penuh;
Belakang belakang + 1;
Q [belakang]data;
End;
Procedure DELETEQ(data,q,muka, belakang);
Begin
Bila muka = belakang maka antrian_kosong;
Muka  muka +1;
Data  q[muka];
End;

Lab. Applied Database Versi/Revisi : 1/3 Halaman: 2 - 6


Modul Praktikum Struktur Data & Algoritma Lanjut

Kesulitan utama dari prosedur di atas adalah adanya kemungkinan nilai Depan
atau Belakang yang melewati harga N. hal ini mungkin saja terjadi dimana banyak
sekali data yang dimasukkan ke dalam antrian dan selain itu juga banyak data
yang dikeluarkan dari dalam antrian. Setiap data dimasukkan, nilai belakang
bertambah satu, sedangkan setiap data dikeluarkan nilai Depan bertambah satu,
lambat laun kedua nilai variabel tadi akan melewati nilai N (indeks maksimum
dari array Q). Untuk menanggulangi hal tersebut maka harus dilakukan suatu
mekanisme sehingga nilai Depan dan Belakang dapat berputar kembali menjadi 0
bila telah melewati nilai N (wrap around). Untuk ini digunakan operator modulo
N dalam perhitungan Depan := Depan + 1 dan Belakang := Belakang + 1
sehingga bentuknya berubah menjadi :
Depan  (Depan + 1) MOD N
Belakang  (Belakang + 1) MOD N
Dengan demikian nilai Depan atau Belakang yang lebih dari N akan kembali lagi
ke nilai 0. Implementasi dari queue dengan demikian sama dengan implementasi
dari sirkular.

2.6 SOAL TUGAS & LATIHAN (PERTEMUAN KEENAM)


Latihan untuk pertemuan keenam :
1. Implementasikan struktur data (dalam array) pada tugas rumah nomor 1
menggunakan C/C++ dan lengkapi programnya untuk menambah dan
menghapus seperti pada tugas rumah nomor 2 dan 3!
2. Kembangkan program tersebut untuk menampilkan isi dari antrian
tersebut (gunakan program utama)!

Lab. Applied Database Versi/Revisi : 1/3 Halaman: 2 - 7

Anda mungkin juga menyukai