際際滷

際際滷Share a Scribd company logo
STRUKTUR DATA (7) single linked list circular Oleh   Antonius Rachmat C, S.Kom
Single Linked List Circular SLLC adalah Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri.  Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya. Pengertian: Single : artinya field pointer-nya hanya satu buah saja dan satu arah. Linked List : artinya node-node tersebut saling terhubung satu sama lain. Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar
Ilustrasi SLLC Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. Pada akhir linked list, node terakhir akan menunjuk ke node terdepan sehingga linked list tersebut berputar.
Deklarasi dan node baru SLLC Deklarasi node   Dibuat dari struct berikut ini: typedef struct TNode{ int data; TNode *next; }; Pembentukan node baru Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi memorinya. TNode *baru; baru = new TNode; baru->data = databaru; baru->next = baru;
SLLC dengan HEAD Dibutuhkan satu buah variabel pointer: head Head akan selalu menunjuk pada node pertama
SLLC dengan HEAD Deklarasi Pointer Penunjuk Kepala Single  Linked List Manipulasi linked list tidak bisa dilakukan langsung ke node yang dituju, melainkan harus melalui node pertama dalam linked list.  Deklarasinya sebagai berikut: TNode *head; Fungsi Inisialisasi Single LinkedList Circular void init(){ head = NULL; }
SLLC dengan HEAD Function untuk mengetahui kosong tidaknya SLLC int isEmpty(){ if(head == NULL) return 1; else return 0; } Penambahan data di depan Penambahan node baru akan dikaitan di node  paling depan,  namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan pada head nya. Pada prinsipnya adalah mengkaitkan data baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan.  Untuk menghubungkan node terakhir dengan node terdepan dibutuhkan pointer bantu.
SLLC menggunakan Head void insertDepan(int databaru){ TNode *baru,*bantu; baru = new TNode; baru->data = databaru; baru->next = baru; if(isEmpty()==1){   head=baru;   head->next=head; } else { bantu = head; while(bantu->next!=head){ bantu=bantu->next; } baru->next = head; head = baru; bantu->next = head; } printf("Data masuk\n); }
SLLC dengan HEAD
SLLC dengan HEAD Penambahan data di belakang Penambahan data dilakukan  di belakang , namun pada saat pertama kali data langsung ditunjuk pada head-nya. Penambahan di belakang lebih sulit karena kita membutuhkan pointer bantu untuk mengetahui data terbelakang, kemudian dikaitkan dengan data baru.  Untuk mengetahui data terbelakang perlu digunakan perulangan.
SLLC dengan Head void insertBelakang (int databaru){ TNode *baru,*bantu; baru = new TNode; baru->data = databaru; baru->next = baru; if(isEmpty()==1){   head=baru;   head->next=head; } else { bantu = head; while(bantu->next != head){ bantu=bantu->next; } bantu->next = baru; baru->next = head; } printf("Data masuk\n); }
SLLC dengan HEAD
SLLC dengan HEAD Function untuk menampilkan isi single linked list void tampil(){ TNode *b; b = head; if(isEmpty()==0){ do{ printf(%d ,b->data); b=b->next; }while(b!=head); printf(\n); } else printf("Masih kosong\n); }
SLLC dgn HEAD void hapusDepan (){ TNode *hapus,*bantu; if (isEmpty()==0){ int d; hapus = head; d = head->data; if(head->next != head){ bantu = head; while(bantu->next!=head){ bantu=bantu->next; } head = head->next; delete hapus; bantu->next = head; }else{ head=NULL; } printf(%d terhapus\n,d); } else printf("Masih kosong\n); }
SLLC dengan HEAD void hapusBelakang(){ TNode *hapus,*bantu; if (isEmpty()==0){ int d; hapus = head; if(head->next == head){ head = NULL; }else{ bantu = head; while(bantu->next->next != head){ bantu = bantu->next; } hapus = bantu->next;   d = bantu->data; bantu->next = head; delete hapus; } printf(%d terhapus\n,d); } else printf("Masih kosong\n); }
SLLC dengan HEAD
SLLC dengan HEAD Function untuk menghapus semua elemen Linked List void clear(){ TNode *bantu,*hapus; bantu = head; while(bantu->next!=head){ hapus = bantu; bantu = bantu->next; delete hapus; } head = NULL; }
SLLC dengan 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.
SLLC dengan HEAD dan TAIL Inisialisasi SLLC TNode *head, *tail; Fungsi Inisialisasi SLLC void init(){ head = NULL; tail = NULL; } Function untuk mengetahui kosong tidaknya SLLC int isEmpty(){ if(tail == NULL) return 1; else return 0; }
SLLC dengan HEAD dan TAIL 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; } printf("Data masuk\n); }
SLLC dengan HEAD dan TAIL
SLLC dengan HEAD & 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<<&quot;Data masuk\n&quot;; }
SLLC dengan HEAD & TAIL
SLLC dengan HEAD & TAIL Function untuk menampilkan isi linked list: void tampil(){ TNode *b; b = head; if(isEmpty()==0){ do{ printf(%d,b->data); b=b->next; }while(b!=tail->next); printf(\n); } else printf(&quot;Masih kosong\n); }
SLLC dengan HEAD & TAIL Function untuk 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; } printf(%d terhapus\n,d); } else printf(&quot;Masih kosong\n); }
SLLC dengan HEAD & TAIL
SLLC dengan HEAD & TAIL Function di atas 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 head ke node berikutnya sehingga data setelah head menjadi head baru,  kemudian menghapus variabel hapus dengan menggunakan perintah delete. Jika tail masih NULL maka berarti data masih kosong!
SLLC dengan HEAD & TAIL Function untuk 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; } printf(%d terhapus\n,d); } else printf(&quot;Masih kosong\n); }
SLLC dengan HEAD & TAIL
SLLC dengan HEAD & TAIL Function di atas 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. Jika tail masih NULL maka berarti data masih kosong!
SLLC dengan HEAD & TAIL Function untuk menghapus semua elemen LinkedList 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; } }
SLLC dengan HEAD & TAIL Menggunakan pointer bantu yang digunakan untuk bergerak sepanjang list, dan menggunakan pointer hapus yang digunakan untuk menunjuk node-node yang akan dihapus. Pada saat pointer hapus menunjuk pada node yang akan dihapus, pointer bantu akan bergerak ke node selanjutnya, dan kemudian pointer hapus akan didelete.
SOAL-SOAL 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. NEXT: Double Linked List Non Circular

More Related Content

What's hot (20)

Modul 2
Modul 2Modul 2
Modul 2
Vincentius Kristanto
Modul 3 strukdat
Modul 3 strukdatModul 3 strukdat
Modul 3 strukdat
Vincentius Kristanto
Sd bab 8a (senarai)
Sd bab 8a (senarai)Sd bab 8a (senarai)
Sd bab 8a (senarai)
Nm Aditya Danger
Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3
azmi007
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
Amalia Puspita Sari
Circular linked list
Circular linked listCircular linked list
Circular linked list
Laxer Pratama
7. Queue (Struktur Data)
7. Queue (Struktur Data)7. Queue (Struktur Data)
7. Queue (Struktur Data)
Kelinci Coklat
Pertemuan 1 revisijan2013-mhs
Pertemuan 1 revisijan2013-mhsPertemuan 1 revisijan2013-mhs
Pertemuan 1 revisijan2013-mhs
Bina Sarana Informatika
Double linked list
Double linked listDouble linked list
Double linked list
Materi Kuliah Online
Algoritma dan Struktur Data (Python) - Struktur Data
Algoritma dan Struktur Data (Python) - Struktur DataAlgoritma dan Struktur Data (Python) - Struktur Data
Algoritma dan Struktur Data (Python) - Struktur Data
AndiNurkholis1
9.double linked list circular
9.double linked list circular9.double linked list circular
9.double linked list circular
Hitesh Wagle
Resume praktikum 7__queue
Resume praktikum 7__queueResume praktikum 7__queue
Resume praktikum 7__queue
Deprilana Ego Prakasa
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
Kelinci Coklat
5 6 single-linked_list
5 6 single-linked_list5 6 single-linked_list
5 6 single-linked_list
Wandi Parlente
Linked List
Linked ListLinked List
Linked List
Sherly Uda
Algoritma dan Struktur Data - List
Algoritma dan Struktur Data - ListAlgoritma dan Struktur Data - List
Algoritma dan Struktur Data - List
KuliahKita
Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3
azmi007
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
Amalia Puspita Sari
Circular linked list
Circular linked listCircular linked list
Circular linked list
Laxer Pratama
7. Queue (Struktur Data)
7. Queue (Struktur Data)7. Queue (Struktur Data)
7. Queue (Struktur Data)
Kelinci Coklat
Algoritma dan Struktur Data (Python) - Struktur Data
Algoritma dan Struktur Data (Python) - Struktur DataAlgoritma dan Struktur Data (Python) - Struktur Data
Algoritma dan Struktur Data (Python) - Struktur Data
AndiNurkholis1
9.double linked list circular
9.double linked list circular9.double linked list circular
9.double linked list circular
Hitesh Wagle
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
Kelinci Coklat
5 6 single-linked_list
5 6 single-linked_list5 6 single-linked_list
5 6 single-linked_list
Wandi Parlente
Linked List
Linked ListLinked List
Linked List
Sherly Uda
Algoritma dan Struktur Data - List
Algoritma dan Struktur Data - ListAlgoritma dan Struktur Data - List
Algoritma dan Struktur Data - List
KuliahKita

Similar to Tistrukdat7 (19)

SINGLE_LINKED_LIST.pptx
SINGLE_LINKED_LIST.pptxSINGLE_LINKED_LIST.pptx
SINGLE_LINKED_LIST.pptx
legiafatah
Bab 7 double_linked_list
Bab 7 double_linked_listBab 7 double_linked_list
Bab 7 double_linked_list
arii_manroe
Tugas kelompok mi d3_sore
Tugas kelompok mi d3_soreTugas kelompok mi d3_sore
Tugas kelompok mi d3_sore
tio_arkarna
Pertemuan 3.pptx
Pertemuan 3.pptxPertemuan 3.pptx
Pertemuan 3.pptx
jonamanalu
DOUBLE LINKED LIST..docx
DOUBLE LINKED LIST..docxDOUBLE LINKED LIST..docx
DOUBLE LINKED LIST..docx
Subandi Wahyudi
Single Linked List - Insert .pptx
Single Linked List - Insert .pptxSingle Linked List - Insert .pptx
Single Linked List - Insert .pptx
Umi Sa'adah
Resume praktikum 5__linked_list
Resume praktikum 5__linked_listResume praktikum 5__linked_list
Resume praktikum 5__linked_list
Deprilana Ego Prakasa
Materi linked list dan bubble sort
Materi linked list dan bubble sortMateri linked list dan bubble sort
Materi linked list dan bubble sort
Yunan Helmi Nasution
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data Structures
Noval C. Kesuma
Senarai berantai
Senarai berantaiSenarai berantai
Senarai berantai
Dina Putri
Pemahaman dasar tentang Struktur Data Linked List dan Algoritmanya
Pemahaman dasar tentang Struktur Data Linked List dan AlgoritmanyaPemahaman dasar tentang Struktur Data Linked List dan Algoritmanya
Pemahaman dasar tentang Struktur Data Linked List dan Algoritmanya
MuhammadRaihanXIMIPA
Persentasi linked list
Persentasi linked listPersentasi linked list
Persentasi linked list
Irsyad Casanova
Persentasi linked list
Persentasi linked listPersentasi linked list
Persentasi linked list
Irsyad Casanova
IMPLEMENTASI STACK MENGGUNAKAN LINKED LIST (1) (1).pptx
IMPLEMENTASI STACK MENGGUNAKAN LINKED LIST (1) (1).pptxIMPLEMENTASI STACK MENGGUNAKAN LINKED LIST (1) (1).pptx
IMPLEMENTASI STACK MENGGUNAKAN LINKED LIST (1) (1).pptx
41522010020
MAKALAH LINKED LIST DALAM BAHASA C.docx
MAKALAH LINKED LIST DALAM BAHASA C.docxMAKALAH LINKED LIST DALAM BAHASA C.docx
MAKALAH LINKED LIST DALAM BAHASA C.docx
Dikicandra6
Resume praktikum 6 stack
Resume praktikum 6 stackResume praktikum 6 stack
Resume praktikum 6 stack
Deprilana Ego Prakasa
3 stack2
3 stack23 stack2
3 stack2
Wandi Parlente
SINGLE_LINKED_LIST.pptx
SINGLE_LINKED_LIST.pptxSINGLE_LINKED_LIST.pptx
SINGLE_LINKED_LIST.pptx
legiafatah
Bab 7 double_linked_list
Bab 7 double_linked_listBab 7 double_linked_list
Bab 7 double_linked_list
arii_manroe
Tugas kelompok mi d3_sore
Tugas kelompok mi d3_soreTugas kelompok mi d3_sore
Tugas kelompok mi d3_sore
tio_arkarna
Pertemuan 3.pptx
Pertemuan 3.pptxPertemuan 3.pptx
Pertemuan 3.pptx
jonamanalu
DOUBLE LINKED LIST..docx
DOUBLE LINKED LIST..docxDOUBLE LINKED LIST..docx
DOUBLE LINKED LIST..docx
Subandi Wahyudi
Single Linked List - Insert .pptx
Single Linked List - Insert .pptxSingle Linked List - Insert .pptx
Single Linked List - Insert .pptx
Umi Sa'adah
Materi linked list dan bubble sort
Materi linked list dan bubble sortMateri linked list dan bubble sort
Materi linked list dan bubble sort
Yunan Helmi Nasution
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data Structures
Noval C. Kesuma
Senarai berantai
Senarai berantaiSenarai berantai
Senarai berantai
Dina Putri
Pemahaman dasar tentang Struktur Data Linked List dan Algoritmanya
Pemahaman dasar tentang Struktur Data Linked List dan AlgoritmanyaPemahaman dasar tentang Struktur Data Linked List dan Algoritmanya
Pemahaman dasar tentang Struktur Data Linked List dan Algoritmanya
MuhammadRaihanXIMIPA
Persentasi linked list
Persentasi linked listPersentasi linked list
Persentasi linked list
Irsyad Casanova
Persentasi linked list
Persentasi linked listPersentasi linked list
Persentasi linked list
Irsyad Casanova
IMPLEMENTASI STACK MENGGUNAKAN LINKED LIST (1) (1).pptx
IMPLEMENTASI STACK MENGGUNAKAN LINKED LIST (1) (1).pptxIMPLEMENTASI STACK MENGGUNAKAN LINKED LIST (1) (1).pptx
IMPLEMENTASI STACK MENGGUNAKAN LINKED LIST (1) (1).pptx
41522010020
MAKALAH LINKED LIST DALAM BAHASA C.docx
MAKALAH LINKED LIST DALAM BAHASA C.docxMAKALAH LINKED LIST DALAM BAHASA C.docx
MAKALAH LINKED LIST DALAM BAHASA C.docx
Dikicandra6

More from Antonius Rachmat C (6)

Tistrukdat9
Tistrukdat9Tistrukdat9
Tistrukdat9
Antonius Rachmat C

Tistrukdat7

  • 1. STRUKTUR DATA (7) single linked list circular Oleh Antonius Rachmat C, S.Kom
  • 2. Single Linked List Circular SLLC adalah Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya. Pengertian: Single : artinya field pointer-nya hanya satu buah saja dan satu arah. Linked List : artinya node-node tersebut saling terhubung satu sama lain. Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar
  • 3. Ilustrasi SLLC Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. Pada akhir linked list, node terakhir akan menunjuk ke node terdepan sehingga linked list tersebut berputar.
  • 4. Deklarasi dan node baru SLLC Deklarasi node Dibuat dari struct berikut ini: typedef struct TNode{ int data; TNode *next; }; Pembentukan node baru Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi memorinya. TNode *baru; baru = new TNode; baru->data = databaru; baru->next = baru;
  • 5. SLLC dengan HEAD Dibutuhkan satu buah variabel pointer: head Head akan selalu menunjuk pada node pertama
  • 6. SLLC dengan HEAD Deklarasi Pointer Penunjuk Kepala Single Linked List Manipulasi linked list tidak bisa dilakukan langsung ke node yang dituju, melainkan harus melalui node pertama dalam linked list. Deklarasinya sebagai berikut: TNode *head; Fungsi Inisialisasi Single LinkedList Circular void init(){ head = NULL; }
  • 7. SLLC dengan HEAD Function untuk mengetahui kosong tidaknya SLLC int isEmpty(){ if(head == NULL) return 1; else return 0; } Penambahan data di depan Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan pada head nya. Pada prinsipnya adalah mengkaitkan data baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan. Untuk menghubungkan node terakhir dengan node terdepan dibutuhkan pointer bantu.
  • 8. SLLC menggunakan Head void insertDepan(int databaru){ TNode *baru,*bantu; baru = new TNode; baru->data = databaru; baru->next = baru; if(isEmpty()==1){ head=baru; head->next=head; } else { bantu = head; while(bantu->next!=head){ bantu=bantu->next; } baru->next = head; head = baru; bantu->next = head; } printf(&quot;Data masuk\n); }
  • 10. SLLC dengan HEAD Penambahan data di belakang Penambahan data dilakukan di belakang , namun pada saat pertama kali data langsung ditunjuk pada head-nya. Penambahan di belakang lebih sulit karena kita membutuhkan pointer bantu untuk mengetahui data terbelakang, kemudian dikaitkan dengan data baru. Untuk mengetahui data terbelakang perlu digunakan perulangan.
  • 11. SLLC dengan Head void insertBelakang (int databaru){ TNode *baru,*bantu; baru = new TNode; baru->data = databaru; baru->next = baru; if(isEmpty()==1){ head=baru; head->next=head; } else { bantu = head; while(bantu->next != head){ bantu=bantu->next; } bantu->next = baru; baru->next = head; } printf(&quot;Data masuk\n); }
  • 13. SLLC dengan HEAD Function untuk menampilkan isi single linked list void tampil(){ TNode *b; b = head; if(isEmpty()==0){ do{ printf(%d ,b->data); b=b->next; }while(b!=head); printf(\n); } else printf(&quot;Masih kosong\n); }
  • 14. SLLC dgn HEAD void hapusDepan (){ TNode *hapus,*bantu; if (isEmpty()==0){ int d; hapus = head; d = head->data; if(head->next != head){ bantu = head; while(bantu->next!=head){ bantu=bantu->next; } head = head->next; delete hapus; bantu->next = head; }else{ head=NULL; } printf(%d terhapus\n,d); } else printf(&quot;Masih kosong\n); }
  • 15. SLLC dengan HEAD void hapusBelakang(){ TNode *hapus,*bantu; if (isEmpty()==0){ int d; hapus = head; if(head->next == head){ head = NULL; }else{ bantu = head; while(bantu->next->next != head){ bantu = bantu->next; } hapus = bantu->next; d = bantu->data; bantu->next = head; delete hapus; } printf(%d terhapus\n,d); } else printf(&quot;Masih kosong\n); }
  • 17. SLLC dengan HEAD Function untuk menghapus semua elemen Linked List void clear(){ TNode *bantu,*hapus; bantu = head; while(bantu->next!=head){ hapus = bantu; bantu = bantu->next; delete hapus; } head = NULL; }
  • 18. SLLC dengan 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.
  • 19. SLLC dengan HEAD dan TAIL Inisialisasi SLLC TNode *head, *tail; Fungsi Inisialisasi SLLC void init(){ head = NULL; tail = NULL; } Function untuk mengetahui kosong tidaknya SLLC int isEmpty(){ if(tail == NULL) return 1; else return 0; }
  • 20. SLLC dengan HEAD dan TAIL 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; } printf(&quot;Data masuk\n); }
  • 21. SLLC dengan HEAD dan TAIL
  • 22. SLLC dengan HEAD & 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<<&quot;Data masuk\n&quot;; }
  • 24. SLLC dengan HEAD & TAIL Function untuk menampilkan isi linked list: void tampil(){ TNode *b; b = head; if(isEmpty()==0){ do{ printf(%d,b->data); b=b->next; }while(b!=tail->next); printf(\n); } else printf(&quot;Masih kosong\n); }
  • 25. SLLC dengan HEAD & TAIL Function untuk 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; } printf(%d terhapus\n,d); } else printf(&quot;Masih kosong\n); }
  • 27. SLLC dengan HEAD & TAIL Function di atas 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 head ke node berikutnya sehingga data setelah head menjadi head baru, kemudian menghapus variabel hapus dengan menggunakan perintah delete. Jika tail masih NULL maka berarti data masih kosong!
  • 28. SLLC dengan HEAD & TAIL Function untuk 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; } printf(%d terhapus\n,d); } else printf(&quot;Masih kosong\n); }
  • 30. SLLC dengan HEAD & TAIL Function di atas 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. Jika tail masih NULL maka berarti data masih kosong!
  • 31. SLLC dengan HEAD & TAIL Function untuk menghapus semua elemen LinkedList 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; } }
  • 32. SLLC dengan HEAD & TAIL Menggunakan pointer bantu yang digunakan untuk bergerak sepanjang list, dan menggunakan pointer hapus yang digunakan untuk menunjuk node-node yang akan dihapus. Pada saat pointer hapus menunjuk pada node yang akan dihapus, pointer bantu akan bergerak ke node selanjutnya, dan kemudian pointer hapus akan didelete.
  • 33. SOAL-SOAL 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. NEXT: Double Linked List Non Circular