Anda di halaman 1dari 3

Linked List

Linked List adalah koleksi data item yang tersusun dalam sebuah barisan secara linear, dengan
penyisipan dan pemindahan dapat dilakukan dalam semua tempat di Linked List tersebut.

Linked List memiliki kelebihan dan kekurangan sebagai berikut :


Kelebihan :

- Penambahan elemen tidak terbatas


- Memungkinkan untuk dihapus

Kekurangan :

- Hanya bisa diakses secara sekuensial


- Memerlukan memori dalam jumlah yang besar, untuk menyimpan data yang besar juga.

Linked List ada 4 macam yaitu :

- Single Linear Linked List


Single linear linked list merupakan jenis linked list yang paling sederhana. Untuk seterusnya,
jika dikatakan Linked List maka bentuk inilah yang dimaksud. Linked List ini pada tiaptiap
elemen hanya memiliki 1 pointer (penunjuk) yaitu pointer terhadap elemen selanjutnya.
- Double Linear Linked List

Double linear linked list merupakan jenis linked list yang memiliki 2 buah pointer (penunjuk)
yaitu pointer terhadap elemen selanjutnya dan juga pointer terhadap elemen sebelumnya.

- Single Circular Linked List


Single circular linked list merupakan jenis linked list yang memiliki 1 buah pointer (penunjuk)
yaitu pointer terhadap elemen selanjutnya (sama seperti single linear linked list), namun
pada linked list jenis ini elemen terakhir pada list memiliki pointer menuju elemen pertama
dari list tersebut, sehingga terjadi susunan elemen yang melingkar / tidak ada elemen yang
bernilai null.
- Double Circular Linked List
Double circular linked list merupakan jenis linked list yang memiliki 2 buah pointer
(penunjuk) yaitu pointer terhadap elemen selanjutnya dan juga pointer terhadap elemen
sebelumnya (sama seperti double linear linked list), namun pada linked list jenis ini elemen
terakhir pada list memiliki pointer menuju elemen pertama yang menunjukkan elemen
selanjutnya dari list tersebut dan elemen pertama memiliki pointer menuju elemen terakhir
yang menunjukkan elemen sebelumnya dari elemen pertama adalah elemen terakhir,
sehingga terjadi susunan elemen yang melingkar dari dua arah / tidak ada elemen yang
bernilai null.

Linked List memiliki operasi yang sama yaitu :

- InsertFirst / Penambahan elemen pertama.

Single Linear Linked List Single Circular Linked List


Baru -> Next = Head->Next; Baru->Next = Head->Next;
Head -> Next = Baru; Head->Next = Baru;
Double Linear Linked List Double Circular Linked List
Baru->Next=Head->Next; Baru -> Next =Head ->Next;
Head->Next=Baru; (Head -> Next)->Back =Baru;
Head ->Next = Baru;
Baru ->Back =Head;
- InsertLast / Penambahan elemen terakhir.

Single Linear Linked List Single Circular Linked List


Baru -> Next = PNow; PNow->Next = Baru;
PAkhir -> Next = Baru; Baru->Next = Head;
Double Linear Linked List Double Circular Linked List
(Tail->Next)->Next = Baru; Baru -> Next =Head;
Tail -> Next = Baru; Baru -> Back = Head->Back ;
Baru -> Next = NULL; (Head -> Back)->Next =Baru;
Head ->Back = Baru;
- DeleteAt / Penghapusan elemen pada data yang dicari.

Single Linear Linked List Single Circular Linked List


while((!found)&&(HNow != NULL)){ if(Head->Next == NULL){
if(NHapus == HNow->NIM){ cout<<"List Kosong"<<endl;
found = true; }else if(Hapus->KdBuah == KdBuahHapus){
}else{ if(Hapus->Next == Head){
HBfr = HNow; Head->Next= NULL;
HNow = HNow->Next; }else{
}} Head->Next = Hapus->Next;
if(!found){ }}else{
cout<<"List yang dicari tidak ada"; Bantu = NULL;
}else{ while(KdBuahHapus != Hapus->KdBuah &&
if(HNow==Head->Next){ Hapus->Next != Head){
Head->Next=HNow->Next; Bantu= Hapus;
}else{ Hapus = Hapus->Next;
HBfr->Next=HNow->Next; }
}} if(KdBuahHapus == Hapus->KdBuah){
if(Hapus->Next == Head){
Bantu->Next = Head;
}else{
Bantu->Next = Hapus->Next;
}}else{
cout<<"List tidak ditemukan"<<endl;
}}
Double Linear Linked List Double Circular Linked List
if(Head-> Next == NULL){ while((PNow != Head) && (! found)){
cout<<"List Kosong"<<endl; if(PNow->Kode == KodeHapus){
}else if( Hapus->NPM == NPMHapus){ found = true;
if(Head->Next==Tail->Next){ }else{
Head -> Next = NULL; PNow = PNow->Next;
Tail->Next =NULL; }}
}else{ if(!found){
Head->Next=Hapus->Next; cout<<"Data yg dicari tidak ada"<<endl;
}}else{ }
Bantu=NULL; if(Head->Next == NULL){
while((NPMHapus != Hapus->NPM ) && cout<<"List Kosong"<<endl;
(Hapus->Next != NULL)){ }else if(Hapus->Kode == KodeHapus){
Bantu=Hapus; if(Hapus->Next == Head->Next){
Hapus=Hapus->Next; Head->Next = NULL;
} Head->Back = NULL;
if(NPMHapus==Hapus->NPM){ }else{
if(Hapus->Next==NULL){ Bantu = Hapus->Next;
Tail->Next=Bantu; Head->Next= Bantu;
Bantu->Next = 0; Bantu->Back = Head;
}else{ }}else{
Bantu->Next=Hapus->Next; Bantu = NULL;
}}else{ while ((KodeHapus != Hapus->Kode) &&
cout<<"NPM "<<NPMHapus<<" doesn’t (Hapus->Next != Head)){
match"<<endl; Bantu = Hapus;
}} Hapus = Hapus->Next;
}
if(KodeHapus == Hapus->Kode){
if(Hapus->Next == NULL){
Bantu->Next = Head;
Head->Back = Bantu;
}else{
Bantu->Next = Hapus->Next;
(Hapus->Next)->Back = Bantu;
}}else{
cout<<"Simpul yang dihapus tidak ada"<<endl;
}}

Anda mungkin juga menyukai