DISUSUN OLEH :
KOM B
TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
Linked List
Linked List atau dikenal juga dengan sebutan senarai berantai adalah struktur data yang terdiri dari
urutan record data dimana setiap record memiliki field yang menyimpan alamat/referensi dari record
selanjutnya (dalam urutan). Elemen data yang dihubungkan dengan link pada Linked List disebut Node.
Biasanya didalam suatu linked list, terdapat istilah head dan tail.
Head adalah elemen yang berada pada posisi pertama dalam suatu linked list
Tail adalah elemen yang berada pada posisi terakhir dalam suatu linked list
contoh codingannya :
struct Mahasiwa{
char nama[25];
int usia;
struct Mahasiswa *next,*prev;
}*head,*tail;
Mendeklarasikan Node
Linked list terdiri dari node, kita perlu mendeklarasikan sebuah struktur yang mendefenisikan
sebuah node tunggal. Struktur kita harus memiliki setidaknya satu variabel untuk bagian data dan pointer
untuk node berikutnya. Dalam C++ suatu node dideklarasi dengan cara:
struc Node {
int key ;
Node* next ;
};
atau
class Node {
int key ;
Node* next ;
};
NULL Pointer
NULL pointer digunakan untuk menunjukkan akhir dari list. Akan selalu di uji (tested) sebelum
menggunakan pinter.
Node* p ;
while( p != NULL ) ......
Node* p ;
while( !p ) ......
Menghapus Node dari Lists
Jika sudah terbiasa dengan membuat linkedlist. Sekarang, saatnya melakukan manipulasi pada
linked list. Linked lists memberi kita _tur yang bagus untuk menghapus sebuah node. Proses penghapusan
juga mudah diterapkan. Struktur dasarnya adalah mendeklarasikan pointer sementara yang menunjuk node
yang akan dihapus. Lalu sedikit bekerja pada link dari node. Ada juga tiga kasus di node simpul dapat
dihapus :
_ Menghapus diakhir
_ Menghapus diawal
_ Menghapus pada posisi tertentu
deleteLast()
1 Node _ curr =new Node
2 Node _ prev =new Node
3 curr =head
4 while (curr- > next 6=NULL)
5 prev =curr
6 curr =curr- > next
7 tail =prev
8 prev- > next =NULL
9 delete curr
Menghapus node diawal
Dalam kasus ini, node pertama dari linked list akan dihapus. Ingat bahwa node pertama disebut
kepala. Jadi, kita akan menghapus node kepala. Proses penghapusan meliputi :
_ Declare a temp pointer and pass the address of the first node, i.e. head to this pointer.
_ Declare the second node of the list as head as it will be the first node of linked list
after deletion.
_ Delete the temp node.
Algoritma untk proses ini adalah sebagai berikut:
deleteFirst()
1 Node_temp =new Node
2 temp =head
3 head =head- > next
4 delete temp
#include <iostream>
using namespace std ;
// name of file:link_list.cpp
struct Node {
int key;
Node *next;
};
class Link_list {
private:
Node *head, *tail;
public:
Link_list() {
head=NULL;
tail=NULL;
}
void createNode(int value) {
Node *temp=new Node;
temp->key=value;
temp->next=NULL;
if(head==NULL) {
head=temp;
tail=temp;
temp=NULL;
}
else {
tail->next=temp;
tail=temp;
}
} // end of createnode
void insertdiAwal(int value){
Node *temp=new Node;
temp->key=value;
temp->next=head;
head=temp;
} // end of insertdiAwal
void insertPosisi(int pos, int value){
Node *prev=new Node;
Node *curr=new Node;
Node *temp=new Node;
curr=head;
int i = 1 ;
while ( i <= pos ) {
prev=curr;
curr=curr->next;
i = i + 1 ;
}
temp->key=value;
prev->next=temp;
temp->next=curr;
} // end of insertPosision
void deleteFirst() {
Node *temp=new Node;
temp=head;
head=head->next;
delete temp;
} // end of deleteFirst
void deletePosisi(int pos) {
Node *curr = new Node;
Node *prev = new Node;
curr = head;
int i = 1 ;
while( i < pos ) {
prev = curr ;
curr = curr->next;
i = i + 1 ;
}
prev->next=curr->next;
} // end of deletePosisi
void deleteLast() {
Node *curr, *prev ;
curr=head;
while(curr->next!=NULL) {
prev=curr ;
curr=curr->next;
}
tail=prev;
prev->next=NULL;
delete curr;
} //end deleteLast
void display() {
Node *temp= head;
//temp=head;
while(temp!=NULL) {
cout<<temp->key<<"\t";
temp=temp->next;
}
cout << endl;
} // end of display
};
int main() {
Link_list p ;
int i, v;
Keterangan :
Pada contoh program diatas, menerapkan metode Link List yang terdapat di dalamnya fungsi
Create Node, Insert Node dan Delete Node. Pada fungsi Create Node, dimana kita definisikan head (bagian
awal node) sebagai NULL, NULL diartikan sebagai list yang masih kosong begitu juga dengan tail (bagian
akhir node).
Mengapa nilai node dapat bertambah? Sesuai pada source code diatas, bahwasanya kita telah
deklarasikan “key” sebagai integer. Kita inisialisasi atau beri nilai pada node dan set pointer tersebut . Dan
apabila kita ingin menambah 1(satu) node kita harus membuat source code dimana Node *pointer = new
Node, seperti pada kodingan dibawah ini :
int main() {
list p ;
cout << "Elemen-elemen pada link list: " << endl;
p.createNode(10);
p.createNode(20);
p.createNode(30);
p.createNode(40);
p.display();
.........................................