Linked List Implementation 1

Hallo sobat programmer, Salam Biner hahaha, hari ini kita akan membahas sedikit tentang implementasi pada Linked-List tersebut, karena penjelasannya sedikit panjang, jadi mimin coba buat dalam 2 bagian implementasi nantinya, jika sobat programmer belum mengetahui apa itu Linked-List, sobat bisa baca terlebih dahulu postingan mimin sebelumnya tentang Pendahuluan Data Structure Dan Linked-List, okay tanpa berlama-lama lagi, langsung saja yah sob.

Bab 3

Pada Linked-List terdapat berbagai jenis model penerapan didalamnya, Contoh: Single Linked list, Polynomial Representation, Circular Single Linked List, Doubly Linked List, Circular Doubly Linked List, dan Header Linked List, mimin akan coba bahas satu per satu secara sigkat yah sob.

Single Linked List

Pada implementasi Single Linked List, kita diharuskan membuat sebuah node untuk menghubungkan antara list-list yang akan kita buat nantinya, node itu sendiri artinya adalah salah satu titik sambungan, titik redistribusi, atau titik akhir komunikasi, bila diartikan dalam Linked List, node merupakan penghubung antara List-list tersebut dalam struktur data.

Kita dapat mendeklarasikan dalam berbagai bentuk penulisan, sebagai contoh:
struct tnode {
  int value;
  struct tnode *next;
};

struct tnode *head = 0;
*head merupakan pointer element pertama dalam Linked list diatas. 
Node diatas sudah selesai kita buat, jadi kita sekarang sudah dapat terhubung dengan list yang lain, yang nantinya hendak kita buat.
Jika anda ada yang bertanya mengapa kita hendak membuat sebuah node dalam linked list, mimin anjurkan untuk sobat membaca postingan mimin sebelumnya tentang Pendahuluan Data Structure Dan Linked-List, atau mimin bisa simpulkan bahwa pada Linked List terdapat sebuah fitur "malloc" (Memory Allocation) dimana itu yang membuat struktur Linked List itu begitu dinamis dan membutuhkan pointer untuk menunjuk pada slot memory yang kosong.

Seharusnya hal yang ingin kita lakukan selanjutnya adalah melakukan inserting data kedalam struktur data yang kita sudah buat, berikut contoh bentuk implementasi inserting data pada linked list:
struct tnode *node =(struct tnode*) malloc(sizeof(struct tnode));
node->value = x;
node->next  = head;

head = node;
Contoh kita sudah memiliki sebuah nilai 10, 35, 27 didalam list kita, dan kita ingin memasukan sebuah value 31 kedalam linked list yang telah kita buat, gambar diatas menjelaskan cara kerja linked list inserting yang telah kita buat.

Jika pada contoh diatas kita mengunakan node hanya untuk memasukan angka keurutan paling depan atau kita sebut head, bagaimana dengan memasukannya pada posisi akhir/last atau tengah/middle hahaa silakan dicoba-coba yh sob.

Selanjutnya setelah kita berhasil input sebuah data pada struktur linked list, sekarang kita akan mencoba untuk menghapus data yang ada, step yang harus kita lakukan adalah: mencari lokasi nilai yang hendak kita ingin hapus, selanjutnya tinggal mengabungkan kembali sisa linked listnya, kita asumsikan nilai yang kita ingin hapus adalah x, dan x harus berada dalam Linked list kita dan dia juga berupa value yang uniq (contoh: x =10; nilai 10 thanya terdapat satu saja pada list yang ada).

Ada 2 kondisi yang nantinya akan terjadi:
  • kondisi yang pertama: nilai x adalah head node
  • kondisi yang kedua : nilai x adalah bukan head node

struct tnode *curr = head;
// if x is in head node
if ( head->value == x ) {
  head = head->next;
  free(curr);
}
// if x is in tail node
else if(tail->value == x){
  while(curr->next!=tail) curr = curr->next;
  free(tail); tail = curr;
  tail->next = NULL;
}
// if x is not in head node, find the location
else {
  while ( curr->next->value != x ) curr = curr->next;
  struct tnode *del = curr->next;
  curr->next = del->next;
  free(del);
}

Diatas merupakan contoh Deleted Single Linked List, dengan cara kerjanya sebagai berikut:
Bagaimana menurut sobat tentang Single Linked list, mudah bukan, yuk kita lanjut ke Polynomial Representation.

Polynomial Representation

Umumnya pada Polynomial Representation mirip dengan Single Linked List, hanya saja istilah yang digunakan sudah bukan head atau current, melainkan coefficient dan exponent.
Contoh sedikit: 6x3 + 9x2 + 1 adalah bentuk polynomial yang memiliki dua nilai coefficient dan exponent, yang jika diubah dalam bentuk Linked list akan menjadi seperti berikut:
Bentuk Struct nya kurang lebih hanya seperti ini:
Struct polynomial{ 
        int coefficient; 
        int exponent; 
};

Jika Sobat ingin melakukan inserting sobat bisa melakukannya dengan cara yang sama dengan Single Linked List Contohnya bisa sobat liat disini.

Komentar

Postingan populer dari blog ini

Pendahuluan Data Structure Dan Linked-List