Linked List
Linked List
DISUSUN OLEH :
MAYONG ADI WARDANA
NIM : D41113008
TEKNIK ELEKTRO
UNIVERSITAS HASANUDDIN
MAKASSAR
2015
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
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 masukanmasukan yang bersifat membangun demi penyempurnaan makalah ini.
19 Mei 2015
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
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 :
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.
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.
2.
Pada makalah ini kami akan menjelaskan Single linked list non circular
Menambah Dibelakang.
1.3 Tujuan
BAB II
PEMBAHASAN
2.1
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
a.
b.
TNode *head
c.
Void init()
{
head=NULL;
}
d.
else return 0;
}
e.
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);
}
NULL
Head
-
f.
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
10
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);
}
-
NULL
Head
-
11
g.
void menambah_ditengah()
{
TNode*baru, *bantu;
int xdatabaru;
layar_isi();
baru = new TNode;
gotoxy(20,11);cin>>baru->databaru;
gotoxy(20,15);cout<<"Tambah Tengah Setelah angka - ";cin>>xdatabaru;
baru->next=NULL;
if (isEmpty()==1)
{
head=baru;
head->next=NULL;
12
}
else
{
bantu=head;
while (bantu->next!=NULL && bantu->databaru!=xdatabaru)
bantu=bantu->next;
baru->next=bantu->next;
bantu->next=baru;
}
}
h.
13
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<<bantu->data<<" ";
bantu=bantu->next;
}
printf(\n);
} else printf(Masih kosong\n);
}
B.
Contoh Programnya :
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
14
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
15
{
clrscr();
gotoxy(13,2);cout<<"PILIHAN MENU";
gotoxy(5,3);cout<<"------------------------------------";
gotoxy(5,4);cout<<" 1. Tambah Data Di Depan ";
gotoxy(5,5);cout<<" 2. Tambah Data Di Akhir ";
gotoxy(5,6);cout<<" 3. Tambah Data Di Tengah ";
gotoxy(5,7);cout<<" 4. Tampilkan
";
gotoxy(5,8);cout<<"--------------------------------------";
gotoxy(5,10);cout<<"Pilihan Anda = ";cin>>pil;
switch (pil)
{
case 1 : menambah_didepan(); break;
case 2 : menambah_dibelakang(); break;
case 3 : menambah_ditengah(); break;
case 4 : baca_maju(); break;
}
} while (pil!=5);
}
void layar_isi()
{
gotoxy(7,10);cout<<"\nMasukkan nilai--> ";
}
void judul_lap()
{
gotoxy(35,1);cout<<"======================================== ";
gotoxy(43,2);cout<<"TAMPILAN DATA !!!!! ";
}
16
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;
17
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);cout<<"Tambah Tengah Setelah angka - ";cin>>xdatabaru;
baru->next=NULL;
if (isEmpty()==1)
{
head=baru;
head->next=NULL;
}
else
{
bantu=head;
while (bantu->next!=NULL && bantu->databaru!=xdatabaru)
bantu=bantu->next;
18
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<<i;
gotoxy(35,2+brs);cout<<bantu->databaru;
brs++;
bantu=bantu->next;
}
gotoxy(35,3+brs);cout<<"----------------------------------------";
gotoxy(35,4+brs);cout<<"ENTER UNTUK MELANJUTKAN !!!";getch();
}
19
Flowchart :
START
int pil;
Menerima
masukan
pilihan;
YES
pil != 5
STOP
NO
pil ==1
pil ==2
pil == 3
pil == 4
Menampilkan
Linked list
Menambah Node
Awal
Menambah Node
Di Akhir
Mencari Data
yang dimaksud
kemudian
menyisipkannya
20
Hasil Compiler
21
22
BAB III
PENUTUP
A.
Kesimpulan
Simpul adalah semacam tipe data yang kita buat sendiri sebagaimanan nama
B.
Saran
Mempelajari struktur data itu dipahami satu per satu dan jangan pernah berhenti
untuk mencoba.
23
DAFTAR PUSTAKA
http://andriansukses.blogspot.com/2014/01/makalah-struktur-data-linked-list.html
24