Struktur Data
Rabu, 26 Maret 2014
Sabtu, 22 Maret 2014
Makalah Struktur Data Single Linked List Non circular Menambah dibelakang
BAB I
PENDAHULUAN
1.
Pendahuluan
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 :
- List linier (Linked List) dan variasinya
- Multilist
- Stack (Tumpukan)
- Queue (Antrian)
- Tree ( Pohon )
- Graph ( Graf )
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. Single Linked List
2. Double Linked List
Pada makalah ini kami akan menjelaskan Single linked list non circular
Menambah Dibelakang.
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.
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
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..
•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
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;
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
↑
Head
-
Masuk data baru, misalnya 3


Tampilan keluar

-
Datang data baru, misalnya 5 ( Penambahan didepan )

tampilan keluar

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;
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 10

Tampilan keluar

-
Datang data baru, misalnya 1 ( Penambahan dibelakang
)

Tampilan keluar

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);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;
baru->next=bantu->next;
bantu->next=baru;
}
}



h.
Menampilkan/membaca isi linked list
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. Program (source code) single linked list non circular
Contoh Programnya :
#include
<iostream.h>
#include
<stdio.h>
#include
<conio.h>
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
{
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
!!!!! ";
}
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;
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;
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();
}
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
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://Google.com. dikutip tanggal 14 Mei 2013.
