SINGLE
LINKED LIST
KELOMPOK 9
LEGI AFATAH
NIKEN ANDINI
Linked List adalah salah satu bentuk struktur data, berisi
kumpulan data (node) yang tersusun secara skuensial,
saling sambung menyambung, dinamis dan terbatas.
Linked List sering disebut juga Senarai Berantai. Linked List
saling terhubung dengan bantuan variable 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.
LINKED LIST
Single Linked List adalah sebuah LINKED LIST yang
menggunakan sebuah variabel pointer saja untuk
menyimpan banyak data dengan metode LINKED LIST,
suatu daftar isi yang saling berhubungan. Single Linked
List adalah sekumpulan dari node yang saling terhubung
dengan node lain melalui sebuah pointer. Single Linked List
hanya memiliki satu arah dan tidak memiliki dua arah atau
bulak balik, dua arah tersebut disebut dengan double
linked list.
Single LINKED LIST
Kenapa single?
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.
ILUSTRASI
SINGLE LINKED LIST
Data terletak pada sebuah lokasi dalam sebuah
memory, tempat yang disediakan memory untuk
menyimpan data disebut node ? simpul, setiap
node memiliki pointer ( penunjuk ) yang menunjuk
ke node berikutnya sehingga terbentuk suatu
untaian yang disebut single LINKED LIST. Bila
dalam single LINKED LIST pointer hanya dapat
bergerak ke satu arah saja, maju / mundur,
kanan / kiri, sehingga pencarian datanya juga
hanya satu arah saja.
A
B
C
E
D
SINGLE LINKED LIST
head dan tail
Dibutuhkan dua buah variabel pointer head dan
tail. Head akan selalu menunjuk pada node
pertama, sedangkan tail akan selalu menunjuk
pada node terakhir
val
val2
val4
val3
Ekor
Kepala
PENAMBAHAN
NODE DEPAN
Pengkaitan node baru ke linked list di
depan Penambahan data baru di depan
akan selalu menjadi head.
void insertDepan(int databaru){
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = baru;
if(isEmpty()==1){
head=baru;
tail=baru;
head->next=head;
tail->next=tail;
}
else {
baru->next = head;
head = baru;
tail->next = head;
}
cout<<"Data masukn";
}
PENAMBAHAN
NODE BELAKANG
Penambahan Data di belakang Pada
penambahan data di belakang, data akan
selalu dikaitkan dengan tail, karena tail
terletak di node paling belakang. Setelah
dikaitkan dengan node baru, maka node
baru tersebut akan menjadi tail.
void tambahBelakang(int databaru){
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = baru;
if(isEmpty()==1){
head=baru;
tail=baru;
head->next=head;
tail->next=tail;
}
else
{
tail->next = baru;
tail = baru;
tail->next = head;
}
cout<<"Data masukn";
}
KELEBIHAN SINGLE LINKED LIST
Kelebihan dari Single Linked List dengan Head &
Tail adalah pada penambahan data di belakang,
hanya dibutuhkan tail yang mengikat node baru
saja tanpa harus menggunakan perulangan
pointer bantu.
KEKURANGAN SINGLE LINKED LIST
Kekurangan utama dalam Single Linked List adalah
akses acak yang lambat. Karena setiap elemen
dalam linked list hanya memiliki referensi ke
elemen berikutnya, untuk mengakses elemen di
posisi tertentu, kita harus melalui semua elemen
sebelumnya secara berurutan. Ini dapat
menghasilkan kompleksitas waktu O(n), di mana n
adalah jumlah elemen dalam linked list.
FUNCTION MENGHAPUS
DATA DI DEPAN
void hapusDepan(){
TNode *hapus;
if (isEmpty()==0){ int d;
hapus = head;
d = head->data;
if(head != tail){ hapus = head;
head = head->next;
tail->next = head; delete hapus;
}else{
head=NULL;
tail=NULL;
}
cout<<<" terhapusn";
}
else cout<<"Masih kosongn";
}
Function tersebut akan menghapus data terdepan
(pertama) yang ditunjuk oleh head pada linked list.
Penghapusan node tidak boleh dilakukan jika keadaan
node sedang ditunjuk oleh pointer, maka harus
dilakukan penunjukkan terlebih dahulu dengan variabel
hapus pada head, kemudian dilakukan pergeseran ke
node berikutnya sehingga data setelah head menjadi
head baru, kemudian menghapus variabel hapus
dengan menggunakan perintah delete.
FUNCTION MENGHAPUS
DATA Di BELAKANG
void hapusBelakang(){ TNode
*hapus,*bantu; if (isEmpty()==0){ int
d;
if(head == tail){ d = tail->data; head =
NULL; tail = NULL;
} else { bantu = head; while(bantu-
>next != tail){
bantu = bantu->next; } hapus = tail;
tail = bantu; d = hapus->data; tail-
>next = head; delete hapus;
} cout<<<" terhapusn";
}
else cout<<"Masih kosongn";
}
Dengan menggunakan Single Linked List ber-Head dan
Tail, pengahapusan data di belakang akan mudah
dilakukan, tidak seperti pada Single Linked List hanya
ber-Head saja. Function ini akan menghapus data
terbelakang (terakhir) yang ditunjuk oleh tail pada
linked list. Penghapusan node tidak boleh dilakukan jika
keadaan node sedang ditunjuk oleh pointer, maka
harus dilakukan penunjukkan terlebih dahulu dengan
variabel hapus pada tail, kemudian dibutuhkan pointer
bantu untuk membantu pergeseran dari head ke node
berikutnya sampai sebelum tail, sehingga tail dapat
ditunjukkan ke bantu tersebut, dan bantu tersebut akan
menjadi tail yang baru. Setelah itu hapus variabel
hapus dengan menggunakan perintah delete.
Function untuk
menghapus semua
elemen Linked List
void clear(){ TNode
*bantu,*hapus;
if(isEmpty() == 0){ bantu =
head;
while(bantu->next!=head){
hapus = bantu;
bantu = bantu->next;
delete hapus;
}
head = NULL;
tail = NULL;
}
}
Pada saat pointer hapus menunjuk
pada node yang akan dihapus, pointer
bantu akan bergerak ke node
selanjutnya, dan kemudian pointer
hapus akan di delete
Linked list
single
Field pointernya hanya satu
buah saja dan satu arah serta
pada akhir node, pointernya
menunjuk NULL
Node terakhir akan menunjuk ke
NULL yang akan digunakan
sebagai kondisi berhenti pada
saat pembacaan isi linked list..
Node-node tersebut saling
terhubung satu sama lain
keyword
NODE
Setiap node pada linked list
mempunyai field yang berisi
pointer ke node berikutnya, dan
juga memiliki field yang berisi
data
● https://citeseerx.ist.psu.edu/document?repid=re
p1&type=pdf&doi=482af45c79932e29cb7cbc5fd
6aca4da902c0d22
● https://www.microsoft.com/en-us/research/wp-
content/uploads/2016/02/popl06-havoc.pdf
referensi
TERIMA KASIH

SINGLE_LINKED_LIST.pptx

  • 1.
  • 2.
    Linked List adalahsalah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara skuensial, saling sambung menyambung, dinamis dan terbatas. Linked List sering disebut juga Senarai Berantai. Linked List saling terhubung dengan bantuan variable 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. LINKED LIST
  • 3.
    Single Linked Listadalah sebuah LINKED LIST yang menggunakan sebuah variabel pointer saja untuk menyimpan banyak data dengan metode LINKED LIST, suatu daftar isi yang saling berhubungan. Single Linked List adalah sekumpulan dari node yang saling terhubung dengan node lain melalui sebuah pointer. Single Linked List hanya memiliki satu arah dan tidak memiliki dua arah atau bulak balik, dua arah tersebut disebut dengan double linked list. Single LINKED LIST
  • 4.
    Kenapa single? 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.
  • 5.
    ILUSTRASI SINGLE LINKED LIST Dataterletak pada sebuah lokasi dalam sebuah memory, tempat yang disediakan memory untuk menyimpan data disebut node ? simpul, setiap node memiliki pointer ( penunjuk ) yang menunjuk ke node berikutnya sehingga terbentuk suatu untaian yang disebut single LINKED LIST. Bila dalam single LINKED LIST pointer hanya dapat bergerak ke satu arah saja, maju / mundur, kanan / kiri, sehingga pencarian datanya juga hanya satu arah saja. A B C E D
  • 6.
    SINGLE LINKED LIST headdan tail Dibutuhkan dua buah variabel pointer head dan tail. Head akan selalu menunjuk pada node pertama, sedangkan tail akan selalu menunjuk pada node terakhir val val2 val4 val3 Ekor Kepala
  • 7.
    PENAMBAHAN NODE DEPAN Pengkaitan nodebaru ke linked list di depan Penambahan data baru di depan akan selalu menjadi head. void insertDepan(int databaru){ TNode *baru; baru = new TNode; baru->data = databaru; baru->next = baru; if(isEmpty()==1){ head=baru; tail=baru; head->next=head; tail->next=tail; } else { baru->next = head; head = baru; tail->next = head; } cout<<"Data masukn"; }
  • 8.
    PENAMBAHAN NODE BELAKANG Penambahan Datadi belakang Pada penambahan data di belakang, data akan selalu dikaitkan dengan tail, karena tail terletak di node paling belakang. Setelah dikaitkan dengan node baru, maka node baru tersebut akan menjadi tail. void tambahBelakang(int databaru){ TNode *baru; baru = new TNode; baru->data = databaru; baru->next = baru; if(isEmpty()==1){ head=baru; tail=baru; head->next=head; tail->next=tail; } else { tail->next = baru; tail = baru; tail->next = head; } cout<<"Data masukn"; }
  • 9.
    KELEBIHAN SINGLE LINKEDLIST Kelebihan dari Single Linked List dengan Head & Tail adalah pada penambahan data di belakang, hanya dibutuhkan tail yang mengikat node baru saja tanpa harus menggunakan perulangan pointer bantu.
  • 10.
    KEKURANGAN SINGLE LINKEDLIST Kekurangan utama dalam Single Linked List adalah akses acak yang lambat. Karena setiap elemen dalam linked list hanya memiliki referensi ke elemen berikutnya, untuk mengakses elemen di posisi tertentu, kita harus melalui semua elemen sebelumnya secara berurutan. Ini dapat menghasilkan kompleksitas waktu O(n), di mana n adalah jumlah elemen dalam linked list.
  • 11.
    FUNCTION MENGHAPUS DATA DIDEPAN void hapusDepan(){ TNode *hapus; if (isEmpty()==0){ int d; hapus = head; d = head->data; if(head != tail){ hapus = head; head = head->next; tail->next = head; delete hapus; }else{ head=NULL; tail=NULL; } cout<<<" terhapusn"; } else cout<<"Masih kosongn"; } Function tersebut akan menghapus data terdepan (pertama) yang ditunjuk oleh head pada linked list. Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan variabel hapus pada head, kemudian dilakukan pergeseran ke node berikutnya sehingga data setelah head menjadi head baru, kemudian menghapus variabel hapus dengan menggunakan perintah delete.
  • 12.
    FUNCTION MENGHAPUS DATA DiBELAKANG void hapusBelakang(){ TNode *hapus,*bantu; if (isEmpty()==0){ int d; if(head == tail){ d = tail->data; head = NULL; tail = NULL; } else { bantu = head; while(bantu- >next != tail){ bantu = bantu->next; } hapus = tail; tail = bantu; d = hapus->data; tail- >next = head; delete hapus; } cout<<<" terhapusn"; } else cout<<"Masih kosongn"; } Dengan menggunakan Single Linked List ber-Head dan Tail, pengahapusan data di belakang akan mudah dilakukan, tidak seperti pada Single Linked List hanya ber-Head saja. Function ini akan menghapus data terbelakang (terakhir) yang ditunjuk oleh tail pada linked list. Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan variabel hapus pada tail, kemudian dibutuhkan pointer bantu untuk membantu pergeseran dari head ke node berikutnya sampai sebelum tail, sehingga tail dapat ditunjukkan ke bantu tersebut, dan bantu tersebut akan menjadi tail yang baru. Setelah itu hapus variabel hapus dengan menggunakan perintah delete.
  • 13.
    Function untuk menghapus semua elemenLinked List void clear(){ TNode *bantu,*hapus; if(isEmpty() == 0){ bantu = head; while(bantu->next!=head){ hapus = bantu; bantu = bantu->next; delete hapus; } head = NULL; tail = NULL; } } Pada saat pointer hapus menunjuk pada node yang akan dihapus, pointer bantu akan bergerak ke node selanjutnya, dan kemudian pointer hapus akan di delete
  • 14.
    Linked list single Field pointernyahanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list.. Node-node tersebut saling terhubung satu sama lain keyword NODE Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data
  • 15.
  • 16.

Editor's Notes

  • #2 Assalamualaikum Warahmatullahi Wabarakatuh, kami Niken Andini dan Legi Afatah dari kelompok 9 akan mengajak teman-teman semua untuk lebih tau tentang salah satu struktur data yang penting dalam pemrograman komputer yaitu single linked list.
  • #3 Sebelum ke Single Linked List, kita akan sedikit menjelaskan apa itu linked list //baca slide
  • #4 Jadi, apa itu Single Linked List //baca slide
  • #5 Kenapa dikatakan Single? //baca slide
  • #6 //baca slide Dari Ilustrasi Single Linked List dapat disimpulkan bahwa, struktur data yang terdiri dari simpul-simpul yang saling terhubung dalam urutan, dengan setiap simpul memiliki penunjuk yang menunjuk ke simpul berikutnya. Dalam Single Linked List, pencarian data dilakukan dalam satu arah, mengikuti arah penunjuk.
  • #7 //baca slide Dengan menggunakan head dan tail, kita dapat mengoptimalkan operasi pada ujung-ujung Single Linked List, menjadikan manipulasi dan akses data lebih efisien dan mudah dilakukan.
  • #8 Setiap penambahan data baru di depan Single Linked List akan selalu menyebabkan node baru tersebut menjadi head baru. Hal ini memungkinkan kita untuk dengan cepat menambahkan data baru dan memperbarui head dalam operasi penambahan pada list.
  • #9 Pada penambahan data di belakang Single Linked List akan selalu dikaitkan dengan tail. Hal ini memungkinkan kita untuk dengan cepat menambahkan data baru ke bagian belakang list dan memperbarui tail dalam operasi penambahan pada list.
  • #10 Tidak ada struktur data yang sempurna, dan Single Linked List juga memiliki kelebihan yang perlu kita pertimbangkan. Kami akan melihat secara lebih detail apa saja manfaat dari penggunaan Single Linked List, serta situasi di mana ia mungkin tidak menjadi pilihan terbaik. //baca slide
  • #11 //baca slide
  • #12 //baca slide fungsi "hapusDepan()" akan menghapus elemen pertama (depan) dari Circular Linked List dan mengatur ulang pointer "head" dan "tail" jika diperlukan. Yang nantinya akan menampilkan pesan yang sesuai akan ditampilkan untuk memberi tahu pengguna bahwa elemen telah dihapus.
  • #13 //baca slide fungsi "hapusBelakang()" akan menghapus elemen terakhir (belakang) dari Circular Linked List dan mengatur ulang pointer "head" dan "tail" jika diperlukan. Yang nantinya akan menampilkan pesan yang sesuai akan ditampilkan untuk memberi tahu pengguna bahwa elemen telah dihapus.
  • #14 fungsi "clear()" akan menghapus semua elemen dalam Circular Linked List dan mengaturnya menjadi kosong. perhatikan pada penanganan memori dan penghapusan node dengan benar untuk mencegah kebocoran memori atau kesalahan lainnya.
  • #15 Berikut sedikit kata kunci yang bisa kita ambil dari penjelasan-penjalasan sebelumnya //baca slide
  • #16 Berikut adalah referensi dalam pembuatan presentasi ini
  • #17 Sekian dari kelompok kami, jika ada salah mohon dimaafkan. Karena sejatinya manusia tidak luput dari kesalahan.