STRUKTUR DATA
NIM : 203010503013
KELAS :C
FAKULTAS TEKNIK
2021
BAB I
A. Tujuan
1. Mahasiswa mampu memahami konsep dari Queue dan Stack.
2. Mehasiswa mampu mengimplementasikan Queue dan Stack.
B. Landasan Teori
1. Queue
Queue (antrian) dapat diartikan sebagai suatu kumpulan data yang
seolah-olah terlihat seperti ada data yang diletakkan di sebelah data
yang lain seperti pada gambar 1.1, dimana data masuk melalui lorong
disebelah kanan dan masuk dari terowongan sebelah kiri. Hal ini
mambuat antrian bersifat FIFO ( First In First Out), beda dengan stack
yang berciri LIFO.
a. Create
Untuk menciptakan queue menggunakan perintah struct dan
menginisialisasi queue dengana cara memebuata head dan tail = -1.
Beberapa orang memulai index queue dari -1 dan ada juga yang
dari 0.
define MAX 8
Struct Queue{
Int elemen[MAX}
Int front,rear,count;
b. Enqueue
Untuk menambahkan elemen ke dalam Antrian, penambahan
elemen selalu ditambahkan di elemen paling belakang.
Penambahan elemen selalu menggerakan variabel Rear dengan
cara increment counter Rear terlebih dahulu.
Q->elemen[Q->rear] = data;
Q->rear++;
Q->count++;
}
c. Dequeue
Digunakan menghapus elemen terdepan/pertama (head) dari
antrian dengan cara menggeser semua antrian ke depan dan
mengurangi tail dengan 1 penggeseran dilakukan dengan
menggunakan looping.
d. IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakan queue masih
koosong atau sudah berisi data. Hal ini dilakukan dengan
mengecek apakah head masih menunjukan pada Null atau tidak.
Jka benar berarti queue masih kosong.
e. IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh
atau masih bisa menampung data dengan cara mengecek apakah
jumlah (queue sudah sama dengan MAX_QUEUE atau belum. Jika
benar maka queue sudah penuh.
2. Stack
Pengertian Stack pada struktur data adalah sebagai tumpukan dari
benda, sekumpulan data yang seolah-olah diletakkan di atas data yang
lain, koleksi dari objek-objek homogen, atau suatu urutan elemen yang
elemennya dapat diambil dan ditambah hanya pada posisi akhir (top)
saja. Stack pada struktur data dapat diilustrasikan dengan dua buah
kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak
yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah kotak ketiga,
keempat, kelima, dan seterusnya, maka akan diperoleh sebuah stack
kotak yang terdiri dari N kotak.
Q->elemen[Q->top] = data;
Q->top++;
int keeper=Q->elemen[Q->top];
Q->top--;
}
Cara mendefenisikan Stack dengan Array of Struct yaitu
dengan menggunakan struct, stack hanya memiliki karateristik berupa
top dan bottom sebagai penanda awal dan akhir serta elemennya itu
sendiri. Definisikan konstanta MAX_STACK untuk menyimpan
maksimum isi stack kemudian buatlah variabel array data sebagai
implementasi stack.
#define MAX_STACK 10
struct Stack{
int elemen_array[MAX_STACK];
int top;
int bottom;
};
BAB II
PEMBAHASAN
Untuk tugas program pada modul 2 ini yaitu membuat program sebuah
struct data pada list musik yang mampu melakukan Dequeue (FIFO) dan Pop
(LIFO) pada struck data program musik tersebut. Dan operasi-operasi yang dibuat
adalah create, input, dequeue, pop, clear, dan print. Dibawah ini adalah gambar
inputan program serta penjelasannya :
Gambar 2.1 Inputan program struck musik
Penjelasan :
Bagian ini sebenarnya bersifat opsional, bisa ditulis bisa juga tidak.
Pada contoh di atas, menggunakan namespace std. Karena fungsi-fungsi
pada iostream dibungkus dalam namespace.std. Apabila tidak
menggunakan namespace.std, maka untuk menggunakan fungsi cin dan
cout yang ada pada iostream harus diawali dengan (std:: ). Jika tidak ingin
menulis std:: terus-menerus, maka gunakan namespace std. Untuk tanda
titik koma (;) menandakan itu statement. Setiap 1 titik koma berarti 1
statement.
3. Bagian deklarasi define
Bagian struct yaitu memiliki variabel dari queue dengan tipe data
integer dan nama-nama variabelnya adalah top, Dequeue, bottom, pront,
rear, data dengan nilai konstanta 30, dan urut dengan nilai konstanta 30.
Untuk tanda kurung kurawal ({) merupakan sebuah blok pembuka, blok
pembuka ini memiliki sebuah pasangan yaitu blok penutup (}).
5. Bagian operasi queue
a. Pertama masukan fungsi push untuk menambahkan/menumpukan data
ke tumpukan/array yang sudah dibuat variabel sebelumnya. Dengan
tipe data integer dengan nama variabel “d”. Bisa diliat digambar untuk
deklarasi fungsi push, terdapat kode top++ artinya menambahkan
index array untuk nilai variabel top = -1. Lalu menampilkan kalimat
“Data berhasil dimasukkan “ dalam output. Kemudian masukan sintaks
getch untuk membaca input. Untuk tanda titik koma (;) di akhir itu
berguna untuk menandakan bahwa itu statement. Setiap 1 titik koma
berarti 1 statement.
b. Kedua adalah fungsi operasi pop mengambil data pada tumpukan /
array paling akhir ditambahkan sebelumnya. Dapat dilihat
pendeklarasian pop pada gambar di atas, untuk mengambil datanya
pop menggunakan to--yaitu mengambil data yang paling terakhir
dimasukan.
c. Ketiga adalah operasi queue (FIFO) yaitu elemen pertama yang masuk
maka elemen pertama juga dia keluar. Dapat dilihat pendaklarasiannya
pada gambar diatas. Lalu menampilkan sebuah data yang telah di input
dan getch untuk membaca inputannya.
d. Keempat fungsi operasi IsFull pada program untuk melakukan
pengecekan terhadap queue, apakah queue tersebut penuh atau tidak,
dengan tipe data integer. pada operasi ini menggunakan If Else adalah
pilihan terakhir yang akan dijalankan jika semua pilihan tidak
memiliki nilai benar (true) pada kondisi yang ada.
e. Kelima fungsi operasi IsEmpty pada program untuk melakukan
pengecekan terhadap queue, apakah queue kosong atau tidak. Sama
operasi ini menggunakan If Else yaitum pilihan terakhir yang akan
dijalankan jika semua pilihan tidak memiliki nilai benar (true) pada
kondisi yang ada.
f. Keenam yaitu print queue yaitu untuk menampilkan nilai-nilai elemen
queue menggunakan looping dari head sampai tail. Dengan
memasukan operasi Is Empty dan menampilkan antrian kosong jika
tidak ada inputan. Pada tampilan menggunakan If Else dan for, for
yaitu yaitu berguna untuk memproses pengulangan sesuai dengan
jumlah pengulangannya. Bentuk struktur pengulangan for yaitu
inisialisasi, untuk memberikan nilai awal untuk variabel dan hanya
dijalankan sekali saja. Condision yaitu jika bernilai true maka looping
dilanjutkan dan dieksekusi dan jika loop berhenti statement akan
diabaikan dan tidak dieksekusi. Increase (i++) yaitu menjalankan
perintah secara increment (++).
g. Ketujuh fungsi clear untuk menghapus elemen-elemen queue dengan
cara tail dan head -1, penghapusan elemen-elemen queue sebenarnya
tidak menghapus arraynya, namun hanya mengeset indeks
pengaksesannya ke nilai -1 sehingga elemen-elemen queue tidak lagi
terbaca.
h. Kedelapan fungsi tukar dengan tipe data integer dengan variabel a dan
b dengan memasukan variabel urut tersebut.
i. Kesembilan fungsi print/tampilan bagian ini akan menampilkan data
yang telah diinput oleh push, bagian ini menggunakan perulangan
looping yaitu for. Perulangan for berfungsi sebagai counter yang
menghitung berapa kali akan mengulang dan untuk mengulang suatu
proses yanag telah diketahui jumlahnya.
6. Bagian fungsi utama
Bagian ini adalah fungsi utama int main() artinnya main program
mengembalikan nilai int secara default, int main() akan mengembalikan
nilai 0, dan fungsi main() tidak memiliki bagan deklarasi lokal, dan hanya
memiliki sebuah pernyataan yang dapat dieksekusi, berupa fungsi output
printf(). Pada C++ semua fungsi diikuti oleh sepasang tanda kurung().
Fungsi main() adalah fungsi yang mempunyai kedudukan sangat istimewa.
Fungsi main() berisi rutin utama program yang akan dijalankan ketika
program bahasa C kita eksekusi. Jadi semua kontrol alur proses program
berada dalam fungsi main() ini. Untuk tanda kurung kurawal ({)
merupakan sebuah blok pembuka, blok pembuka ini memiliki sebuah
pasangan yaitu blok penutup. Lalu nama variabelnya adalah a dan input
denga memanggil variabel top yang bernilai -1. Kemudian menampilkan
menu yang dimasukan yaitu push, pop, dequeue, clear, print, dan terminate
lalu menampilkan pilihan menu yang dipilih.
7. Bagian percabangan switch case
KESIMPULAN
Queue (antrian) adalah salah satu list linier dari struktur data yang
beroperasi dengan cara FIFO yaitu elemen pertama yang masuk merupakan
elemen pertama kelaur. Data-data di dalam antrian dapat bertipe integer, real,
record dalam bentuk sederhana atau terstruktur. Queue dilakukan dengan cara
penyisipan di satu ujung, sedangkan penghapusan di ujung lain. Ujung penyisipan
biasa disebut rear/tail, sedangkan penyisipan penghapusan disebut pront/head.
Dosen Teknik Informatika. 2020. Modul Praktikum Struktur Data. Palangka Raya
: Fakultas Teknik Universitas Palangka Raya.
LAMPIRAN
Gambar 2.1 Inputan program struck musik
Gambar 2.2 Output program struck sebelum menginput data.