Anda di halaman 1dari 22

LAPORAN PRAKTIKUM V

ALGORITMA DAN STRUKTUR DATA


“LINKED LIST”

Nama : Rahmat Hidayat

NIM : 1711016110017

Tanggal Paraf Tanggal


Nilai
Kumpul Asisten ACC

KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI


UNIVERSITAS LAMBUNG MANGKURAT
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
PROGRAM STUDI S1 ILMU KOMPUTER
BANJARBARU

2018
BAB I

12 TNR bold

Spasi 2.0
PENDAHULUAN

1.1 Tujuan
Tujuan dari praktikum Algoritma dan Struktur Data ini adalah agar
praktikan dapat memahami pengertian dan fungsi dari linked list. Selain itu
agar praktikan dapat mengetahui algoritma linked list dalam program.
Praktikan juga diharapkan dapat mengetahui cara penggunaan linked list yang
tepat untuk membuat program. Serta praktikan dapat mengimplemetasikannya
kedalam program.

1.2 Deklarasi
Bentuk umum deklarasi Linked list
Struct node {
int data;
node *next;
};

Struct node *head;

1.3 Sintaks sederhana


Sintaks sederhana dari Linked List
#include <iostream>
#include <malloc.h>

using namespace std;

struct node {
int data;
node *next;
};

struct node *head, *baru, *temp, *in;

main()
{
int i;
baru = new node;
head = new node;

baru->data = 1001;
baru->next = NULL;

head->data = 1000;
head->next = baru;
baru = head;

// insert depan;
in = new node;
in->data = 999;
in->next = head;
head = in;

// insert belakang
in = new node;
in->data = 1002;
in->next = NULL;
temp = head;
while(temp->next!=NULL)
{
temp = temp->next;
}
temp->next = in;

// Tampil
temp = new node;
temp = head;
while(temp!=NULL)
{
cout<<temp->data<<endl;
temp = temp->next;
}

}
BAB II
TINJAUAN PUSTAKA

Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node)
yang tersusun secara sekuensial, saling sambung menyambung, dinamis dan terbatas.
Linked List sering disebut juga Senarai Berantai. Linked List saling terhubung
dengan bantuan variabel pointer. Masing-masing data dalam Linked List disebut
dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya
berupa struct yang terdiri dari beberapa field. Single Linked List adalah sebuah
LINKED LIST yang menggunakan sebuah variabel pointer saja untuk menyimpan
banyak data dengan metode LINKED LIST, suatu daftar isi yang saling
berhubungan. Ilustrasi single LINKED LIST:

Pada gambar di atas, data terletak pada sebuah lokasi dalam sebuah memory, tempat
yang disediakan memory untuk menyimpan data disebut node ? simpul, setiap node
memiliki pointer ( penunjuk ) yang menunjuk ke node berikutnya sehingga terbentuk
suatu untaian yang disebut single LINKED LIST. Bila dalam single LINKED LIST
pointer hanya dapat bergerak ke satu arah saja, maju / mundur, kanan / kiri, sehingga
pencarian datanya juga hanya satu arah saja (Johan, 2012).
Berikut merupakan macam – macam linked list :
1. Singly Linked List :
Setiap node pada linked list mempunyai field yang berisi pointer ke node
berikutnya dan juga memiliki field yang berisi data. Akhir linked list ditandai
dengan node terakhir akan menunjuk ke null yang akan digunakan sebagai
kondisi berhenti saat pembacaan linked list.
2. Double Linked List :
Linked list dengan menggunakan pointer, dimana setiap node memiliki 3
field, yaitu: 1 field pointer yang menunjuk ke pointer berikutnya, 1 field
pointer yang menunjuk ke pointer sebelumnya dan field yang berisi data dari
node tersebut. Pointer next dan prev-nya menunjuk ke null.
3. Single Circular Linked List :
Single Linked List yang pointer next-nya menunjuk ke dirinya sendiri,
jika terdiri dari beberapa node maka pointer terakhirnya akan menunjuk ke
pointer terdepannya.
4. Double Circular Linked List :
Double Linked List yang pointer next dan prev-nya menunjuk ke dirinya
sendiri secara circular.
(Dewandono, 2009).
Linked List adalah suatu struktur data linier. Berbeda dengan array yang juga
merupakan struktur data linier dan tipe data komposit, linked list dibentuk secara
dinamik. Pada saat awal program dijalankan elemen linked list belum data. Elemen
linked list (disebut node) dibentuk sambil jalan sesuai instruksi. Apabila setiap
elemen array dapat diakses secara langsung dengan menggunakan indeks, sebuah
node linked list diakses dengan menggunakan pointer yang mengacu (menunjuk) ke
node tersebut. Dalam struktur data algortima linked list mempunyai beberapa jenis
yaitu:
1. Single Linked List
Tempat yang disediakan pada satu area memori tertentu untuk
menyimpan data dikenal dengan sebutan node atau simpul. Setiap node
memiliki pointer yang menunjuk ke simpul berikutnya sehingga terbentuk satu
untaian, dengan demikian hanya diperlukan sebuah variabel pointer. Susunan
berupa untaian semacam ini disebut Single Linked List (NULL memilik nilai
khusus yang artinya tidak menunjuk ke mana-mana. Biasanya Linked List pada
titik akhirnya akan menunjuk ke NULL). Pembuatan Single Linked List dapat
menggunakan 2 metode:
1. LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
2. FIFO (First In First Out), aplikasinya : Queue (Antrian)
2. Double Linked List
Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya
dapat bergerak satu arah saja, maju/mundur, atau kanan/kiri sehingga pencarian
data pada single linked list hanya dapat bergerak dalam satu arah saja. Untuk
mengatasi kelemahan tersebut, dapat menggunakan metode double linked list.
Linked list ini dikenal dengan nama Linked list berpointer Ganda atau Double
Linked List.
3. Circular Double Linked List
Merupakan double linked list yang simpul terakhirnya menunjuk ke
simpul terakhirnya menunjuk ke simpul awalnya menunjuk ke simpul akhir
sehingga membentuk suatu lingkaran.
(Prabowo, 2015).
BAB III
IMPLEMENTASI

3.1 Deskripsi Program


Program yang saya buat untuk praktikum ini adalah program pendataan
barang. Program ini berfungsi untuk mendata barang-barang, baik ditoko
ataupun gudang. Cara pengunaan program ini adalah dengan cara memasukan
data-data barang yaitu kode barang, nama barang, harga barang, dan jumlah
barang kedalam program.
Dalam program ini terdapat 3 fitur yaitu input data, lihat data, dan cari
data. Input data adalah untuk menginputkan data-data barang kedalam
program. Lihat data adalah untuk melihat data barang yang telah dimasukan
kedalam program, dan data juga dapat diurutkan berdasarkan kode barang. Cari
data berguna untuk mencari data barang yang telah diinputkan dengan
menggunakan kode barang.

3.2 Alur Program


3.2.1 Void input
3.2.2 Void tampil
3.2.3 Void cari
3.2.4 Void sort
3.2.4 Void Swap

3.2.5 Void Lihat


3.2.6 Void sortd
3.2.7 Program Utama

3.3 Source Code


#include <iostream>
#include <conio.h>
#include <string.h>

using namespace std;

struct data {
int kode;
char nama[20];
int harga;
int stok;
data *next;
};

struct data *barang = NULL, *tail = NULL, *temp;

void input();
void tampil();
void cari();
void sort();
void lihat();
void sortd();
void swap(struct data *a, struct data *b);

main()
{
int menu;
do
{
system("cls");
cout<<"==++== Menu ==++=="<<endl;
cout<<"1. Input data barang"<<endl;
cout<<"2. Lihat data barang"<<endl;
cout<<"3. Cari data barang"<<endl;
cout<<"4. Keluar"<<endl;
cout<<"Masukan pilihan :"; cin>>menu;

switch(menu)
{
case 1:
input();
break;

case 2:
lihat();
break;

case 3:
cari();
break;
}
} while(menu!=4);
}

void input()
{
system("cls");
temp = new data;
cout<<"== Input data barang =="<<endl<<endl;
cout<<"Kode barang :"; cin >> temp->kode; fflush(stdin);
cout<<"Nama barang :"; cin.getline(temp->nama,20);
cout<<"Harga barang :"; cin >> temp->harga;
cout<<"Jumlah barang :"; cin >> temp->stok;
if(barang == NULL)
{
barang = temp;
barang->next = NULL;
tail = barang;
}
else
{
tail->next = temp;
tail = temp;
sort();
}
cout<<endl<<"Data telah disimpan";
getch();
}

void tampil()
{
system("cls");
int i = 0;
cout<<"== Daftar Barang =="<<endl<<endl;
cout<<"No \t\tKode \t\tBarang \t\tHarga\t\tJumlah"<<endl<<endl;
temp = new data;
temp = barang;
while (temp!=NULL)
{
cout<<i+1<<" \t\t"<<temp->kode<<" \t\t"<<temp-
>nama<<"\t\t"<<temp->harga<<" \t\t"<<temp->stok<<endl;
temp = temp->next; i++;
}
}

void cari()
{
system("cls");
int kode;
cout<<"Masukan Kode barang yang dicari : "; cin >> kode;
temp = new data;
temp = barang;
while (temp!=NULL)
{
if(temp->kode == kode)
{
cout<<endl<<"Kode barang : "<<temp->kode<<endl;
cout<<"Nama barang : "<<temp->nama<<endl;
cout<<"Harga barang : "<<temp->harga<<endl;
cout<<"Jumlah barang : "<<temp->stok<<endl;
temp = NULL;
} else if (temp->next == NULL && temp->kode != kode)
{
cout<<endl<<"Barang dengan kode "<<kode<<" tidak
ditemukan";
temp = NULL;
} else
{
temp = temp->next;
}
}
getch();
}

void sort()
{
int swapped, i;
struct data *a, *b = NULL;

do
{
swapped = 0; a = barang;
while (a->next != b)
{
if (a->kode > a->next->kode)
{
swap(a, a->next);
swapped = 1;
}
a = a->next;
}
b = a;
}
while (swapped);
}
void swap(struct data *a, struct data *b)
{
int tmp; char nm[20];
tmp = a->kode; a->kode = b->kode; b->kode = tmp;
tmp = a->harga; a->harga = b->harga; b->harga = tmp;
tmp = a->stok; a->stok = b->stok; b->stok = tmp;
strcpy(nm, a->nama); strcpy(a->nama, b->nama); strcpy(b->nama,
nm);
}

void lihat()
{
int menu;
do
{
system("cls");
tampil();
cout<<endl<<"----- Menu ------"<<endl;
cout<<"1. Urut Ascending"<<endl;
cout<<"2. Urut Descending"<<endl;
cout<<"3. Kembali"<<endl;
cout<<"Masukan pilihan :"; cin>>menu;

switch(menu)
{
case 1:
sort();
break;

case 2:
sortd();
break;
}
} while(menu!=3);
}

void sortd()
{
int swapped, i;
struct data *a;
struct data *b = NULL;

if (barang == NULL)
return;

do
{
swapped = 0;
a = barang;

while (a->next != b)
{
if (a->kode < a->next->kode)
{
swap(a, a->next);
swapped = 1;
}
a = a->next;
}
b = a;
}

while (swapped);
}

3.4 Output
Gambar 3.4.1 Tampilan awal program menu utama

Gambar 3.4.2 Tampilan program saat menginput data (menu 1)

Gambar 3.4.3 Tampilan program setelah data diinput (menu 2)


Gambar 3.4.4 Tampilan program setelah data diurutkan descending (menu2)

Gambar 3.4.5 Tampilan program saat mencari data (menu 3)

Gambar 3.4.6 Tampilan program jika data tidak ditemukan


BAB IV
PENUTUP

4.1 Kesimpulan
Kesimpulan dari praktikum ini adalah Linked List adalah salah satu
bentuk struktur data, berisi kumpulan data (node) yang tersusun secara
sekuensial, saling sambung menyambung, dinamis dan terbatas. Linked List
sering disebut juga Senarai Berantai. Linked list dapat digunakan untuk
menyimpan data dengan jumlah yang banyak seperti array tetapi lebih hemat
memori. Struktur linked list adalah data dan pointer next, data berisi data dan
pointer next berisi alamat dari node berikutnya.
DAFTAR PUSTAKA

Dewandono, Rahadian. 2009. Struktur Data – Macam – macam Linked List.


https://dewa18.wordpress.com/2009/10/28/struktur-data-macam-macam-
linked-list/.
Diakses pada tanggal 02 Desember 2018.

Johan, Shandy. 2012. Single Linked List.


http://brawlyvonfabre.blogspot.com/p/single-linked-list.html.
Diakses pada tanggal 02 Desember 2018.

Prabowo, Rahmat. 2015. Struktur Data dan Algoritma Linked List.


http://rahmat-clns.blogspot.com/2015/04/struktur-data-dan-algoritma-linked-
list.html.
Diakses pada tanggal 02 Desember 2018.
LAMPIRAN

Anda mungkin juga menyukai