PENGERTIAN LINKED LIST
Linked list adalah sejumlah simpul (node) yang dikaitkan
dengan simpul yang lain dengan bantuan pointer dalam suatu urutan tertentu.
Suatu linked list dikatakan single linked list apabila hanya ada satu pointer
yang menghubungkan setiap node (satu arah “next”).
ATURAN LINKED LIST
Linked list mempunyai aturan:
1.
Data
harus memiliki hubungan dengan yang lain.
2.
Data
yang terhubung tidak boleh bercabang.
PERANCANGAN LINKED LIST
1.
Single
Linked List
Tahapan pertama ialah membuat struct
(karena setiap node akan berbentuk struct) Dan memiliki satu buah fungsi
pointer juga bertype struct yang akan menghubungkan setiap node .
2.
Double
Linked List
Lain Halnya dengan single List,
double Linked List adalah suatu linked list yang mempunyai 2 penunjuk ke data
sebelumnya dan berikutnya, memiliki 2 buah pointer, setiap node akan terhubung
dengan pointer kanan dan kiri.
PENJELASAN MENYIMPAN DATA PADA LINKED LIST
1 → 3 → 5 → 6 → 2 → 7
Pada linked
list di atas, masing-masing data mempunyai hubungan dengan data lain. Untuk
bisa benar-benar menggunakan metode linked list, kita harus mematuhi peraturan
linked list. Setelah itu, kita harus menetapkan di mana posisi head dan null berada. Head
merupakan data yang tidak memiliki hubungan di belakang, sedangkan null
merupakan data yang paling terakhir atau yang tidak memiliki hubungan di
depannya. Setiap data harus memiliki hubungan dengan data yang lain.
struct node
{
int data;
node* next;
};
PENJELASAN MENYISIPAKAN DATA PADA LINKED LIST
1 → 3 → 5 →
6 → 2 → 7
Melakukan
penyisipan data pada linked list di atas, dilakukan dengan cara menghapus
rantai hubungan terlebih dahulu lalu memberikan angka baru dan selanjutnya
memberikan rantai hubungan baru.
Jika data
di tambahkan di tengah.
Misal kita
akan memberi angka 2 di antara angka 1 dan 3. Maka mula-mula kita harus memutus
rantai hubungan antara angka 1 dan 3. Setelah itu kita memberikan rantai
hubungan baru dari angka satu menuju angka 2, dan dari angka 2 menuju angka 3.
1è 2 è 3 → 5 → 6 → 2 → 7
Jika data
di tambahkan di awal.
Misal kita
akan memberi angka 8 di awal. Maka mula-mula kita harus menambahkan angka 8 di
awal. Lalu setelah itu memindah posisi head ke angka 8 karena angka 8 merupakan
data yang pertama. Selanjutnya kita harus menghubungkan angka 8 dengan angka 1
dengan menambahkan rantai hubungan antara angka 8 dan angka 1.
8 è
1 → 3 → 5 → 6 → 2 → 7
Jika data
di tambahkan di akhir.
Misal kita
akan memberi angka 9 di akhir. Maka kita perlu melakukan pemindahan null, karena
null merupakan penanda akhir data.
Jadi
mula-mula kita harus memberikan angka 9 setelah angka 7. Lalu menggeser posisi null
ke posisi 9. Terakhir kita harus menghubungkan angka 9 dengan angka 7 dengan
memberikan rantai hubungan antara angka 9 dan angka 7.
1 → 3 → 5 →
6 → 2 → 7è 9
MENGHAPUS DATA PADA LINKED LIST
4 → 1 → 3 →
5 → 6 → 8 → 10 → 2 → 7 → 0 → 11
Misal kita
akan pelakukan penghapusan pada angka 5, angka 4, dan angka 11. Maka yang kita
lakukan tidaklah menghapus angka-angka tersebut secara fisik, melainkan hanya
melakukan pembelokkan arah sehingga angka-angka tersebut tidak memiliki
hubungan dengan angka sebelum atau sesudahnya.
Pertama
kita akan menghapus angka 5. Jadi yang kita lakukan cukup melakukan pembelokkan
arah pada angka 5. Maksudnya, rantai hubungan yang menuju angka 5 ( setelah
angka 3 ) di buat berbelok dan tidak menuju angka 5. Kita buat rantai tersebut
menuju langsung ke angka setelah 5 yaitu angka 6. Lalu rantai hubungan setelah
angka 5 kita hapus.
Dengan
begitu angka 5 masih ada secara fisik, tetapi tidak ada secara tampilan. Karena
memang angka 5 berubah sifatnya menjadi hidden atau tersembunyi. Itu
disebabkan angka 5 tidak di deklarasikan oleh rantai hubungan.
Kedua kita
akan menghapus angka 4. Untuk menghapus angka 4, caranya masih sama seperti
menghilangkan angka 5. Tetapi pada angka 4 kita mempunyai tambahan langkah.
Yakni memindah posisi head ke angka selanjutnya yaitu
angka 1.
Setelah
memindah head, kita cukup menghilangkan rantai penghubung setelah angka
4 yang menuju angka 1. Dengan begitu angka 4 kini sama dengan angka 5, yaitu
tersembunyi dan tidak di deklarasikan.
Ketiga kita
akan menghapus angka 11. Untuk menghapus angka 11, caranya mirip dengan
menghapus angka 4. Tetapi yang kita pindah bukanlah head tapi null
yang berada di angka 11. Itu dikarenakan angka 11 merupakan angka terakhir dan
mempunyai null sebagai penanda.
Setelah
memindah null ke angka sebelumnya yakni 0. Maka kita harus menghapus
rantai penghubung sebelum angka 11 yaitu setelah angka 0. Dengan begitu angka
11 menjadi tidak terdeklarasikan dan tersembunyi.
Begitulah
bagaimana cara menghapus angka yang berada di awal, tengah, dan juga akhir.
Secara fisik angka-angka tersebut tidak terhapus, hanya saja angka tersebut
dibuat tersembunyi dan tidak dideklarasikan.
MENGHAPUS DATA PADA LINKED LIST
3 → 5 → 10
→ 7 → 0
Misal
kita akan melakukan pembelokkan pada data di atas. Maka kita harus melakukan
proses
menghapus /
memutuskan node 10 ke 7 dan 7 ke 0.
Kemudian
membelokan node dari 10 ke 0.
Kemudian membelokan
node 0 ke 7, blok 7 menjadi NULL karena data terakhir.
PROGRAM C++ LINKED LIST
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
struct node
{
int data;
node* next;
};
/*
NAMA: Irfan Fahrurrozi
NIM : 14.11.7986
KELAS: 14-S1TI-06
*/
node* head;
node* tail;
node* curr;
node* entry;
node* del;
void inisialisasi()
{
head = NULL;
tail = NULL;
}
/*
INI MERUPAKAN IMPLEMENTASI PROGRAM
MENGGUNAKAN LINKED LIST.
© IRFAN FAHRURROZI
*/
void input(int dt)
{
entry = (node* )malloc(sizeof(node));
entry->data = dt;
entry->next = NULL;
if(head==NULL)
{
head = entry;
tail = head;
}
else
{
tail->next = entry;
tail = entry;
}
}
void hapus()
{
int simpan;
if(head==NULL)
{
cout<<"\nlinked list kosong, penghapusan tidak bisa dilakukan"<<endl;
}
else
{
simpan = head ->data;
cout<<"\ndata yang dihapus adalah "<<simpan<<endl;
del = head;
head = head->next;
delete del;
}
}
void cetak()
{
curr = head;
if(head == NULL)
cout<<"\ntidak ada data dalam linked list"<<endl;
else
{
cout<<"\nData yang ada dalam linked list adalah"<<endl;
cout<<setw(6);
while(curr!=NULL)
{
cout<<curr->data<<"->";
curr = curr->next;
}
cout<<endl;
}
}
void menu()
{
char pilih, ulang;
int data;
do
{
system("cls");
cout<<"SINGLE LINKED LIST NON CIRCULAR"<<endl;
cout<<"-------------------------------"<<endl;
cout<<"Menu : "<<endl;
cout<<"1. Input data"<<endl;
cout<<"2. Hapus data"<<endl;
cout<<"3. Cetak Data"<<endl;
cout<<"4. Exit"<<endl;
cout<<"Masukkan pilihan Anda : ";
cin>>pilih;
switch(pilih)
{
case '1' :
cout<<"\nMasukkan data : ";
cin>>data;
input(data);
break;
case '2' :
hapus();
break;
case '3' :
cetak();
break;
case '4' :
exit(0);
break;
default :
cout<<"\nPilih ulang"<<endl;
}
cout<<"\nKembali ke menu?(y/n)";
cin>>ulang;
}while(ulang=='y' || ulang=='Y');
}
int main()
{
inisialisasi();
menu();
return EXIT_SUCCESS;
}
Penjelasan yg cukup bagus dan mudah dipahami.tengs
ReplyDeleteau ah males mau beli trek
ReplyDeleteyour head
Deletekok di malloc nya error ya min
ReplyDeletecoba ditambah library #include
Delete#include apa?
Delete#include apa?
Deletedi tambah #include atau kalo ga salah
Deletemantav materinya, kunjungi juga..
ReplyDeleteLink : https://adiinformatika.blogspot.com/2020/05/contoh-program-linked-list-c-sederhana.html
kalo mau nge back-link, make "<*a href="http://url.com">nama URL<*/a>".
Deletehapus tanda *