Ganjil 2017
• Menyisip (Insertion)
• Menghapus(Deletion)
Menyisip:
Memasukkan node baru dalam linked list disebut insertion. Sebuah node baru dibuat dan
dimasukkan ke dalam linked list.
Ada tiga kasus yang dipertimbangkan saat memasukkan sebuah node:
• Menyisip diawal
• Menyisip diakhir
Menyisip diawal:
Menyisip node baru cukup sederhana. Ini hanya memerlukan algoritma 2 langkah yang
dilakukan untuk memasukkan node di awal dari singly linked list.
• Node baru harus dihubungkan ke node pertama, yang berarti kepala. Hal ini dapat
dicapai dengan meletakkan alamat kepala pada field berikutnya dari node baru.
• Node baru harus dianggap sebagai kepala. Hal ini dapat dicapai dengan menyatakan
kepala sama dengan node baru.
3-1
3-2 Lecture 3: Linked Lists
insertdiAwal(value) tambahkan sebuah node baru value kedalam list L. Node value di
sisipkan diawal list, making T (n) = Θ(1). Disini, temp adalah suatu node baru yang di
create akan sisipkan ke awal list. Implementasinya seperti ini:
insertdiAwal(value)
1 Node∗temp =new Node
2 temp- > key =value
3 temp- > next =head
4 head =temp
Menyisip diakhir:
Penyisipan sebuah node pada akhir linked list sama dengan yang kita lakukan pada fungsi
pembuatan node. Jika Anda perhatikan kemudian, kita memasukkan node yang baru dibuat
di akhir linked list. Jadi proses ini sama. lihat algoritma createNode.
Menyisip pada posisi tertentu:
Penyisipan node baru pada posisi tertentu agak sulit dipahami. Dalam kasus ini, kita tidak
mengganggu kepala dan ekor. Sebaliknya, sebuah node baru disisipkan di antara dua node
berturut-turut. Jadi, kedua node ini harus bisa diakses oleh kode kita. Kita sebut yang
satu node current dan yang lainnya node previous, dan node baru ditempatkan di antara
keduanya. Proses ini ditunjukkan pada diagram di bawah ini:
Sekarang node baru dapat disisipkan antara node previous dan current dengan hanya melakukan
dua langkah:
Kita akan mengakses node ini dengan meminta user pada posisi apa dia ingin memasukkan
node baru. Sekarang, kita akan memulai sebuah loop untuk mencapai node tertentu. Kita
menginisialisasi node current dengan head dan bergerak melintasi linked list. Pada akhirnya,
kita akan menemukan dua node berturut-turut.
Algoritma untuk penyisipan node adalah sebagai berikut:
Lecture 3: Linked Lists 3-3
insertPosisi(pos, value)
1 Node∗prev =new Node
2 Node∗curr =new Node
3 Node∗temp =new Node
4 curr =head
5 while i ≤pos
6 prev =curr
7 curr =curr - > next
8 i =i + 1
9 temp- > key =value
10 prev - > next =temp
11 temp- > next =curr
• 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.
deleteFirst()
1 Node∗temp =new Node
2 temp =head
3 head =head - > next
4 delete temp
kita menghapus node kita saat ini dan meneruskan alamat simpul setelah ke pointer se-
belumnya. Dengan cara ini, node saat ini dihapus dari linked list dan link dibuat antara
node sebelumnya dan node berikutnya.
Algoritma untuk proses ini adalah sebagai berikut:
deletePosisi(pos)
1 Node∗curr =new Node
2 Node∗prev =new Node
3 curr =head
4 while i ≤pos
5 prev =curr
6 curr =curr - > next
7 i =i + 1
8 prev - > next =curr - > next
Searching (Pencarian):
listSearch(k) mencari nilai key k dalam linear list L. Karena dimulai dari awal dari list
dan dan terus diperiksa masing-masing node sampai akhir, T (n) = Θ(n). Disini, temp
menyatakan “link” objek dalam list. Implementasi untuk linear list adalah seperti berikut:
listSearch(k)
1 temp =head
2 while x 6= nil and temp- > key 6= k
3 temp =temp- > next
4 return temp
void deleteFirst() {
Node *temp=new Node;
temp=head;
head=head->next;
delete temp;
} // end of deleteFirst
int main() {
list p ;
cout << "Create linked list dengan elemen: " << endl;
p.createNode(50);
3-6 Lecture 3: Linked Lists
p.createNode(60);
p.createNode(70);
p.createNode(80);
p.display();
cout << "Hapus node akhir: " << endl ;
p.deleteLast();
p.display();
cout << "Create node baru:95 " << endl;
p.createNode(95);
p.display();
cout << "Insert diawal: " << endl ;
p.insertdiAwal(65) ;
p.display() ;
cout << "Insert pada posisi 3: " << endl ;
p.insertPosisi(3,88);
p.display() ;
cout << "Hapus node diawal: " << endl ;
p.deleteFirst() ;
p.display() ;
cout << "Hapus pada posisi 3: " << endl ;
p.deletePosisi(3);
p.display() ;
return 0 ;
}