DISUSUN OLEH :
1908561012
UNIVERSITAS UDAYANA
2020
BAB I
PENDAHULUAN
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.
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.
4. Queue ?
PERMASALAHAN
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.
#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;
/* 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