0% menganggap dokumen ini bermanfaat (0 suara)
87 tayangan22 halaman

Makalah Struktur Data

Makalah ini membahas implementasi stack dan queue dengan 3 kalimat: Makalah ini menjelaskan pengertian, operasi, dan fungsi stack dan queue serta cara implementasi kedua struktur data tersebut dalam bahasa C. Stack dan queue merupakan struktur data penting yang sering digunakan dalam pemrograman berbasis antrian.

Diunggah oleh

Jeff Saluling
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 DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
87 tayangan22 halaman

Makalah Struktur Data

Makalah ini membahas implementasi stack dan queue dengan 3 kalimat: Makalah ini menjelaskan pengertian, operasi, dan fungsi stack dan queue serta cara implementasi kedua struktur data tersebut dalam bahasa C. Stack dan queue merupakan struktur data penting yang sering digunakan dalam pemrograman berbasis antrian.

Diunggah oleh

Jeff Saluling
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 DOCX, PDF, TXT atau baca online di Scribd

`

MAKALAH
Mengimplementasikan Stack & Queue

Disusun untuk memenuhi tugas matakuliah Algoritma dan Struktur Data I


Dosen Pengampu : DR. Adi Nugroho, ST, MMSI

Disusun Oleh :
Jefferson J.H. Saluling (672019270)

Program Studi S1 Teknik Informatika


Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
`

Kata Pengantar

Puji syukur penulis memberikannya kepada Tuhan Yang Maha Esa karena dengan
berkah dan rahmat-Nya penulis dapat menyelesaikan makalah ini. Makalah ini disiapkan
dalam rangka memenuhi tugas mata kuliah Jaringan Komputer.

Makalah ini berjudul “Implementasi Stack dan Queue” berisi tentang inti kode bahasa
c, inventor, cara kerja, implementasi, kelebihan dan kekurangan Stack dan Queue. Makalah
ini memberikan pengalaman berharga bagi penulis. Banyak kendala yang penulis lalui selama
penulisan skripsi ini, namun berkat bantuan berbagai pihak kendala tersebut dapat diatasi.
Penulis mengucapkan terima kasih.

Penulis menyadari bahwa tanpa bantuannya, makalah ini tidak akan mungkin
terlaksana. Kertas itu jauh dari sempurna. Oleh karena itu, penulis mohon maaf jika dalam
penulisan skripsi ini terdapat hal-hal yang kurang berkenan di hati pembaca. Semoga artikel
ini bermanfaat bagi siapa saja yang membacanya.

Manado, 20 Maret 2021

Jefferson J.H. Saluling


`

DAFTAR ISI

Kata Pengantar..................................................................................................1

Daftar isi.............................................................................................................2

BAB I PENDAHULUAN.................................................................................3

1.1 Latar Belakang.................................................................................3

1.2 Rumusan Masalah..............................................................................3

1.3 Tujuan Makalah..................................................................................3

BAB II PEMBAHASAN................................................................................. 4

2.1 Pengertian Stack & Queue .................................................................4

2.2 Operasi Stack & Queue....................................................................6

2.3 Fungsi Stack & Queue.....................................................................7

2.4 Implementasi Staack & Queue...........................................................10

BAB III PENUTUP...............................................................................................21

3.1 Kesimpulan.......................................................................................21

Daftar Pustaka........................................................................................................22
`

BAB I

PENDAHULUAN

1.1 Latar Belakang

Dalam kehidupan sehari-hari kita pasti pernah menjumpai atau melakukan yang nama
antrian, misal saat mengantri di loket kereta, di teller bank, di rumah sakit, dll. Kita pasti
melakukan yang namanya antrian. Oleh karena itu di sini akan dibahas tentang antrian di
pemrograman java yang tujuannya memudahkan dan membantu kita pada kehidupan sehari-
hari.

1.2 Rumusan Masalah

Dari uraian latar belakang di atas dapat ditarik rumusan masalah yaitu :

1.   Apakah Stack & Queue itu?


2.   Apakah pengoperasian Stack & Queue?   
3.   Apakah fungsi Stack & Queue itu?

1.3 Tujuan Makalah


Tujuan dari pembuatan makalah ini adalah :

1.  Memahami pengertian Stack & Queue

2.  Memahami cara pengoperasian Stack & Queue

3.  Memahami fungsi Stack & Queue  


`

BAB II

PEMBAHASAN

2.1 Pengertian Stack & Queue

Stack

stack adalah salah satu struktur data yang digunakan untuk menyimpan sekumpulan objek
ataupun variabel. Sesuai namanya yaitu stack, tidak heran apabila objek yang terkumpul
terlihat seperti tumpukan. Karakteristik stack sendiri bersifat LIFO (last in first out). Artinya,
data yang terakhir masuk merupakan data yang akan keluar terlebih dahulu. Seperti halnya
tumpukan pada umumnya, misalnya tumpukan buku, yang di atas atau yang terakhir masuk
harus dikeluarkan terlebih dahulu untuk mendapatkan buku yang berada di tumpukan bawah.
Sebagai contoh, kamu mempunyai empat buku, yaitu buku matematika, fisika, biologi, dan
kimia. Buku matematika kamu masukkan terlebih dahulu, lalu buku selanjutnya fisika,
biologi, dan kimia. Untuk mendapatkan buku fisika, kamu harus mengeluarkan buku kimia
dan biologi terlebih dahulu, karena kedua buku tersebut tergolong buku yang terakhir masuk.
Analogi di atas seperti halnya stack yang memiliki sifat LIFO. Data terakhir yang masuk
harus keluar terlebih dahulu. Seperti yang sudah disebutkan sebelumnya, konsep ini pada
umumnya digunakan dalam pemrograman dan mengorganisir penyimpanan komputer.

Kelebihan dan Kekurangan Menggunakan Stack

Di balik pengertiannya yang terlihat cukup menguntungkan bagi programmer, sebenarnya


stack menyimpan beberapa kekurangan yang harus kamu ketahui.

Berikut kelebihan dan kekurangan dari stack,

1. Kelebihan

membantu mengelola data dengan metode LIFO

secara otomatis membersihkan objek

tidak mudah rusak

ukuran variabel tidak dapat diubah

mengontrol memori secara mandiri

2. Kekurangan
`

memori stack sangat terbatas

ada kemungkinan stack akan meluap atau overflow jika terlalu banyak objek

tidak memungkinkan akses acak, karena harus mengeluarkan tumpukan paling atas terlebih
dahulu untuk mengakses tumpukan paling bawah

Queue

Secara harfiah queue dapat diartikan sebagai antrian. Queue merupakan kumpulan data
dengan penambahan data hanya melalui satu sisi, yaitu belakang (tail) dan penghapusan data
hanya melalui sisi depan (head). Berbeda dengan stack yang bersifat LIFO (Last In First Out)
maka queue bersifat FIFO (First In First Out), yaitu data yang pertama masuk akan keluar
terlebih dahulu dan data yang terakhir masuk akan keluar terakhir. Berikut ini adalah
gambaran struktur data queue.

Elemen yang pertama kali masuk ke dalam queue disebut elemen depan (front/head of
queue), sedangkan elemen yang terakhir kali masuk ke queue disebut elemen belakang
(rear/tail of queue). Perbedaan antara stack dan queue terdapat pada aturan penambahan dan
penghapusan elemen. Pada stack, operasi penambahan dan penghapusan elemen dilakukan di
satu ujung. Elemen yang terakhir kali dimasukkan akan berada paling dekat dengan ujung
atau dianggap paling atas sehingga pada operasi penghapusan, elemen teratas tersebut akan
dihapus paling awal, sifat demikian dikenal dengan LIFO. Pada queue, operasi tersebut
dilakukan di tempat yang berbeda. Penambahan elemen selalu dilakukan melalui salah satu
ujung, menempati posisi di belakang elemen-elemen yang sudah masuk sebelumnya atau
menjadi elemen paling belakang. Sedangkan penghapusan elemen dilakukan di ujung yang
berbeda, yaitu pada posisi elemen yang masuk paling awal atau elemen terdepan. Sifat yang
demikian dikenal dengan FIFO.

Operasi‐operasi standar pada queue adalah: 

1.       Membuat queue atau inisialisasi.


2.       Mengecek apakah queue penuh.
3.       Mengecek apakah queue kosong.
4.       Memasukkan elemen ke dalam queue atau InQueue (Insert Queue).
5.       Menghapus elemen queue atau DeQueue (Delete Queue).
`

2.2 Operasi Stack & Queue

Stack
Jenis-jenis Operasi Stack

1. Pop

2. Push

3. isFull

4. isEmpty

5. Peek

Queue
Jenis-jenis Operasi Queue

1. Create Queue (Q), atau constructor menciptakan antrian kosong Q.


2. Add Queue (Q, X) memasukkan elemen X sebagai elemen akhir di Q.
3. Remove Queue (Q, X)atau mengambil elemen depan di antrian Q ke elemenX.
Operasi - operasi pengaksesan tambahan yang dapat dilakukan adalah :
1. Head Queue (Q), atau Front (Q, X) mengirim elemen terdepan tanpa menghapus.
2. Tail Queue (Q), mengirim elemen tanpa menghapusnya.
Operasi - operasi Query tambahan yang dapat dilakukan adalah :
1. Is Empty Queue (Q), mengirim apakah antrian Q adalah kosong.
2. Is Full Queue (Q), mengirim apakah antrian Q adalah penuh bila kapasitas antrian Q
didefinisikan.
3. Is Overflow Queue (Q), mengirim apakah antrian Q telah mengalami overflow.
4. Is Underflow Queue (Q), mengirim apakah antrian Q mengalami underflow.
Operasi - operasi terhadap seluruh antrian Q antara lain adalah :
1. Size Queue (Q), mengetahui jumlah elemen di antrian Q.
2. Is Equal Queue (Q1, Q2), mengirim apakah antrian Q1 dan Q2 sama isinya.
Jumlah operasi pokok Queue tidak banyak. Dengan demikian, sangat sederhana untuk
menyatakan apa pun mengenai implementasinya.
`

2.3 Fungsi Stack & Queue

Stack
 Fungsi Pop
Pop pada stack adalah operasi yang berfokus pada penghapusan elemen.
Dikarenakan dalam stack programmer hanya memiliki akses pada bagian atas,
hanya ada satu elemen yang dapat dihapus.
 Fungsi Push
Kebalikan dari pop, operasi Push justru lebih berfokus pada memasukkan elemen
ke dalam stack atau tumpukan. Seperti halnya sistem LIFO, programmer atau
pengguna hanya dapat memasukkan elemen baru di bagian atas tumpukan.
 Fungsi isFull
Operasi stack yang satu ini adalah untuk mengetahui apakah tumpukan sudah
penuh atau belum.
 Fungsi isEmpty
Kebalikan dari isFull, isEmpty merupakan operasi yang digunakan untuk
memeriksa apakah tumpukan kosong atau tidak.
 Fungsi Peek
 Seperti namanya, dilansir dari Tutorials Point, operasi Peek atau mengintip adalah
operasi yang dilakukan untuk mengetahui data teratas dari tumpukan tanpa harus
menghapusnya.

Queue
 Fungsi Create
Procedure create berguna untuk menciptakan queue yang baru dan kosong yaitu
dengan cara memberikan nilai awal (head) dan nilai akhir (tail) dengan nol (0).
Nol menunjukan bahwa queue masih kosong.

Procedure Create:
Begin
Head= 0 , Tail= 0
End:
`

 Fungsi IsEmpty
Function empty berguna untuk mengecek apakah queue masih kosong atau sudah
berisi data. Hal ini dilakukan dengan mengecek apakah tail bernilai nol atau
tidak, jika ya maka kosong.

Int IsEmpty()
{
if(antrian.tail== -1)
return 1;
else
return 0;
}

 Fungsi IsFull
Untuk mengecek apakah antrian sudah penuh atau belum. Dengan cara mengecek
nilai Tail, jika tail = MAX-1 berarti antrian sudah penuh (MAX-1 adalah batas
elemen array dalam program C++).

Int IsFull()
{
if(antrian.tail== Max-1)
return 1;
else
return 0;
}

 Fungsi Enqueue
Memasukan data ke dalam antrian, penambahan elemen selalu  ditambahkan di
elemen paling belakang. Penambahan elemen selalu menggerakan variabel Tail
dengan cara increment counter tail.
`

 Fungsi Dequeue
Mengeluarkan data terdepan dari antrian, dengan cara mengurangi counter Tail
dan menggeser semua elemen antrian kedepan. Dengan cara menggeser semua
elemen antrian kedepan dan mengurangi Tail dengan 1. Penggeseran dilakukan
dengan menggunakan looping.

 Fungsi Clear
Menghapus seluruh antrian, dengan cara mengeluarkan semua antrian tersebut
satu per satu hingga antrian kosong dengan memanfaatkan fungsi dequeue.

Void Clear(){
antrian.head=antrian.tail= -1;
printf (“data clear “);
}
`

2.4 Implementasi Stack & Queue

Stack

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#include <string.h>

#include <conio.h>

#include <limits.h>

int stack[100];

int SIZE=100;

int top =-1;

void push(int element);

int pop();

void empty();

int main()

int choice, data;

while(1)

/* Menu */
`

printf("------------------------------------\n");

printf(" STACK IMPLEMENTATION PROGRAM \n");

printf("------------------------------------\n");

printf("1. Push\n");

printf("2. Pop\n");

printf("3. Size\n");

printf("4. Exit\n");

printf("------------------------------------\n");

printf("Enter your choice: ");

scanf("%d", &choice);

switch(choice) {

case 1:

printf("Enter data to push into stack: ");

scanf("%d", &data);

// Push element to stack

push(data);

break;

case 2:

data = pop();

// If stack is not empty

if (data != INT_MIN)

printf("Data => %d\n", data);

break;

case 3:
`

printf("Stack size: %d\n", top + 1);

break;

case 4:

printf("Exiting from app.\n");

exit(0);

break;

default:

printf("Invalid choice, please try again.\n");

printf("\n\n");

void push(int element)

// Check stack overflow

if (top >= SIZE)

printf("Stack Overflow, can't add more element element to stack.\n");

return;

// Increase element count in stack

top++;
`

// Push element in stack

stack[top] = element;

printf("Data pushed to stack.\n");

int pop()

// Check stack underflow

if (top < 0)

printf("Stack is empty.\n");

return INT_MIN;

// Return stack top and decrease element count in stack

return stack[top--];

Queue

#include <stdio.h>

#include <stdlib.h>

#include <limits.h>

// Queue capacity

#define CAPACITY 100

int queue[CAPACITY];

unsigned int size = 0;


`

unsigned int rear = CAPACITY - 1; // Initally assumed that rear is at end

unsigned int front = 0;

/* Function declaration for various operations on queue */

int enqueue(int data);

int dequeue();

int isFull();

int isEmpty();

int getRear();

int getFront();

/* Driver function */

int main()

int ch, data;

/* Run indefinitely until user manually terminates */

while (1)

/* Queue menu */

printf("--------------------------------------\n");

printf(" QUEUE ARRAY IMPLEMENTATION PROGRAM \n");

printf("--------------------------------------\n");

printf("1. Enqueue\n");

printf("2. Dequeue\n");

printf("3. Size\n");
`

printf("4. Get Rear\n");

printf("5. Get Front\n");

printf("0. Exit\n");

printf("--------------------------------------\n");

printf("Select an option: ");

scanf("%d", &ch);

switch (ch) {

case 1:

printf("\nEnter data to enqueue: ");

scanf("%d", &data);

// Enqueue function returns 1 on success otherwise 0

if (enqueue(data))

printf("Element added to queue.");

else

printf("Queue is full.");

break;

case 2:

data = dequeue();

// on success dequeue returns element removed otherwise returns INT_MIN

if (data == INT_MIN)

printf("Queue is empty.");

else

printf("Data => %d", data);


`

break;

case 3:

// isEmpty() function returns 1 if queue is emtpy otherwise returns 0

if (isEmpty())

printf("Queue is empty.");

else

printf("Queue size => %d", size);

break;

case 4:

if (isEmpty())

printf("Queue is empty.");

else

printf("Rear => %d", getRear());

break;

case 5:

if (isEmpty())

printf("Queue is empty.");

else

printf("Front => %d", getFront());

break;

case 0:

printf("Exiting from app.\n");

exit(0);
`

default:

printf("Invalid choice, please input number between (0-5).");

break;

printf("\n\n");

int enqueue(int data)

// Queue is full throw Queue out of capacity error.

if (isFull())

return 0;

// Ensure rear never crosses array bounds

rear = (rear + 1) % CAPACITY;

// Increment queue size

size++;

// Enqueue new element to queue

queue[rear] = data;

// Successfully enqueued element to queue

return 1;

}
`

int dequeue()

int data = INT_MIN;

// Queue is empty, throw Queue underflow error

if (isEmpty())

return INT_MIN;

// Dequeue element from queue

data = queue[front];

// Ensure front never crosses array bounds

front = (front + 1) % CAPACITY;

// Decrease queue size

size--;

return data;

int isFull()

return (size == CAPACITY);

int isEmpty()

{
`

return (size == 0);

int getFront()

return (isEmpty())

? INT_MIN

: queue[front];

int getRear()

return (isEmpty())

? INT_MIN : queue[rear];

}
`

BAB III

PENUTUP

3.1 Kesimpulan

Stack adalah suatu koleksi atau kumpulan item data yang terorganisasi dalam bentuk urutan
linier, yang operasi pemasukan dan penghapusan datanya dilakukan pada salah satu sisinya.
Pada stack, jarang sekali dilakukan traversal, karena keunikan stack justru pada operasi yang
hanya menyangkut elemen TOP. Namun dibutuhkan traversal misalnya untuk mencetak isi
stack. Pada stack, elemen yang diproses hanya elemen pada TOP.Queue merupakan
kumpulan data dengan penambahan data hanya melalui satu sisi, yaitu belakang (tail) dan
penghapusan data hanya melalui sisi depan (head). Elemen yang pertama kali masuk ke
dalam queue disebut elemen depan (front/head of queue), sedangkan elemen yang terakhir
kali masuk ke queue disebut elemen belakang (rear/tail of queue). Penambahan elemen selalu
dilakukan melalui salah satu ujung, menempati posisi di belakang elemen-elemen yang sudah
masuk sebelumnya atau menjadi elemen paling belakang. Sedangkan penghapusan elemen
dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang masuk paling awal atau
elemen terdepan. Sifat yang demikian dikenal dengan FIFO (First In First Out).
`

Daftar Pustaka

Adieb, M. (2021, februari 4). Memahami Stack, Struktur Data yang Mudahkan Programmer
Jalankan Tugasnya. Retrieved from https://glints.com: https://glints.com/id/lowongan/stack-
adalah/#.YH_Q52czZPZ

AzizFS. (2018, October 18). Pengertian dan Contoh Sederhana tentang Stack dan Queue.
Retrieved from azizfirmansaputra.blogspot.com: http://17416255201077-
azizfirmansaputra.blogspot.com/2018/10/pengertian-dan-contoh-sederhana-
tentang.html

Blog, E. (2010, februari 6). Stack & Queue : Penjelasan, Deskripsi Fungsi Dasar,
Pemodelan, dan Penerapan Stack. Retrieved from kuliahinformatika.wordpress.com:
https://kuliahinformatika.wordpress.com/2010/02/06/stack-queue-penjelasan-
deskripsi-fungsi-dasar-pemodelan-dan-penerapan-stack/

HAMBALI, Y. (2019, juni 3). STRUKTUR DATA. Retrieved from sites.google.com:


https://sites.google.com/site/arrayyusuphambaliif15d1053/home

nurrahman, S. (2018, january 3). pengertian stack dan queue dalam struktur data dan
penjelasannya. Retrieved from bocahngoding.blogspot.com.

PENGERTIAN, K. (2015, November 11). Pengertian Stack Dan Queue. Retrieved from
http://www.kumpulanpengertian.com/:
http://www.kumpulanpengertian.com/2015/11/pengertian-stack-dan-queue.html

Anda mungkin juga menyukai