1
MAKALAH
ALGORITMA DAN STRUKTUR DATA
LINKED LIST(SENARAI)
DISUSUN OLEH :
MAYONG ADI WARDANA
NIM : D41113008
TEKNIK ELEKTRO
UNIVERSITAS HASANUDDIN
MAKASSAR
2015
2
KATA PENGANTAR
Puji syukur kehadirat Tuhan Yang Maha Kuasa atas segala limpahan Rahmat
dan Izinnyalah sehingga saya dapat menyelesaikan penyusunan makalah yang
berjudul LINKED LIST walaupun bentuk dan isinya sangat sederhana.
Semoga adanya makalah ini kita dapat memahami penggunaan array dalam
algoritma pemrograman bahasa komputer. Selain itu dengan adanya makalah ini
pembaca dapat menjadikannya sebagai acuan pengembangan pengetahuan baru
tentang SENARAI.
Dalam penyusunan makalah yang berjudul LINKED LIST ini saya
mendapat berbagai rintangan yang Alhamdulillah dapat terselesaikan juga. Ini
semua berkat bantuan dosen pembimbing yang telah bersedia memberikan
pemahaman yang tepat tentang array dan teman kelompok satu yang telah
memberikan pemahamannya tentang senarai. Terima kasih banyak untuk teman
kelompok satu, serta terima kasih banyak untuk dosen pembimbing.
Makalah yang saya buat ini pastinya masih memiliki banyak kekurangan.
Oleh karena itu saya harapkan para pembaca dapat memberikan masukan-
masukan yang bersifat membangun demi penyempurnaan makalah ini.
19 Mei 2015
(Mayong Adi Wardana)
NIM : D41113003
3
BAB I
PENDAHULUAN
Dalam suatu linear list kita dapat melakukan operasi penyisipan atau penghapusan
atas elemen-elemennya pada sembarang posisi.
Misalkan ada 1500 item yang merupakan elemen dari suatu linear list.
Jika elemen ke-56 akan kita keluarkan, maka elemen ke-1 s/d elemen ke-55 tidak
akan berubah posisinya pada linear list tersebut. Tetapi elemen ke-57 akan
menjadi elemen ke-56, elemen ke-58 akan menjadi elemen ke-57 dst.
Selanjutnya, jika kita sisipkan satu elemen pada posisi setelah elemen ke-41, maka
elemen ke-42 s/d elemen ke-1500 akan berubah posisinya.
Untuk menyatakan keadaan diatas diperlukan suatu konsep yang berbeda dengan
konsep sekuensial sebelumnya.
Linked list merupakan suatu cara non-sekuensial yang digunakan untuk
merepresentasikan suatu data.Struktur data adalah cara menyimpan atau
merepresentasikan data di dalam komputer agar bisa dipakai secara efisien
Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan
tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk
tulisan, suara, gambar, sinyal atau symbol. Secara garis besar type data dapat
dikategorikan menjadi :
1. Type data sederhana
a. Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter
b. Type data sederhana majemuk, misalnya String
2. Struktur Data, meliputi
a. Struktur data sederhana, misalnya array dan record
b. Struktur data majemuk, yang terdiri dari Linier : Stack, Queue, serta List dan
Multilist Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat di dalam proses pemrograman akan
menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program
secara keseluruhan lebih efisien dan sederhana. Struktur data yang standar yang
biasanya digunakan dibidang informatika adalah :
4
List linier (Linked List) dan variasinya
Multilist
Stack (Tumpukan)
Queue (Antrian)
Tree ( Pohon )
Graph ( Graf )
Adapun bahasa yang digunakan pada metode sorting ini ialah bahasa C. Dalam
hal ini, penulis menggunakan aplikasi Notepad++. Adapun langkah-langkah
penggunaannya ialah sebagai berikut:
a. Siapkan aplikasi Notepad++ terlebih dahulu.
b. Buka aplikasi Notepad++.
c. Buatlah suatu program. Dalam suatu program sudah terdapat fungsi mulai dari
fungsi global sampai fungsi lokal. Dalam sebuah fungsi, di dalam nya sudah
termasuk variable, konstanta, masukkan dan lain sebagainya.
d. Apabila program telah dibuat, maka simpan program tersebut dengan format
file.c.
e. Setelah program tersimpan, maka compile (jalankan) program tersebut dengan
format gcc o file file.c atau gcc file.c o file.exe. kemudian tunggu
beberapa saat hingga dapat melakukan eksekusi program file.exe
f. Setelah program dijalankan, maka selesai proses mengcompile program.
1.1 Latar Belakang
Kajian struktur data merupakan kajian yang sangat penting dalam bidang
informatika. Dan di zaman sekarang ini yang teknologinya semakin berkembang,
dibutuhkan struktur data yang efisien yang dapat meningkatkan kinerja program.
Salah satu bentuk struktur data yang berisi kumpulan data yang tersusun
secara sekuensial, saling bersambungan, dinamis dan terbatas adalah linked list
(senarai berkait). Suatu linked list adalah suatu simpul (node) yang dikaitkan
dengan simpul yang lain dalam suatu urutan tertentu. Suatu simpul dapat
berbentuk suatu struktur atau class. Simpul harus mempunyai satu atau lebih
elemen struktur atau class yang berisi data.
5
Secara teori, linked list adalah sejumlah node yang dihubungkan secara linier
dengan bantuan pointer. Dikatakan single (singly) linked apabila hanya ada satu
pointer yang menghubungkan setiap node. single artinya field pointer-nya hanya
satu buah saja dan satu arah.
Linked list adalah struktur data yang paling dasar. Linked list terdiri atas
sejumlah unsur-unsur dikelompokkan, atau terhubung, bersama-sama di suatu
deret yang spesifik. Linked list bermanfaat di dalam memelihara koleksi-koleksi
data, yang serupa dengan array. Bagaimanapun juga, linked list dan array
mempunyai perbedaan. Memakai Linked list lebih bagus dibandingkan dengan
array/larik baik dalam banyak hal. Secara rinci, linked list lebih efisien di dalam
melaksanakan penyisipan-penyisipan dan penghapusan-penghapusan. Linked list
juga menggunakan alokasi penyimpanan secara dinamis, yang merupakan
penyimpanan yang dialokasikan pada runtime. Karena di dalam banyak aplikasi,
ukuran dari data itu tidak diketahui pada saat kompile, hal ini bisa merupakan
suatu atribut yang baik juga. Setiap node akan berbentuk struct dan memiliki satu
buah field bertipe struct yang sama, yang berfungsi sebagai pointer. Dalam
menghubungkan setiap node, kita dapat menggunakan cara first-create-first-access
ataupun first-create-last-access. Yang berbeda dengan deklarasi struct sebelumnya
adalah satu field bernama next, yang bertipe struct tnode. Hal ini sekilas dapat
membingungkan. Namun, satu hal yang jelas, variabel next ini akan
menghubungkan kita dengan node di sebelah kita, yang juga bertipe struct tnode.
Hal inilah yang menyebabkan next harus bertipe struct tnode.
Secara umum linked list dibedakan atas 2 macam, yaitu :
1. Single Linked List
2. Double Linked List
Pada makalah ini kami akan menjelaskan Single linked list non circular
Menambah Dibelakang.
6
1.1.1 Latar Belakang Single Linked List NON Circular (SLLNC)
Dikembangkan tahun 1955-1956 oleh Allen Newell, Cliff Shaw dan Herbert
Simon di RAND Corporation sebagai struktur data utama untuk bahasa
Information Processing Language (IPL).
IPL dibuat untuk mengembangkan program artificial intelligence, seperti
pembuatan Chess Solver.
Victor Yngve di Massachusetts Institute of Technology (MIT) juga menggunakan
linked list pada natural language processing dan machine transitions pada bahasa
pemrograman COMMIT.
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.
1.2 Rumusan Masalah
Apakah pengertian Linked List Non Circular
Implementasi (dalam program) Linked List Non Circular
1.3 Tujuan
Mahasiswa dapat memahami Single Linked List Non Circular
Mahasiswa dapat menerapkan Single Linked List Non Circular
7
BAB II
PEMBAHASAN
2.1 Pengertian Single Linked List Non Circular
Pengertian:
Single : artinya field pointer-nya hanya satu buah saja dan satu arah serta pada
akhir node, pointernya menunjuk NULL
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Setiap node pada linked list mempunyai field yang berisi pointer ke node
berikutnya, dan juga memiliki field yang berisi data.
Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi
berhenti pada saat pembacaan isi linked list..
2.2 Proses Pembuatan Single Linked List Non Circular
8
a. Pembuatan sebuah struct
typedef struct TNode {
int data;
TNode *next;
};
b. Pembuatan variabel pointer Head
Head yang akan selalu menunjuk pada node pertama
TNode *head
c. Membuat fungsi inisialisasi single linked list
Void init()
{
head=NULL;
}
d. Membuat fungtion untuk mengetahui kondisi single linked list
Jika pointer tidak menunjuk pada suatu node maka kosong
Int isEmpty()
{
if (head==NULL) return 1;
9
else return 0;
}
e. Membuat node didepan
Penambahan node baru akan dikaitan di node paling depan, namun pada saat
pertama kali (data masih kosong), maka penambahan data dilakukan dengan cara:
node head ditunjukkan ke node baru tersebut. Prinsipnya adalah mengkaitkan
node baru dengan head, kemudian head akan menunjuk pada data baru tersebut
sehingga head akan tetap selalu menjadi data terdepan.
void insertDepan(int databaru)
{
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1)
{
head=baru;
head->next = NULL;
}
else
{
baru->next = head;
head = baru;
}
printf(Data masuk\n);
}
- List masih kosong (head=NULL)
NULL
10
Head
- Masuk data baru, misalnya 5
f. Menambah node dibelakang
Penambahan data dilakukan di belakang, namun pada saat pertama kali, node
langsung ditunjuk oleh head. Penambahan di belakang membutuhkan pointer
bantu untuk mengetahui node terbelakang. Kemudian, dikaitkan dengan node
baru. Untuk mengetahui data terbelakang perlu digunakan perulangan
void insertBelakang (int databaru)
{
TNode *baru,*bantu;
baru = new TNode;
11
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1) {
head=baru;
head->next = NULL;
}
else {
bantu=head;
while(bantu->next!=NULL){
bantu=bantu->next;
}
bantu->next = baru;
}
printf("Data masuk\n);
}
- List masih kosong (head=NULL)
NULL
Head
- Masuk data baru, misalnya 20
12
g. Menambah node ditengah
void menambah_ditengah()
{
TNode*baru, *bantu;
int xdatabaru;
layar_isi();
baru = new TNode;
gotoxy(20,11);cin>>baru->databaru;
gotoxy(20,15);coutxdatabaru;
baru->next=NULL;
if (isEmpty()==1)
{
head=baru;
head->next=NULL;
13
}
else
{
bantu=head;
while (bantu->next!=NULL && bantu->databaru!=xdatabaru)
bantu=bantu->next;
baru->next=bantu->next;
bantu->next=baru;
}
}
h. Menampilkan/membaca isi linked list
14
Linked list ditelusuri satu-persatu dari awal sampai akhir node. Penelusuran
dilakukan dengan menggunakan pointer bantu, karena pointer head yang menjadi
tanda awal list tidak boleh berubah/berganti posisi.
Penelusuran dilakukan terus sampai ditemukan node terakhir yang menunjuk ke
nilai NULL.
Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan
membaca isi datanya dengan menggunakan field next sehingga dapat saling
berkait.
Jika head masih NULL berarti data masih kosong!
void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
cout
15
typedef struct TNode
{ int databaru;
TNode *next;
}TNode;
TNode*head;
void init()
{
head=NULL;
}
int isEmpty()
{
if (head==NULL)
return 1;
else
return 0;
}
void layar_isi();
void menambah_didepan();
void menambah_dibelakang();
void menambah_ditengah();
void baca_maju();
void main()
{
int pil;
do
16
{
clrscr();
gotoxy(13,2);cout
17
void menambah_didepan()
{
layar_isi();
TNode *baru;
baru=new TNode;
gotoxy(20,11);cin>>baru->databaru;
baru->next=NULL;
if (isEmpty()==1)
{
head=baru;
head->next=NULL;
}
else
{
baru->next=head;
head=baru;
}
}gecth();
void menambah_dibelakang()
{
TNode *baru, *bantu;
layar_isi();
baru = new TNode;
gotoxy(20,11);cin>>baru->databaru;
baru->next=NULL;
if(isEmpty()==1)
{
head=baru;
18
head->next=NULL;
}
else
{
bantu=head;
while (bantu->next!=NULL)
bantu=bantu->next;
bantu->next=baru;
}
}
void menambah_ditengah()
{
TNode*baru, *bantu;
int xdatabaru;
layar_isi();
baru = new TNode;
gotoxy(20,11);cin>>baru->databaru;
gotoxy(20,15);coutxdatabaru;
baru->next=NULL;
if (isEmpty()==1)
{
head=baru;
head->next=NULL;
}
else
{
bantu=head;
while (bantu->next!=NULL && bantu->databaru!=xdatabaru)
bantu=bantu->next;
19
baru->next=bantu->next;
bantu->next=baru;
}
}
void baca_maju()
{
TNode *bantu;
int brs=2,i;
judul_lap();
bantu=head;
while (bantu!=NULL)
{
gotoxy(35,2+brs);cout
20
Flowchart :
START
pil != 5
YES
NO
int pil;Menerima masukan pilihan;
STOP
pil ==1
pil ==2
pil == 3
pil == 4
Menerima Input Data yang disisipkan pertama
Menerima Input Data yang disisipkan pertama
Menerima Dua Input Data yang disisipkan pertama
Menampilkan Linked list
A
B
C
D
A
Menambah Node Awal
D
B
Menambah Node Di Akhir
D
B
Mencari Data yang dimaksud
kemudian menyisipkannya
D
21
Hasil Compiler
22
23
BAB III
PENUTUP
A. Kesimpulan
Simpul adalah semacam tipe data yang kita buat sendiri sebagaimanan nama
tipe yang telah disediakan oleh bahasa pemrograman.
Info adalah tempat penyimpanan data dengan tipe yang berbeda-beda sesuai
keinginan.
Link adalah tempat penyimpanan alamat simpulnya (pointer).
Linked list adalah sebuah struktur untuk menyimpan data yang bersifat
dinamik
Beberapa operasi dapat diterapkan pada linked list seperti
sisip(insert),hapus(delete)
Operasi-operasi yang ada pada linked list relatif lebih sulit jika dibandingkan
dengan operasi-operasi pada struktur yang statis
Null adalah suatu kondisi khusus dimana pointer itu belum di set dengan
sebuah address tertentu, artinya pointer tidak mrnunjuk ke alamat manapun.
B. Saran
Mempelajari struktur data itu dipahami satu per satu dan jangan pernah berhenti
untuk mencoba.
24
DAFTAR PUSTAKA
Suarga, Drs, M.Sc.,M.Math.,Ph.D. 2012 Algoritma dan Pemrograman.
Yogyakarta:
Andi.Sjukani, Moh.2012 Struktur Data (Algoritma dan Struktur Data dengan
C,C++. Jakarta: Mitra Wacana Media.
http://andriansukses.blogspot.com/2014/01/makalah-struktur-data-linked-list.html