Skip to content

zulfikar4568/structure-data-algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Structure Data Algorithm

Hash Table

  • Ilustration:

Wiki

Linked List

  • Ilustration:
    • Jika di array misal, keranjang = [jeruk, mangga, apel]

    • Jika di linked list, Linked List Doubly, mempunyai next and prev data

      keranjang = jeruk <-|
         null <--- 7923 --+-> mangga <-|
                          |--- 7230 ---+--> apel
                                       |--- 7823 --> null
      
      (Jeruk = head)
      (Apel = tail)

      Linked list Singly, hanya mempunyai next data

      keranjang = jeruk
                  7923 ---> mangga
                            7230 ---> apel
                                      7823 --> null
      
      (Jeruk = head)
      (Apel = tail)

Visualization

Stack

  • Palindrome

    • Input:
      racecar
      
    • Output:
      true
      
    • Explanation
      racecar akan di kategorikan sebagai palindrome karena jika di balik akan tetap racecar
  • Stack (First In Last Out)

    • Ilustration:
      In >===\   /===> Out
              | |
              | |
             | a |
              ---
             | b |
              ---
             | c |
              ---
             | d |
              ---
    • Output:
      peek: c
      pop: c
      peek: b
      size: 2
      

Set

Sebernarnya fitur Set sudah ada secara default, namun kita akan belajar dari dasar terlebih dahulu. Set adalah data struktur yang mengizinkan kita tambah/ hapus dll data ke dalam container.

  • Input:
    setA = ['a', 'b', 'c', 'd']
    setB = ['a', 'b', 'c', 'd', 'e']
  • Output:
    difference: e
    intersection: a,b,c,d
    subset: false //Karena e tidak dalam bagian dari setA
    setA.has('a'): true
    //dll. Bisa di cek di program saja

Queue (First In First Out)

  • Ilustrasi:
              ------------------
    a <------- | b | c | d | e | <-------- f
              ------------------
    
  • Penjelasan:
    • Enqueue digunakan untuk insert data di akhir element
    • Dequeue digunakan untuk mengeluarkan data pada element terakhir
    • Size untuk mengetahui panjang queue
    • isEmpty digunakan untuk mengecek apakah data kosong

Binary Search Tree

  • Ilustrasi:
                  8  <------------------- (Root and Parent)
                /   \
              3       10 <--------------- Left Child (3) dan Right Child (10)
            /   \        \
          1      6        14 <----------- Siblings (1,6)
               /   \    /
              4     7  13 <-------------- Leaf (4,7,13)
          Left Sub Tree (3, 1, 6) dan Right Sub Tree (10, 14)
    
  • Penjelasan:
    • 1 Buah node memiliki 2 child (left node dan right node) dan memiliki 1 buah data
    • Add untuk menambahkan data ke node, dan data akan dimasukan secara otomatis, jika nilai nya lebih kecil dari nilai node itu sendiri maka akan di masukan ke kiri. jika lebih besar akan dimasukan ke node kanan.
    • Find Untuk mencari node yang menyimpan data yang akan kita cari
    • FindMin digunakan untuk mencari nilai terkecil
    • FindMax digunakan untuk mencari nilai terbesar
    • remove digunakan untuk menghapus yang menyimpan data dengan parameter yang akan kita hapus.
    • FindMinHeight dan FindMaxHeight digunakan untuk mengetahui tinggi dari node.

Graph

  • Tipe Graph:
    • Directed atau Undirected

      // Directed               // Undirected
      0 ----> 1 ---> 4          0 ----- 1 ---- 4
      |       ^                 |       |
      |       |                 |       |
      v       |                 |       |
      2 ----> 3                 2 ------3
    • Weighted atau Unweighted

       // Weighted                // Unweighted
       0 --23-- 1 --43- 4         0 ----- 1 ---- 4
       |        |                 |       |
      100       33                |       |
       |        |                 |       |
       2 --10-- 3                 2 ------3
    • Cyclic atau Acyclic

                1                      1
               / |                      |
              /  |                      |
             /   |                      |
            2 -- 3                 2 -- 3

Berikut contoh graph, Undirected, Unweighted, Cyclic

           2 ----- 0
          / \
         /   \
        1 --- 3

Maka data tersebut akan memperepresentasikan graph:

//Menggambarkan koneksi
const edgetList = [[0,2], [2,3], [2,1], [1,3]]
const adjacentList = 
  [
    [2], // node 0 konek ke node 2
    [2,3], // node 1 konek ke node 2, 3
    [0,1,3], // node 3 konek ke node 0, 1, 3
    [1,2] // node 3 konek ke node 1, 2
  ]
const adjacentMatrix = 
  [    0,1,2,3
   0: [0,0,1,0], // node 0 konek ke node 2
   1: [0,0,1,1], // node 1 konek ke node 2, 3
   2: [1,1,0,1], // node 3 konek ke node 0, 1, 3
   3: [0,1,1,0] // node 3 konek ke node 1, 2
  ]

MindMap

About

Dasar Data Struktur Algoritma

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published