Anda di halaman 1dari 13

LAPORAN STRUKTUR DATA

LINKED LIST IMPLEMENTATION OF STACK AND QUEUE

DISUSUN OLEH :

I KOMANG SATYA DHARMA PURUSATAMA

1908561012

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS UDAYANA

2020
BAB I

PENDAHULUAN

1. Apa itu Linked List ?

Merupakan suatu struktur data linier, yang dimana berbeda dengan array,
walaupun sama-sama merupakan struktur data linier, linked list dibentuk secara
dinamik. Ciri khas dari linked list adalah memiliki elemen yang bernama”Node”
yang juga sebagai pembeda antara array dengan linked list dimana array dapat
diakses dengan indeksnya, sedangkan linked list menggunakan pointer yang
mengacu pada node tersebut.

2. Operasi - operasi pada linked list

a) Insert adalah operasi yang berfungsi menambah simpul baru kedalam


suatu linked list.

b) Isempty berfungsi menentukan apakah linked list masih kosong

c) Find first berfungsi menampilkan elemen pertama dari linked list

d) Find next berfungsi menampilkan elemen selanjutnya dari linked list

e) Retrieve berfungsi mengambil elemen yang ditunjuk oleh now. Elemen


tersebut lalu dikembalikan oleh fungsi.

f) Update berfungsi mengubah elemen yang ditunjuk oleh now dengan isi
dari sesuatu

g) Delete Now berfungsi menghapus elemen yang ditunjuk oleh now. Jika
yang dihapus adalah elemen pertama dari linked list( head ), head akan
berpindah ke elemen berikut.

h) Delete Head berfungsi menghapus elemen yang ditunjuk oleh head. Head
akan berpindang ke elemen selanjutnya.

i) Clear berfungsi menghapus linked yang sudah ada


3. Stack ?

Bisa dikatakan juga sebuah tumpukan koleksi objek yang menggunakan


prinsip LIFO ( Last in First Out ), yang dimana data yang diinputkan terakhir
kali akan pertama kali dikeluarkan. Terdapat istilah TOP dimana merupakan
sebutan untuk elemen atau objek paling atas. Lalu terdapat juga berbagai
istilah dalam proses operasi stuck ini, yaitu :

a. Push : Menambahkan sebuah elemen ke suatu tumpukan.


b. Pop : Menghapus suatu elemen pada tumpukan tertinggi
c. Peek : Melihat data TOP
d. Clear : Menghapus semua data pada tumpukan
e. isEmpty : Mengecek apakah stack kosong atau tidak
f. isFull : Mengecek apakah stack full atau tidak

4. Queue ?

Merupakan barisan yang terdiri dari elemen, yang dimana jika


ditambahkan, maka akan dilakukan pada posisi belakang ( rear ), sedangkan
penghapusan akan dilakukan pada posisi depan ( front ), dengan kata lain
Queue bersifat FIFO ( First in First Out ).
BAB II

PERMASALAHAN

1. Buatlah sebuah program menggunakan bahasa C++, yang dimana merupakan


bentuk implementasi dari stack dengan menggunakan linked list. Program
tersebut harus berisi fitur pengoprasian operasi-operasi push, pop, peek, dan
dapat menampilkan data yang ada pada stack tersebut ( display ).
2. Buatlah sebuah program menggunakan bahasa C++, yang dimana merupakan
bentuk implementasi dari queue dengan menggunakan linked list. Program
tersebut harus berisi fitur pengoprasian operasi-operasi inqueue, dequeue,
peek, dan dapat menampilkan data yang ada pada queue tersebut ( display ).
BAB III

PEMBAHASAN

1. Jika kita lihat, penyelesaian permasalah nomor satu tidaklah jauh berbeda
dengan penyelesaian dengan menggunakan metode array. Disini saya
menggunakan 3 librabry, yaitu iostream, conio, dan juga cstdlib, yang dimana
saya menggunakan iostream karena mayoritas perintah input dan output saya
menggunakan perintah”cout>>” dan “cin<<”, lalu conio disini saya gunakan
karena memanfaatkan beberapa item yang ada pada library conio seperti
“gecth()”, lalu yang terakhir untuk penggunaan cstdlib karena saya
menggunakan fitur “malloc” yang dimana berguna dalam alokasi memori
block. Tidak lupa saya juga menggunakan struck disini agar memudahkan
dalam pengerjaan. Untuk codingannya bisa dilihat :

#include<iostream>
#include<conio.h>
#include <cstdlib>
using namespace std;

struct LL
{
int data;
struct LL *next;
}*top = NULL;

void push(int);
void pop();
void display();
void peek();

int main()
{
int a, value;
while(1){
cout<<"\nSelamat datang di program S3P dengan Linked List";

cout<<"\n=============================================
";
cout<<"\n==================-------
====================";
cout<<"\nTerdapat beberapa opsi :";
cout<<"\n1. Push\n2. Pop\n3. Display\n4. Peek\n";
cout<<"Mau pilih opsi berapa? : ";
cin>>a;
switch(a){
case 1:
cout<<"Masukan data yang akan dimasukan kedalam stack: ";
cin>>value;
push(value);
break;
case 2:
pop();
break;
case 3:
display();
break;
case 4:
peek();
break;
default:
cout<<"\nMaaf, opsi tersebut tidak ada\n";
}
}
}
void push(int value)
{
struct LL *newLL ;
newLL = (struct LL *)malloc(sizeof(struct LL ));
newLL ->data = value;
if(top == NULL)
newLL ->next = NULL;
else
newLL ->next = top;
top = newLL ;
}
void pop()
{
if(top == NULL)
cout<<"\ntidak ada stack\n";
else{
struct LL *temp = top;
cout<<"\nDeleted element: ";cout<<temp->data;
top = temp->next;
free(temp);
}
}
void display()
{
if(top == NULL)
cout<<"\ntidak ada stack\n";
else{
struct LL *temp = top;
while(temp->next != NULL){
cout<<temp->data;
temp = temp -> next;
}
cout<<temp->data;
}

}
void peek()
{
int intip;
if(top == NULL){
cout<<"tidak ada stack"<<endl;
return;
}
else
{
cout<<"\n";cout<<top;
}
}
//catatan : mohon maaf sebelumnya, disini untuk fitur peek masih belum bisa
berjalan karena saya masih mengalami kendala dalam menggunakan variabel
apa yang digunakan sebagai nilai data yang berada diatas, yang dimana disini
saya menggunakan fitur dari library “cstdlib” sehingga saya sedikit mengalami
kesusahan, sekian terimakasih.

2. Untuk penyelasian nomor 2 juga bisa dibilang hampir mirip dengan


penyelesaian menggunakan array. Disini saya menggunakan library iostream
dan juga stdlib.h, yang dimana tujuan saya menggunakan iostream yaitu karena
mayoritas perintah input output yang saya gunakan adalah “cout>>”, dan
“cin<<”. Untuk stdlib.h saya gunakan untuk memanfaatkan fitur dari “malloc”
dan juga “free”. Tidak lupa pula saya menggunakan struck disini agar
memudahkan dalam pengerjaan. Untuk codingannya bisa dilihat :

#include <iostream>
#include <stdlib.h>
using namespace std;

struct LL
{
int info;
struct LL *ptr;
}*depan,*belakang,*temp,*b;

int peek();
void inqueue(int data);
void dequeue();
void display();
void exit();

int count = 0;

int main()
{
int no, a, e;
cout<<"\nSelamat datang di program QUEUE LINKED LIST";
cout<<"\n========================================";
cout<<"\n==========---------------===============";
cout<<"\nTerdapat beberapa opsi :"<<endl;
cout<<"\n 1 - inqueue";
cout<<"\n 2 - Dequeue";
cout<<"\n 3 - Peek";
cout<<"\n 4 - Display";
cout<<"\n 5 - Exit";
while (1)
{
cout<<"\n\nMau pilih opsi yang mana?: ";
cin>>a;
switch (a)

{
case 1:
cout<<"\nMasukan data yang akan dimasukan ke queue : ";
cin>>no;
inqueue(no);
break;

case 2:
dequeue();
break;
case 3:
e = peek();
if (e != 0)
cout<< e;
else
cout<<"\nTidak ada data pada queue";
break;
case 4:
display();
break;
case 5:
exit (0);
break;
default:
cout<<"Maaf, tidak ada opsi tersebut ";
break;

/* Proses Inqueue */
void inqueue(int data)
{
if (belakang == NULL)
{
belakang = (struct LL *)malloc(1*sizeof(struct LL));
belakang-> ptr = NULL;
belakang-> info = data;
depan = belakang;
}
else
{
temp=(struct LL *)malloc(1*sizeof(struct LL));
belakang->ptr = temp;
temp->info = data;
temp->ptr = NULL;

belakang = temp;
}
count++;
}

/* Proses Display */
void display()
{
b = depan;

if ((b == NULL) && (belakang == NULL))


{
cout<<"Tidak ada data pada queue";
return;
}
while (b != belakang)
{
cout<<b-> info;
b = b->ptr;
}
if (b == belakang)
cout<< b -> info;

/* Proses Dequeue */
void dequeue()
{
b = depan;

if (b == NULL)
{
cout<<"\nTidak ada data pada queue";
return;
}
else
if (b->ptr != NULL)
{
b = b->ptr;
cout<<"\nData dengan nilai : ";cout<<depan-> info;cout<<"
Telah terhapus";
free(depan);
depan = b;
}
else
{
cout<<"\nData dengan nilai : ";cout<<depan-> info;cout<<"
Telah terhapus";
free(depan);
depan = NULL;
belakang = NULL;
}
count--;
}

/* Proses peek */
int peek()
{
if ((depan != NULL) && (belakang != NULL))
return(depan->info);
else
return 0;
}
void exit ()
{
exit(0);
}
DAFTAR PUSTAKA
https://id.wikipedia.org/wiki/Stack_(struktur_data)
http://robbifxr.blogspot.com/2012/03/queue-antrian.html
http://www.cplusplus.com/reference/cstdlib/
https://en.wikibooks.org/wiki/C_Programming/stdlib.h
http://apriliyatiwen.blogspot.com/2013/04/linked-list.html
https://www.programiz.com/cpp-programming/library-function/cstdlib/malloc

Anda mungkin juga menyukai