Thursday, February 27, 2020

Data Structure ( Dynamic Memory Allocation Vs Static Memory Allocation )

Linked List(Dynamic) Vs Array List(Static) 
            Dalam dunia Programming , pastinya semua progammer dalam membuat suatu program memerlukan memory. Yang dimana Memory tersebut berguna untuk menyimpan suatu data yang diperintahkan oleh pembuat dan kemudian akan kembali digunakan untuk melakukan segala sesuatu yang telah diperintahkan oleh pembuat program untuk dilakukan. Penggunaan memori memiliki dua jenis yaitu Dynamic Memory Allocation dan Static Memory Allocation. Untuk lebih jelasnya perlunya penjelasan yang mendalam mengenai kedua jenis penggunaan memory tersebut.

            Berikut merupakan perbedaan antara Dynamic dan Static memory Allocation :

  • Sama - sama merupakan kumpulan elemen yang mempunyai Tipe Data yang sama    dengan perbedaan dimana Dynamic Memory Allocation mempunyai elemen yang saling terhubung sama lain seperti orang yang sedang bergandengan tangan satu sama lain.
  •  Perbedaan kedua yaitu untuk Array mendukung program untuk mengakses suatu data secara acak sedangkan untuk Dynamic Memory Allocation mendukung program untuk mengakses data secara berurutan sehingga kita tidak bisa langsung mengakses dimana letak data yang ingin kita gunakan.
  •  Untuk Array List suatu data yang disimpan memiliki tempat memory yang sama sedangkan untuk Linked List bisa untuk diletakkan di tempat memory manapun. 
  • Untuk pengisian Data dan penghapusan Data Array List menggunakan waktu yang relatif lebih lama karena memory yang ada telah ditetapkan sedangkan untuk Linked LIst pemrosesannya lebih cepat dikarenakan jumlah data yang digunakan lamanya berjalan tergantung dari banyak data yang telah diinput ke suatu memory.
  • Memori Array List dialokasikan setelah suatu Array dideklarisasi pada saat compile time Sedangkan untuk Linked List mengalokasikan suatu memori pada saat program itu berjalan atau Runtime.
  • Pengaksesan Array List bisa dilakukan menggunakan index suatu data sedangkan untuk Linked List menggunakan node yang menunjuk ke data berikut , data sebelum , ataupun keduanya.
Dalam membuat suatu program yang membutuhkan penyimpanan data perlunya kita ketahui terlebih dahulu jenis data apa yang ingin kita simpan dan jenis penyimpanan data mana yang lebih efektif dalam program mengolah suatu data yang ada. Seperti contoh jikalau kita akan membuat program yang dapat menyimpan data yang banyak dan akan terus bertambah atau dinamik maka sehendaknya kita menggunakan penyimpanan Dynamic Memory Allocation karena jikalau ada data yang masuk maka program tersebut akan langsung menyediakan tempat untuk data itu untuk disimpan sedangkan kalau menggunakan Array List kita perlu untuk mengubah lagi jumlah banyak data atau limit data yang akan disimpan dan jelas hal itu tidaklah efektif. 

Linked List 

Single Linked List 
Linked List merupakan koleksi linier dari tipe data sama yang disebut nodes, dimana setiap nodes akan menunjuk pada nodes lain menggunakan pointer. Sebuah Linked List yang mempunyai 1 penghubung ke node lain disebut Single Linked List.

linkedlist

Beberapa operasi yang ada biasanya ada dalam sebuah Linked List adalah :
  1. Push : Merupakan sebuah operasi insert di mana dalam Linked List terdapat 2 kemungkinan Insert melalui depan ataupun belakang juga ada option lain yaitu dari tengah.
  2. Pop : Merupakan sebuah operasi delete dimana dalam Linked List untuk menghapus data yang dapat dilakukan dari depan belakang dan juga tengah.
Double Linked List

Sebenarnya Double dan single Linked List tidaklah begitu berbeda karena operasi yang ada pun bisa dikatakan sama. Perbedaannya hanya pada Double Linked List mempunyai pointer tambahan atau penunjuk tambahan yang berfungsi untuk menunjuk data sebelumnya. Melalui pointer tambahan ini menjadi solusi untuk Single Linked List yang dimana hanya dapat berjalan secara satu arah sedangkan untuk Double Linked List dapat berjalan dua arah yaitu bisa maju maupun mundur.

dll
Kelebihan Double Linked List :
  • Bisa digunakan secara maju ataupun mundur
  • Dalam operasi delete lebih efisien

Kelemahan Double Linked List :
  • Setiap Node membutuhkan tempat extra dari pointer sebelumnya
  • Semua operasi membutuhkan pointer tambahan dan lebih kompleks

In the world of Programming, certainly all programmers in making a program require memory. Which is where the memory is useful for storing a data that was ordered by the maker and then will again be used to do everything that has been ordered by the program maker to do. Memory usage has two types namely Dynamic Memory Allocation and Static Memory Allocation. For more details, the need for an in-depth explanation of the two types of memory usage.

The following are the difference between Dynamic Memory Allocation and Static Memory Allocation :


  • Both are a collection of elements that have the same Data Type with a difference where Dynamic Memory Allocation has elements that are connected to each other like people who are holding hands with each other.
  • The second difference is that Array supports programs to access data randomly, while for Dynamic Memory Allocation it supports programs to access data sequentially so that we cannot directly access where the data we want to use is located.
  • For the Array List, the stored data has the same memory space, while the Linked List can be placed in any memory space.
  • Data filling and deletion of Data Array List uses a relatively longer time because the available memory has been determined while for Linked LIst the processing is faster because the amount of data used depends on how much data has been inputted into a memory.
  • Array List memory is allocated after an Array is declarized at compile time while for Linked List allocates a memory when the program is running or runtime.
  • Accessing an Array List can be done using an index of data, while for a Linked List using a node that points to the following data, the data before, or both.

In making a program that requires data storage we need to know in advance what type of data we want to store and which type of data storage is more effective in the program to process an existing data. As an example if we will create a program that can store a lot of data and will continue to grow or dynamically, we should use Dynamic Memory Allocation storage because if there is data coming in, the program will immediately provide a place for the data to be stored whereas if you use an Array List we need to change the amount of data or limit data to be saved again and obviously it is not effective.

Linked List
Single Linked List

A Linked List is a linear collection of the same data type called nodes, where each node will point to another node using a pointer. A Linked List that has 1 link to another node is called a Single Linked List.

linkedlist
Some of the operations that are usually present in a Linked List are:

  1. Push: This is an insert operation where in the Linked List there are 2 possible Insert through the front or back and there is another option which is from the middle.
  2. Pop: This is a delete operation where in the Linked List to delete data that can be done from the front back and also the middle.

Double Linked List

Actually Double and Single Linked List are not so different because the existing operations can be said to be the same. The only difference is that the Double Linked List has an extra pointer or additional pointer that serves to point to the previous data. Through these additional pointers it becomes a solution for the Single Linked List which can only run in one direction while for the Double Linked List can go both ways that can go forward or backward.

dll
The advantage of using Double Linked List :

  1. Can be used in forward and backward
  2. In deletion operation more efficient than the single one.

The disadvantage of using Double Linked List :

  1. For every nodes there needs extra pointer place .
  2. All the operation needs more pointer and more complex
Berikut penjelasan saya mengenai Data Structure yang terdiri dari array List dan Linked List jika ada kesalahan dalam bahasa, kata- kata , dan lainnya saya Mohon Maaf karena saya juga masih dalam proses pembelajaran mengenai Data Structure.

There is my explanation of Data Structure consisting of Array List and Linked List if I have any errors in language, words, etc. I am sorry that I am still in the process of learning about Data Structure.

THANK YOU SINCERELY
Reference :