MAKALAH STRUKTUR DATA SINGLE LINKED LIST
BAB I
PENDAHULUAN
1.1. Latar Belakang
Pemograman dalam struktur data ada beberapa macam.
Salah satunya adalah pemograman C++. Dalam pemograman ini biasanya menggunakan
variable Array, Struktur dan Linked List. Makalah ini membahas tentang salah
satu variabel tersebut.
Single Linked List dikembangkan pada 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 (kecerdasan buatan),
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.
atu 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. Tujuan
·
Mahasiswa memahami
tentang Single Linked List
·
Mahasiswa dapat
menerapkan Linked List
·
Mahasiswa dapat
mengoperasikan Linked List
1.3 Rumusan Masalah
1. Memasukan Node Depan
2. Memasukan Node Belakang
3. Tampilkan Node
4. Menghapus Node Depan
5. Menghapus Node Belakang
6. Menghapus Semua Node
7. Keluar
BAB II
LANDASAN TEORI
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.
Single linked list adalah linked list dengan simpul berisi satu link
/ Pointer yang mengacu kesimpul berikutnya. Operasi-operasi pada single linked list:
1. Penyisipan
A. Penyisipan Di Depan
Penyisipan didepan pada single linked list adalah dengan cara menyisipkan
data pada elemen awal list, sehingga pointer awal menunjuk list baru.
|
A
|
NULL
Head
|
A
|
|
B
|
NULL NULL
Baru Head
|
A
|
|
B
|
NULL
Baru Head
Perintah yang digunakan di c++ adalah
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”);
}
B. Penyisipan Dibelakang
Penyisipan dibelakang pada single linked list adalah dengan cara
menyisipkan data pada elemen akhir list, sehingga pointer akhir menunjuk list
baru.
Perintah
yang digunakan dalam c++ adalah :
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“);
}
2. Penghapusan
A. Penghapusan di
depan
Untuk menghapus sebuah simpul diperlukan
satu buah tambahan variabel pointer yaitu variabel bantu yang berguna untuk
menunjukkan simpul manakah yang akan dihapus.
B. Penghapusan di belakang
Penghapusan dibelakang menggunakan
pointer bantu dan hapus.pointer hapus digunakan untuk menunjuk node yang akan
dihapus. Pointer bantu digunakan untuk menunjuk node sebelum node yang akan
dihapus, yang kemudian akan dijadikan node terakhir.
3.
Fungsi untuk menghapus semua node
Untuk menghapus semua node dalam linked list di C++
dapat menggunakan perintah sebagai berikut:
void clear()
{
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL)
{
hapus = bantu;
bantu = bantu->next;
delete hapus;
}
head = NULL;
}
4. Menampilkan Linked List
Jika head sama dengan null, maka linked
list tersebut adalah kosong. Jika tidak NULL, maka node bantu akan berpindah ke
node selanjutnya dan membaca isi datanya dengan menggunakan field next sehingga
dapat saling berkait.
Pemanggilan
dalam c++ adalah sebagai berikut:
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“);
}
BAB III
PEMBAHASAN
3.1 Contoh Kasus dan
Program
Contoh Pemograman :
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
struct TNode
{
char data;
int head;
TNode *next;
};
TNode *head=NULL,*baru,*next=NULL;
void init()
{
head = NULL;
}
int isEmpty()
{
if(head == NULL)
{
return 1;
}
else
{
return 0;
}
}
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;
}
cout<<"Data
masuk"<<endl;
cin>>baru->data;
}
void insertBelakang ()
{
int databelakang;
TNode *baru,*bantu;
baru = new TNode;
baru->data =
databelakang;
baru->next = NULL;
if(isEmpty()==1)
{
head=baru;
head->next = NULL;
}
else
{
bantu=head;
while(bantu->next!=NULL)
{
bantu=bantu->next;
}
bantu->next = baru;
}
cout<<"Data
masuk\n";
cin>>baru->data;
}
void tampil()
{
TNode *bantu;
bantu = head;
if(isEmpty()==0)
{
while(bantu!=NULL)
{
cout<<"
"<<bantu->data<<" --> ";
bantu=bantu->next;
}
cout<<"NULL";
cout<<endl;
}
else
{
cout<<"Masih
kosong\n";
}
}
void hapusDepan ()
{
TNode *hapus;
char d;
if (isEmpty()==0)
{
if(head->next != NULL)
{
hapus = head;
d = hapus->data;
head = head->next;
delete hapus;
}
else
{
d = head->data;
head = NULL;
}
cout<<d<<"
terhapus\n";
} else
cout<<"masih kosong\n";
}
void hapusBelakang()
{
TNode *hapus,*bantu;
char d;
if (isEmpty()==0)
{ if(head->next != NULL)
{
bantu = head;
while(bantu->next->next!=NULL)
{
bantu = bantu->next;
}
hapus = bantu->next;
d = hapus->data;
bantu->next = NULL;
delete hapus;
}
else
{
d = head->data;
head = NULL;
}
cout<<d<<"
terhapus\n";
}
else cout<<"Masih
kosong\n";
}
void clear()
{
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL)
{
hapus = bantu;
bantu = bantu->next;
delete hapus;
}
head = NULL;
} void main()
{
int pilihan;
head=0;
home:
clrscr();
cout<<endl<<endl;
cout<<" NAMA NIM "<<endl;
cout<<endl<<endl;
cout<<" WINDA
WULANDARI
|11151490\t"<<endl;
cout<<" LAILA
NUR AZIZAH
|11151445\t"<<endl;
cout<<" EKA
HERDIT JUNINGSIH |11151486\t"<<endl;
cout<<" SHOLEHAH
AYUNINGTIAS
|11151686\t"<<endl;
cout<<" DINA
MARINDA ZULFIANIKA |11152001\t"<<endl<<endl<<endl;
cout<<"Pilih Menu di
bawah ini : "<<endl;
cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;
cout<<"1. Memasukan
Node Depan"<<endl;
cout<<"2. Memasukan
Node Belakang"<<endl;
cout<<"3. Tampilkan
Node"<<endl;
cout<<"4. Menghapus
Node Depan"<<endl;
cout<<"5. Menghapus
Node Belakang"<<endl;
cout<<"6. Menghapus
Semua Node"<<endl;
cout<<"7. Keluar"<<endl;
cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;
cout<<"Pilih salah
satu menu : "; cin>>pilihan;
switch(pilihan)
{
case 1:
clrscr();
cout<<"Memasukan
Node Depan"<<endl;
insertDepan();
getch();
goto home;
break;
case 2:
clrscr();
cout<<"Memasukan
Node Belakang"<<endl;
insertBelakang ();
getch();
goto home;
break;
case 3:
clrscr();
cout<<"Tampilkan Node"<<endl;
tampil();
getch();
goto home;
break;
case 4:
clrscr();
cout<<"Menghapus
Node Depan "<<endl;
hapusDepan ();
getch();
goto home;
break;
case 5:
clrscr();
cout<<"Menghapus
Node Belakang"<<endl;
hapusBelakang();
getch();
goto home;
break;
case 6:
clrscr();
cout<<" Menghapus
Semua Node"<<endl;
clear();
getch();
goto home;
break;
case 7:
clrscr();
cout<<"Keluar"<<endl;
cout<<"Tekan apa
saja untuk keluar";
getch();
break;
default:
cout<<"inputan
salah"<<endl;
getch();
goto home;
break;
getch();
}
}
3.2 Flowchart
BAB IV
PENUTUP
4.1. Kesimpulan
Linked
List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang
tersusun secara sekuensial, saling sambung-menyambung, dinamis dan terbatas.
Didalam linked
list ada tiga pembahasan tentang penyisipan, yaitu penyisipan didepan, penyisipan
ditengah dan penyisipan dibelakang .
Dan ada tiga
pembahasan tentang penghapusan, yaitu penghapusan didepan, penghapusan ditengah
dan penghapusan dibelakang .
Menampilkan
Linked List , jika head sama dengan null, maka linked list tersebut adalah kosong.
Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan membaca
isi datanya dengan menggunakan field next sehingga dapat saling berkait.
Komentar
Posting Komentar