SlideShare a Scribd company logo
1 of 24
SINGLY LINKED LIST
Sesi 5
2
Linked List
• 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.
3
Array VS Linked List
4
Ilustrasi Linked List
• Double Linked List
• Single Linked List
5
Single Linked List
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.
6
Penjelasan:
• Pembuatan struct bernama TNode yang berisi 2
field, yaitu field data bertipe integer dan field next
yang bertipe pointer dari TNode
• Setelah pembuatan struct, buat variabel haed yang
bertipe pointer dari TNode yang berguna sebagai
kepala linked list.
Deklarasi Single Linked List Non
Circular
typedef struct Tnode
{
int data;
TNode *next;
};
7
Pembuatan Single Linked List non
Circular
• Digunakan keyword new yang berarti
mempersiapkan sebuah node baru
berserta alokasi memorinya, kemudian
node tersebut diisi data dan pointer
nextnya ditunjuk ke NULL.
Deklarasi Node baru
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
8
Single Linked List non Circular
menggunakan Head
• Dibutuhkan satu buah variabel pointer: head
• Head akan selalu menunjuk pada node pertama
Deklarasi Pointer Penunjuk Kepala Single Linked List
• Manipulasi linked list tidak bisa dilakukan langsung ke
node yang dituju, melainkan harus menggunakan suatu
pointer penunjuk ke node pertama dalam linked list
(dalam hal ini adalah head). Deklarasinya sebagai
berikut:
• TNode *head;
9
SLLNC menggunakan Head
Fungsi Inisialisasi Single LinkedList
void init(){
head = NULL;
}
Function untuk mengetahui kosong tidaknya Single
LinkedList
• Jika pointer head tidak menunjuk pada suatu node maka
kosong
int isEmpty(){
if(head == NULL) return 1;
else return 0;
}
10
Penambahan data di depan
• Penambahan node baru akan dikaitkan 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.
• Pada prinsipnya adalah mengkaitkan node baru
dengan head, kemudian head akan menunjuk
pada data baru tersebut sehingga head akan tetap
selalu menjadi data terdepan.
11
Fungsi Penambahan Node Di Depan
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 masukn”;
}
12
SLL dengan Head
13
Penambahan data di belakang
• Penambahan data dilakukan di belakang, namun
pada saat pertama kali, node langsung ditunjuk
oleh head.
• Penambahan di belakang lebih sulit karena kita
membutuhkan pointer bantu untuk mengetahui
node terbelakang, kemudian setelah itu, dikaitkan
dengan node baru. Untuk mengetahui data
terbelakang perlu digunakan perulangan.
14
Fungsi Penambahan Node Di Belakang
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;
}
cout<<"Data masukn";
}
15
Ilustrasi Penambahan Node Di Belakang
16
Fungsi Menampilkan Data
void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
cout<<bantu->data<<" ";
bantu=bantu->next;
}
cout<<endl;
} else cout<<"Masih kosongn";
}
17
Fungsi Menampilkan Data
• Function di atas digunakan untuk menampilkan semua isi
list, di mana linked list ditelusuri satu-persatu dari awal
node sampai akhir node. Penelusuran ini dilakukan
dengan menggunakan suatu pointer bantu, karena pada
prinsipnya pointer head yang menjadi tanda awal list tidak
boleh berubah/berganti posisi.
• Penelusuran dilakukan terus sampai node terakhir
ditemukan 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!
18
Fungsi untuk menghapus data terdepan
void hapusDepan (){
TNode *hapus;
int 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<<" terhapusn";
} else cout<<"Masih kosongn";
}
19
Fungsi Menghapus Data Di Depan
• Function di atas akan menghapus data teratas (pertama)
yang ditunjuk oleh head pada linked list
• Penghapusan node tidak boleh dilakukan jika keadaan
node sedang ditunjuk oleh pointer, maka harus dilakukan
penggunakan suatu pointer lain yang digunakan untuk
menunjuk node yang akan dihapus, misalnya pointer hapus
dan barulah kemudian menghapus pointer hapus dengan
menggunakan perintah delete.
• Sebelum data terdepan dihapus, head harus ditunjukkan ke
node sesudahnya terlebih dahulu agar list tidak putus,
sehingga node setelah head lama akan menjadi head baru
(data terdepan yang baru).
• Jika head masih NULL maka berarti data masih kosong!
20
Fungsi Menghapus Data Di Belakang
void hapusBelakang(){
TNode *hapus,*bantu;
int 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<<" terhapusn";
} else cout<<"Masih kosongn";
}
21
Ilustrasi Menghapus Data Di Belakang
22
Fungsi Menghapus Semua Elemen
void clear(){
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL){
hapus = bantu;
bantu = bantu->next;
delete hapus;
}
head = NULL;
}
23
Fungsi Menghapus Data Di Belakang
• Membutuhkan pointer bantu dan hapus.
• Pointer hapus digunakan untuk menunjuk node yang akan
dihapus, dan pointer bantu digunakan untuk menunjuk
node sebelum node yang dihapus yang kemudian
selanjutnya akan menjadi node terakhir.
• Pointer bantu akan digunakan untuk menunjuk ke nilai
NULL.
• Pointer bantu akan selalu bergerak sampai sebelum node
yang akan dihapus, baru kemudian pointer hapus
diletakkan setelah pointer bantu. Setelah itu pointer hapus
akan dihapus, pointe bantu akan menunjuk ke NULL.
24
SOAL LATIHAN
• Buatlah program lengkap dari semua algoritma dan
function di atas dalam bentuk menu untuk menambah data,
melihat data, dan menghapus data!
• Buatlah function tambahan yang berguna untuk mencari
data yang ada dalam linked list baik secara ber-Head
maupun ber-Head dan Tail!
• Buatlah function untuk menghapus data tertentu dalam
linked list!
• Buatlah penyisipan node setelah atau sebelum data
tertentu.

More Related Content

What's hot (20)

Tistrukdat7
Tistrukdat7Tistrukdat7
Tistrukdat7
 
POWER POINT STRUKTUR DATA AMIK BSI PURWOKERTO
POWER POINT STRUKTUR DATA AMIK  BSI PURWOKERTOPOWER POINT STRUKTUR DATA AMIK  BSI PURWOKERTO
POWER POINT STRUKTUR DATA AMIK BSI PURWOKERTO
 
Tugas kelompok mi d3_sore
Tugas kelompok mi d3_soreTugas kelompok mi d3_sore
Tugas kelompok mi d3_sore
 
5 6 single-linked_list
5 6 single-linked_list5 6 single-linked_list
5 6 single-linked_list
 
Linked list
Linked listLinked list
Linked list
 
Pertemuan 1 revisijan2013-mhs
Pertemuan 1 revisijan2013-mhsPertemuan 1 revisijan2013-mhs
Pertemuan 1 revisijan2013-mhs
 
Circular linked list
Circular linked listCircular linked list
Circular linked list
 
circular linked list
circular linked listcircular linked list
circular linked list
 
Linked list
Linked listLinked list
Linked list
 
Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3
 
Resume praktikum 5__linked_list
Resume praktikum 5__linked_listResume praktikum 5__linked_list
Resume praktikum 5__linked_list
 
Modul 2
Modul 2Modul 2
Modul 2
 
Modul 3 strukdat
Modul 3 strukdatModul 3 strukdat
Modul 3 strukdat
 
Double linked list
Double linked listDouble linked list
Double linked list
 
mengenal fungsi-fungsi diSQL Server
mengenal fungsi-fungsi diSQL Servermengenal fungsi-fungsi diSQL Server
mengenal fungsi-fungsi diSQL Server
 
teori Struktur data full
teori Struktur data fullteori Struktur data full
teori Struktur data full
 
Linked List
Linked ListLinked List
Linked List
 
12. data (variable dan list) scratch
12. data (variable dan list) scratch12. data (variable dan list) scratch
12. data (variable dan list) scratch
 
Linked List dalam Struktur Data
Linked List dalam Struktur DataLinked List dalam Struktur Data
Linked List dalam Struktur Data
 
Linked list
Linked listLinked list
Linked list
 

Similar to Bab 6 singly_linked_list

SINGLE_LINKED_LIST.pptx
SINGLE_LINKED_LIST.pptxSINGLE_LINKED_LIST.pptx
SINGLE_LINKED_LIST.pptxlegiafatah
 
Pertemuan 3.pptx
Pertemuan 3.pptxPertemuan 3.pptx
Pertemuan 3.pptxjonamanalu
 
9.double linked list circular
9.double linked list circular9.double linked list circular
9.double linked list circularHitesh Wagle
 
DOUBLE LINKED LIST..docx
DOUBLE LINKED LIST..docxDOUBLE LINKED LIST..docx
DOUBLE LINKED LIST..docxSubandi Wahyudi
 
Single Linked List - Insert .pptx
Single Linked List - Insert .pptxSingle Linked List - Insert .pptx
Single Linked List - Insert .pptxUmi Sa'adah
 
MAKALAH DOUBLE LINKED LIST BAHASA C.docx
MAKALAH DOUBLE LINKED LIST BAHASA C.docxMAKALAH DOUBLE LINKED LIST BAHASA C.docx
MAKALAH DOUBLE LINKED LIST BAHASA C.docxDikicandra6
 
Materi linked list dan bubble sort
Materi linked list dan bubble sortMateri linked list dan bubble sort
Materi linked list dan bubble sortYunan Helmi Nasution
 
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data StructuresNoval C. Kesuma
 
PPT STRUKTUR DATA(1).pptx
PPT STRUKTUR DATA(1).pptxPPT STRUKTUR DATA(1).pptx
PPT STRUKTUR DATA(1).pptxJendralSweet
 
MAKALAH SINGLE LINKED LIST DALAM BAHASA.docx
MAKALAH SINGLE LINKED LIST DALAM BAHASA.docxMAKALAH SINGLE LINKED LIST DALAM BAHASA.docx
MAKALAH SINGLE LINKED LIST DALAM BAHASA.docxDikicandra6
 

Similar to Bab 6 singly_linked_list (18)

SINGLE_LINKED_LIST.pptx
SINGLE_LINKED_LIST.pptxSINGLE_LINKED_LIST.pptx
SINGLE_LINKED_LIST.pptx
 
11
1111
11
 
Pertemuan 3.pptx
Pertemuan 3.pptxPertemuan 3.pptx
Pertemuan 3.pptx
 
9.double linked list circular
9.double linked list circular9.double linked list circular
9.double linked list circular
 
DOUBLE LINKED LIST..docx
DOUBLE LINKED LIST..docxDOUBLE LINKED LIST..docx
DOUBLE LINKED LIST..docx
 
Single Linked List - Insert .pptx
Single Linked List - Insert .pptxSingle Linked List - Insert .pptx
Single Linked List - Insert .pptx
 
MAKALAH DOUBLE LINKED LIST BAHASA C.docx
MAKALAH DOUBLE LINKED LIST BAHASA C.docxMAKALAH DOUBLE LINKED LIST BAHASA C.docx
MAKALAH DOUBLE LINKED LIST BAHASA C.docx
 
Materi linked list dan bubble sort
Materi linked list dan bubble sortMateri linked list dan bubble sort
Materi linked list dan bubble sort
 
Persentasi linked list
Persentasi linked listPersentasi linked list
Persentasi linked list
 
Persentasi linked list
Persentasi linked listPersentasi linked list
Persentasi linked list
 
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data Structures
 
3 Linked List
3   Linked List3   Linked List
3 Linked List
 
Linked List
Linked ListLinked List
Linked List
 
PPT STRUKTUR DATA(1).pptx
PPT STRUKTUR DATA(1).pptxPPT STRUKTUR DATA(1).pptx
PPT STRUKTUR DATA(1).pptx
 
Tistrukdat10
Tistrukdat10Tistrukdat10
Tistrukdat10
 
MAKALAH SINGLE LINKED LIST DALAM BAHASA.docx
MAKALAH SINGLE LINKED LIST DALAM BAHASA.docxMAKALAH SINGLE LINKED LIST DALAM BAHASA.docx
MAKALAH SINGLE LINKED LIST DALAM BAHASA.docx
 
Struktur Data Tree
Struktur Data TreeStruktur Data Tree
Struktur Data Tree
 
Struktur affif
Struktur affifStruktur affif
Struktur affif
 

More from arii_manroe

Bab 11 hash_table
Bab 11 hash_tableBab 11 hash_table
Bab 11 hash_tablearii_manroe
 
Bab 10 tree_lanjutan
Bab 10 tree_lanjutanBab 10 tree_lanjutan
Bab 10 tree_lanjutanarii_manroe
 
Bab 5 queue_antrian_
Bab 5 queue_antrian_Bab 5 queue_antrian_
Bab 5 queue_antrian_arii_manroe
 
Bab 4 stack_tumpukan_
Bab 4 stack_tumpukan_Bab 4 stack_tumpukan_
Bab 4 stack_tumpukan_arii_manroe
 
Bab 3 searching_array
Bab 3 searching_arrayBab 3 searching_array
Bab 3 searching_arrayarii_manroe
 
Bab 2 sorting_array
Bab 2 sorting_arrayBab 2 sorting_array
Bab 2 sorting_arrayarii_manroe
 
Bab 1 abstraksi_tipe_data
Bab 1 abstraksi_tipe_dataBab 1 abstraksi_tipe_data
Bab 1 abstraksi_tipe_dataarii_manroe
 
Bab 12 file_manipulation
Bab 12 file_manipulationBab 12 file_manipulation
Bab 12 file_manipulationarii_manroe
 

More from arii_manroe (10)

Bab 11 hash_table
Bab 11 hash_tableBab 11 hash_table
Bab 11 hash_table
 
Bab 10 tree_lanjutan
Bab 10 tree_lanjutanBab 10 tree_lanjutan
Bab 10 tree_lanjutan
 
Bab 9 tree
Bab 9 treeBab 9 tree
Bab 9 tree
 
Bab 8 rekursif
Bab 8 rekursifBab 8 rekursif
Bab 8 rekursif
 
Bab 5 queue_antrian_
Bab 5 queue_antrian_Bab 5 queue_antrian_
Bab 5 queue_antrian_
 
Bab 4 stack_tumpukan_
Bab 4 stack_tumpukan_Bab 4 stack_tumpukan_
Bab 4 stack_tumpukan_
 
Bab 3 searching_array
Bab 3 searching_arrayBab 3 searching_array
Bab 3 searching_array
 
Bab 2 sorting_array
Bab 2 sorting_arrayBab 2 sorting_array
Bab 2 sorting_array
 
Bab 1 abstraksi_tipe_data
Bab 1 abstraksi_tipe_dataBab 1 abstraksi_tipe_data
Bab 1 abstraksi_tipe_data
 
Bab 12 file_manipulation
Bab 12 file_manipulationBab 12 file_manipulation
Bab 12 file_manipulation
 

Recently uploaded

MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555zannialzur
 
Thermodynamics analysis of energy, entropy and exergy
Thermodynamics analysis of energy, entropy and exergyThermodynamics analysis of energy, entropy and exergy
Thermodynamics analysis of energy, entropy and exergyEndarto Yudo
 
Minggu 5 Pepistimlogy berbasis wawasan politik_Ekonomi.pptx
Minggu 5 Pepistimlogy berbasis wawasan politik_Ekonomi.pptxMinggu 5 Pepistimlogy berbasis wawasan politik_Ekonomi.pptx
Minggu 5 Pepistimlogy berbasis wawasan politik_Ekonomi.pptxRahmiAulia20
 
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptxPPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptxdpcaskonasoki
 
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptxQCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptxdjam11
 
Analisis Struktur Statis Tak Tentu dengan Force Method.pdf
Analisis Struktur Statis Tak Tentu dengan Force Method.pdfAnalisis Struktur Statis Tak Tentu dengan Force Method.pdf
Analisis Struktur Statis Tak Tentu dengan Force Method.pdfAgusTriyono78
 
Klasifikasi jenis pompa berdasarkan cara kerjanya
Klasifikasi jenis pompa berdasarkan cara kerjanyaKlasifikasi jenis pompa berdasarkan cara kerjanya
Klasifikasi jenis pompa berdasarkan cara kerjanyafaizalabdillah10
 
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIKMEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIKFerdinandus9
 
Teori Pembakaran bahan kimia organik .ppt
Teori Pembakaran bahan kimia organik .pptTeori Pembakaran bahan kimia organik .ppt
Teori Pembakaran bahan kimia organik .pptEndarto Yudo
 
Normalisasi Database dan pengertian database
Normalisasi Database dan pengertian databaseNormalisasi Database dan pengertian database
Normalisasi Database dan pengertian databasethinkplusx1
 
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptxPPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptxHamidNurMukhlis
 

Recently uploaded (11)

MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
 
Thermodynamics analysis of energy, entropy and exergy
Thermodynamics analysis of energy, entropy and exergyThermodynamics analysis of energy, entropy and exergy
Thermodynamics analysis of energy, entropy and exergy
 
Minggu 5 Pepistimlogy berbasis wawasan politik_Ekonomi.pptx
Minggu 5 Pepistimlogy berbasis wawasan politik_Ekonomi.pptxMinggu 5 Pepistimlogy berbasis wawasan politik_Ekonomi.pptx
Minggu 5 Pepistimlogy berbasis wawasan politik_Ekonomi.pptx
 
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptxPPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
 
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptxQCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
 
Analisis Struktur Statis Tak Tentu dengan Force Method.pdf
Analisis Struktur Statis Tak Tentu dengan Force Method.pdfAnalisis Struktur Statis Tak Tentu dengan Force Method.pdf
Analisis Struktur Statis Tak Tentu dengan Force Method.pdf
 
Klasifikasi jenis pompa berdasarkan cara kerjanya
Klasifikasi jenis pompa berdasarkan cara kerjanyaKlasifikasi jenis pompa berdasarkan cara kerjanya
Klasifikasi jenis pompa berdasarkan cara kerjanya
 
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIKMEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
 
Teori Pembakaran bahan kimia organik .ppt
Teori Pembakaran bahan kimia organik .pptTeori Pembakaran bahan kimia organik .ppt
Teori Pembakaran bahan kimia organik .ppt
 
Normalisasi Database dan pengertian database
Normalisasi Database dan pengertian databaseNormalisasi Database dan pengertian database
Normalisasi Database dan pengertian database
 
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptxPPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
 

Bab 6 singly_linked_list

  • 2. 2 Linked List • 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.
  • 4. 4 Ilustrasi Linked List • Double Linked List • Single Linked List
  • 5. 5 Single Linked List 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.
  • 6. 6 Penjelasan: • Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode • Setelah pembuatan struct, buat variabel haed yang bertipe pointer dari TNode yang berguna sebagai kepala linked list. Deklarasi Single Linked List Non Circular typedef struct Tnode { int data; TNode *next; };
  • 7. 7 Pembuatan Single Linked List non Circular • Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi memorinya, kemudian node tersebut diisi data dan pointer nextnya ditunjuk ke NULL. Deklarasi Node baru TNode *baru; baru = new TNode; baru->data = databaru; baru->next = NULL;
  • 8. 8 Single Linked List non Circular menggunakan Head • Dibutuhkan satu buah variabel pointer: head • Head akan selalu menunjuk pada node pertama Deklarasi Pointer Penunjuk Kepala Single Linked List • Manipulasi linked list tidak bisa dilakukan langsung ke node yang dituju, melainkan harus menggunakan suatu pointer penunjuk ke node pertama dalam linked list (dalam hal ini adalah head). Deklarasinya sebagai berikut: • TNode *head;
  • 9. 9 SLLNC menggunakan Head Fungsi Inisialisasi Single LinkedList void init(){ head = NULL; } Function untuk mengetahui kosong tidaknya Single LinkedList • Jika pointer head tidak menunjuk pada suatu node maka kosong int isEmpty(){ if(head == NULL) return 1; else return 0; }
  • 10. 10 Penambahan data di depan • Penambahan node baru akan dikaitkan 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. • Pada prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan.
  • 11. 11 Fungsi Penambahan Node Di Depan 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 masukn”; }
  • 13. 13 Penambahan data di belakang • Penambahan data dilakukan di belakang, namun pada saat pertama kali, node langsung ditunjuk oleh head. • Penambahan di belakang lebih sulit karena kita membutuhkan pointer bantu untuk mengetahui node terbelakang, kemudian setelah itu, dikaitkan dengan node baru. Untuk mengetahui data terbelakang perlu digunakan perulangan.
  • 14. 14 Fungsi Penambahan Node Di Belakang 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; } cout<<"Data masukn"; }
  • 16. 16 Fungsi Menampilkan Data void tampil(){ TNode *bantu; bantu = head; if(isEmpty()==0){ while(bantu!=NULL){ cout<<bantu->data<<" "; bantu=bantu->next; } cout<<endl; } else cout<<"Masih kosongn"; }
  • 17. 17 Fungsi Menampilkan Data • Function di atas digunakan untuk menampilkan semua isi list, di mana linked list ditelusuri satu-persatu dari awal node sampai akhir node. Penelusuran ini dilakukan dengan menggunakan suatu pointer bantu, karena pada prinsipnya pointer head yang menjadi tanda awal list tidak boleh berubah/berganti posisi. • Penelusuran dilakukan terus sampai node terakhir ditemukan 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!
  • 18. 18 Fungsi untuk menghapus data terdepan void hapusDepan (){ TNode *hapus; int 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<<" terhapusn"; } else cout<<"Masih kosongn"; }
  • 19. 19 Fungsi Menghapus Data Di Depan • Function di atas akan menghapus data teratas (pertama) yang ditunjuk oleh head pada linked list • Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penggunakan suatu pointer lain yang digunakan untuk menunjuk node yang akan dihapus, misalnya pointer hapus dan barulah kemudian menghapus pointer hapus dengan menggunakan perintah delete. • Sebelum data terdepan dihapus, head harus ditunjukkan ke node sesudahnya terlebih dahulu agar list tidak putus, sehingga node setelah head lama akan menjadi head baru (data terdepan yang baru). • Jika head masih NULL maka berarti data masih kosong!
  • 20. 20 Fungsi Menghapus Data Di Belakang void hapusBelakang(){ TNode *hapus,*bantu; int 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<<" terhapusn"; } else cout<<"Masih kosongn"; }
  • 22. 22 Fungsi Menghapus Semua Elemen void clear(){ TNode *bantu,*hapus; bantu = head; while(bantu!=NULL){ hapus = bantu; bantu = bantu->next; delete hapus; } head = NULL; }
  • 23. 23 Fungsi Menghapus Data Di Belakang • Membutuhkan pointer bantu dan hapus. • Pointer hapus digunakan untuk menunjuk node yang akan dihapus, dan pointer bantu digunakan untuk menunjuk node sebelum node yang dihapus yang kemudian selanjutnya akan menjadi node terakhir. • Pointer bantu akan digunakan untuk menunjuk ke nilai NULL. • Pointer bantu akan selalu bergerak sampai sebelum node yang akan dihapus, baru kemudian pointer hapus diletakkan setelah pointer bantu. Setelah itu pointer hapus akan dihapus, pointe bantu akan menunjuk ke NULL.
  • 24. 24 SOAL LATIHAN • Buatlah program lengkap dari semua algoritma dan function di atas dalam bentuk menu untuk menambah data, melihat data, dan menghapus data! • Buatlah function tambahan yang berguna untuk mencari data yang ada dalam linked list baik secara ber-Head maupun ber-Head dan Tail! • Buatlah function untuk menghapus data tertentu dalam linked list! • Buatlah penyisipan node setelah atau sebelum data tertentu.