Selasa, 25 Februari 2020

1. Circular Single Linked List


Circular Linked List merupakan Suatu Linked list dimana node / data terakhir menunjuk ke data pertama. Jadi tidak ada pointer yang menunjuk NULL. 
Circular Single Linked List aalah Circular Linked List yang field pointer nya hanya satu buah saja dan satu arah dan membuat bentuk berputar / berulang .
Image result for circular doubly linked list

Sama Seperti Single Linked List pada umum nya. Circular Single Linked List mempunyai fungsi Menambahkan data , Menghapus data , dan Melihat data. Perbedaan nya hanyalah Data/Node Tail selalu menunjuk data/node Head.


2. Doubly Linked List

Double / Doubly Linked List atau biasanya di sebut two-way Linked List adalah sekumpulan node / dat yang terurut linear atau sekuensial .Tidak jauh berbeda dengan Single Linked List yang hanya mempunyai satu pointer yaitu next, Double Linnked list mempunyai dua buah pointer yaitu prev dan next.

Double Linked List terdiri dari 3 Bagian : 
- Bagian data informasi
- Pointer Next yang menunjuk ke Node berikutnya
- Pointer Prev yang menunjuk ke Node sebelumnya


Untuk menentukan Head dari Double Linked List , pointer prev dari Node pertama menunjuk NULL . Sedangkan untuk menentukan Tail,pointer next dari Node terakhir menunjuk NULL.

Untuk membuat Linked List , kita perlu membuat Struct menyimpan Data.

struct node {
  int value;
  node *next,*prev;

}*head,*tail;
Pertama-tama kita harus mengalokasikan node baru / mengalokasikan memori  dan menentukan nilainya.
Untuk mengakses Malloc , kita memerlukan library stdlib.h 

node *newNode(int value) {
  node *curr= (node*)malloc(sizeof(node));
  curr->value=value ;
  curr->next=curr->prev=NULL;
  
  return curr;
   
  }

Kemudian Membuat Fungsi Seperti Menambahkan Data / Push , Mendelete Data/ Pop , dan Melihat Data.
Contoh Menambah Kan Data/Node dari depan / Push Head :
- Jika Tidak Mempunyai Node/Data sama sekali , Langsung membuat Head , tail  , dan curr nya di 1 tempat yang sama.
- Jika Mempunyai Node/Data >= 1 , langsung menambahkan di depan.

Contoh Menghapus Data / Node dari depan / Pop Head:
-Jika Data nya cuman 1 Langsung Membuat NULL data tersebut , kemudian melepaskan data tersebut /Free(Head).
-jika mempunyai Data / Node >1 . Kita buat Variabel Temp di Head , dan Buat si Head nya geser ke data sesudah nya . Kemudian Temp -> next dan Head-> prev harus menunjuk ke NULL . Sesudah itu kita bisa melepaskan si Temp / free(temp).

Contoh Melihat Data / Node dari depan : 
- kita buat variabel Temp di Head , Selama si Temp != NULL , kita bisa meng print Data tersebut  dan menggeser temp ke data selanjutnya, 

3. Circular Doubly Linked List 


Circular Doubly Linked List hampit sama dengan Circular Single Linked List dimana node / data terakhir menunjuk ke data pertama. Jadi tidak ada pointer yang menunjuk NULL. , cuman perpedaan nya adalah setiap node mempunyai 2 pointer ( next dan prev).


4. Stack And Queue 


1. Stack 

Stack atau tumpukan dapat diartikan suatu kumpulan data yang seolah -olah terlihat seperti ada data yang diletakkan di atas data yang lain. Kaidah utama konsep stack adalah LIFO (Last In First Out) yang artinya data yang terakhir kali di masukkan atau di simpan , maka data tersebut adalah data yang pertama kali di keluarkan . Menggunakan Fungsi PushTail , popTail.

Seperti Contoh : pada Tumpukan Piring .
Piring yang paling atas biasanya di ambil terlebih dahulu. 






2. Queue

Queue atau antrian merupakan stuktur data linear dimana ujung yang 1 ditambah , dan ujung yang lain berkurang. Kaidah utama konsep Queue adalah FIFO ( First In First Out) artinya data yang pertama kali di masukkan / disimpan ,  data tersebut adalah data yang pertama kali di keluarkan .Menggunakan Fungsi PushHead , PopHead.

Seperti Contoh : Pada Antrian
Orang yang pertama kali mengantri dan sesudah di layani dia akan keluar pertama kali.




Sumber :