You are on page 1of 5

Nama : Akhyar Wijaya

Nim : 1508108010030
UTS Struktur Data
Soal ;
1. Jelaskan perbedaan penggunaan data Linked List dan array pada Stack (Tumpukan)
dan Queue (Antrian)
Jawaban :
Pengertian Stack atau Tumpukan adalah suatu stuktur data yang penting dalam
pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke
dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.
Stack (Tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP) dan Aturan
penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“ TOP
dan Penghapusan selalu dilakukan pada TOP

 Perbedaan Stack dan Queue dalam Linked List


Stack memakai sistem LIFO atau last in first out (yang pertama masuk akan keluar terakhir,
begitu pula yang terakhir masuk akan keluar pertama kali) yang apabila kita mengahapus/
keluar data, maka data yang terakhirlah yang akan terhapus/ keluar terlebih dahulu.

Sementara queue memakai siste FIFO atau first in first out (yang pertama masuk akan keluar
pertama, begitu pula yang masuk terakhir akan keluar terakhir) yang apabila kita menghapus /
mengeluarkan data, maka data yang pertamalah yang akan terhapus/ keluar terdahulu dan data
yang terakhir akan terhapus/ keluar terakhir.

Guna counter pada rangkaian stack dan queue adalah untuk menentukan apakah stack atau
queue tersebut sudah full atau masih empty.

 Perbedaan Stack dan Queue dalam Array


Operasi pada stack :
 Push : digunakan untuk menembah item pada Stack pada Tumpukan paling atas.
 Pop : digunakan untuk mengambil item pada Stack pada Tumpukan paling atas.
 Clear : digunakan untuk mengosongkan Stack.
 Create Stack : membuat Tumpukan baru S, dengan jumlah elemen kosong.
 MakeNull : mengosongkan Tumpukan S, jika ada elemen maka semua elemen dihapus.
 IsEmpty : fungsi yang digunakan untuk mengecek apakah Stack sudah kosong.
 Isfull : fungsi yang digunakan untuk mengecek apakah Stack sudah penuh.

Operasi pada Queue :


 Create Queue (Q) : membuat antrian baru Q, dengan jumlah elemen kosong.
 Make NullQ (Q) : mengosongkan antrian Q, jika ada elemen maka semua elemen
dihapus.
 EnQueue : berfungsi memasukkan data kedalam antrian.
 DeqQueue : berfungsi mengeluarkan data terdepan dari antrian.
 Clear : Menghapus seluruh Antrian
 IsEmpty : memeriksa apakah antrian kosong
 IsFull : memeriksa apakah antrian penuh.

Stack dan Queue dapat diimplementasikan dengan array, record maupun pointer / link-list
sedangkan array, record dan pointer / link list sendiri merupakan tipe data struktur yang dapat
terdiri dari byte, integer, real dll. Hal ini menyebabkan implementasi stack memakai linked list
akan memerlukan memori yang lebih banyak dari pada kalau di implementasikan dengan
Array.

Dalam perancangan suatu program, kadang-kadang diperlukan tipe data yang abstraksinya
lebih tinggi dari sekedar native data type yang tersedia. Type data yang lebih tinggi
abstraksinya pada umumnya tidak disediakan native data typenya, contohnya stack, tetapi pada
tahap implementasi dari tipe data ini, tetap diperlukan native data type yang tersedia seperti ;
array, record, pointer, dan linked-list.

2. Jelaskankan maksud sintaks berikut :


Linked list adalah suatu cara untuk menyimpan data dengan struktur sehingga dapat
secara otomatis menciptakan suatu tempat baru untuk menyimpan data yang diperlukan.
Program akan berisi suatu struct atau definisi kelas yang berisi variabel yang memegang
informasi yang ada didalamnya, dan mempunyai suatu pointer yang menunjuk ke suatu struct
sesuai dengan tipe datanya.
Tujuan sintaks diatas ialah menciptakan ruang-ruang bagi node-node dalam membuat dan
menangani sturuktur data yang bersifat dinamis.

3. Jelaskan maksud fungsi PUSH dan POP pada STACK dan buatlah algoritma untuk
kedua
a. Operasi push
Operasi push adalah operasi dasar dari stack yang berguna untuk menambahkan suatu elemen
data baru pada stack dan di simpan pada posisi top yang akan mengakibatkan posisi top akan
berubah.
Langkah-langkah operasi ini:
1. Periksa apakah stack penuh(IsFull). Jika berniali false/0(tidak penuh) maka proses push
dilakukan dan jika pemeriksaan ini bernilai true/1, maka proses push digagalkan.
2. Proses Push-nya sendiri adalah dengan menambahkan field top dengan 1, kemudian elemen
pada posisi top di isi dengan elemen data baru.
Contoh algoritma push :
b. Operasi Pop
Operasi Pop adalah salah satu operasi paling besar dari stack yang brguna
untuk mengambil elemen terakhir(top) dan kemudian menghapus elemen tersebut sehingga
posisi top akan berpindah. Operasi ini biasanya dibuat dalam bentuk function yang me-
return-kan nilai sesuai data yang ada di top.
Operasi Pop pada Stack yang menggunakan array adalah terlebih dahulu
memeriksa apakah stack sedang keadaan kosong, jika tidak kosong maka data diambil pada
posisi yang ditunjuk oleh posisi top. Kemudian disimpan dalam variabel baru dengan nama
"data".

4. Perhatikan program Queue (Antrian) dalam bahasa C berikut; code tersebut memiliki
berapara error ketika dijalankan. Tugas anda perbaiki kesalahannya dan dapat hasil
ketika program dijalankan. :

#include<stdio.h>
#define MAX_SIZE 10

int main() {
int item, choice, i;
int arr_queue[MAX_SIZE];
int rear = 0;
int front = 0;
int exit = 1;

printf("\nSimple Queue Example - Array");

while {
printf("\n\n Queue Main Menu");
printf("\n1.Insert \n2.Remove \n3.Display \nOthers to exit");
printf("\nEnter Your Choice : ");
scanf("%d", &choice);
switch (choice) {
case 1:
if (rear == MAX_SIZE)
printf("\n## Queue Reached Max!!");
else {
printf("\nEnter The Value to be Insert : ");
scanf("%d", &item);
printf("\n## Position : %d , Insert Value : %d ", rear, item);
arr_queue[rear++] = item;
}
break;
case 2:
if (front == rear)
printf("\n## Queue is Empty!");
else {
printf("\n## Position : %d , Remove Value : %d ", front,
arr_queue[front]);
front++;
}
break;
case 3:
printf("\n## Queue Size : %d ", rear);
for (i = front; i < rear; i++)
printf("\n## Position : %d , Value : %d ", i, arr_queue[i]);
break;
default:
exit = 0;
break;
}
} while (exit);

return 0;
}

You might also like