Langsung ke konten utama

Week 1 and 2 Data Structures

  • Pointer and Array
Pointer adalah variable yang berisi alamat memory sebagai nilainya dan berbeda dengan variable biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi alamat dari variable yang mempunyai nilai tertentu.

Setiap variable di bahasa C memiliki nama dan nilai tersendiri serta address / alamat yang menyimpan nilai tersebut. Pointer berperan sebagai variable yang menyimpan alamat memory tersebut.

Deklarasi penggunaan pointer dapat dilakukan dengan meletakkan tanda * sebelum tipe data, seperti berikut :

       
           Array adalah sekumpulan variabel yang memiliki tipe data yang sama dan dinyatakan dengan nama yang sama. Array merupakan konsep yang penting dalam pemrograman, karna array memungkinkan untuk menyimpan data maupun referensi objek dalam jumlah banyak dan terindeks. Setiap jenis data dapat memiliki lebih dari 1 dimensi array. Saat mendeklarasikan char dan tidak menggunakan pointer, harus di tuliskan arraynya.

Deklarasi penggunaan array dapat dilakukan dengan menggunakan tanda [ x ] dengan x sebagai jumlah array yang ingin dibuat, seperti : 


  • Data Structure

Structure atau struct adalah kumpulan dari beberapa variabel dengan beragam tipe data yang dibungkus dalam satu varabel. Jadi dalam struct, kita dapan mendeklarasikan berbagai tipe data didalamnya. Penggunaannya dapat dilakukan dengan :
Jadi dalam struct karyawan tersebut, ada 3 tipe data yaitu char, int, dan long.

Beberapa tipe dari data structures :
A.      Array : Sekumpulan variable yang memiliki tipe data sama.

B.      Linked List : Linked List merupakan koleksi linear dari data, yang disebut sebagai nodes, dimana setiap node akan menunjuk pada node lain melalui sebuah pointerLinked List dapat didefinisikan pula sebagai kumpulan nodes yang merepresentasikan sebuah sequence.
Representasi sebuah linked list dapat digambarkan melalui gambar di bawah ini:
Sebuah linked list yang hanya memiliki 1 penghubung ke node lain disebut sebagai single linked list.
Di dalam sebuah linked list, ada 1 pointer yang menjadi gambaran besar, yakni pointer HEAD yang menunjuk pada node pertama di dalam linked list itu sendiri.
Sebuah linked list dikatakan kosong apabila isi pointer head adalah NULL.
Beberapa operasi yang bisa dilakukan dalam linked list : 
  1. Insert = Istilah  Insert berarti menambahkan  sebuah  simpul baru ke dalam  suatu linked  list.
  2. Konstruktor = Fungsi ini membuat sebuah  linked  list yang baru dan masih kosong. 
  3. IsEmpty = Fungsi ini menentukan apakah  linked list kosong atau  tidak.
  4. Find First = Fungsi ini mencari elemen pert ama dari linked  list 
  5. Find Next = Fungsi ini mencari elemen  sesudah elemen yang ditunjuk now. 
  6. Retrieve = Fungsi  ini  mengambil  elemen  yang  ditunjuk  oleh  now.  Elemen  tersebut  lalu dikembalikan oleh fungsi. 
  7. Update = Fungsi ini mengubah elemen yang ditunjuk oleh  now dengan  isi dari  sesuatu. 

Ada beberapa jenis linked list :
1. Single Linked List / Singly Linked List : Sebuah linked list yang hanya memiliki 1 penghubung ke node lain disebut sebagai single linked list.

2. Circular Single Linked List adalah suatu linked list yang tidak memiliki nilai nil/NULL untuk medan sambungannya. Penciptaan adalah memberikan nilai nil terhadap variabel pointer awal dan variabel pointer akhir.







3. Double Linked List / Doubly Linked List adalah linked list dengan node yang memiliki data dan dua buah reference link (biasanya disebut next dan prev) yang menunjuk ke node sebelum dan node sesudahnya. Pada implementasinya, terdapat dua variasi double linked list yaitu circular dan non-circular layaknya pada single linked list.

C.       Queue : Queue merupakan salah satu implementasi dari Linked List. Queue merupakan kumpulan-kumpulan data yang menggunakan konsep FIFO (First In First Out), yaitu data yang paling pertama dimasukan ke dalam queue merupakan data yang pertama kali keluar dari queue.
Berikut operasi yang  digunakan di dalam Queue:
1.            Push(x): Menambahkan data x ke dalam queue.
2.          Pop(): Menghapus data paling depan dari dalam
3.         Peek() atau Top(): Melihat data paling depan dari stack.


D.      Stack : Stack merupakan salah satu implementasi dari Linked List. Stack merupakan kumpulan-kumpulan data yang menggunakan konsep LIFO (Last In First Out) atau FILO (First In Last Out), yaitu data yang paling terakhir dimasukan ke dalam stack merupakan data yang pertama kali keluar dari stack.











Berikut operasi yang digunakan di dalam Stack:
1.            Push(x): Menambahkan data x ke dalam stack.
2.          Pop(): Menghapus data paling terkahir dari dalam
3.         Peek() atau Top(): Melihat data paling atas dari stack.

E.       Binary Tree : adalah sebuah pohon struktur data di mana setiap simpul memiliki paling banyak dua anak. Secara khusus anaknya dinamakan kiri dan kanan. Penggunaan secara umum pohon biner adalah Pohon biner terurut, yang lainnnya adalah heap biner.













Source :

-socs.binus.ac.id
-geeksforgeeks.org
-temanbukuku.blogspot.com
-slide source binusmaya

Komentar

Postingan populer dari blog ini

HEAP

HEAP      Di dalam bidang Teknik Informatika terdapat banyak sekali jenis-jenis algoritma pengurutan yang dapat digunakan untuk memecahkan masalah pengurutan. Oleh karena itu, teknik untuk memilih algoritma pengurutan yang tepat, sesuai dengan kebutuhan, dan mangkus sangat diperlukan karena masing-masing algoritma pengurutan memiliki karakteristik yang berbedabeda. Heap sort merupakan salah satu contoh algoritma pengurutan yang memiliki kompleksitas waktu asimptotik terbaik serta menerapkan teknik yang unik/khas di dalam memecahkan masalah pengurutan, yaitu dengan menggunakan heap tree.  Pengertian Heap Tree:      Secara umum pengertian dari heap adalah bagian dari memori yang terorganisasi untuk dapat melayani alokasi memori secara dinamis.      Suatu heap tree adalah Complete Binary Tree (CBT) di mana harga-harga key pada node-nodenya sedemikian rupa sehingga haga-harga key pada node-node anaknya tidak ada yang lebih besar dari harga k...

Hashing and Tree

HASH TABLE DAN BINARY TREE Hashing adalah teknik dalam struktur data, dimana teknik ini digunakan untuk menyimpan dan mengambil / mencari kata kunci dengan cepat dan efisien. Dalam hashing, string akan ditransformasikan menjadi sebuah kunci yang mewakili string aslinya. Hashing digunakan untuk mengindeks dan menemukan suatu value dengan kata kunci yang lebih pendek. Hashing dilakukan untuk menyimpan data, mencari data, menambah data, dan menghapus data dengan lebih efisien. Hash Table adalah sebuah struktur data yang terdiri atas table dan fungsi yang digunakan untuk menyimpan / menaruh key value yang unik untuk setiap record (baris) menjadi angka (hash). Contoh simplenya : arr[ ] value 0 algo 1 bahaha 2 cat 3 NULL 4 NULL  5 fly 6 go … 25 zebra algo terletak pada arr[0] kar...

AVL Tree and B-Tree

AVL Tree dan Balanced Tree / B-Tree AVL Tree AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/ level maksimal 1 antara subtree kiri dan subtree kanan. AVL Tree muncul untuk menyeimbangkan Binary Search Tree. Dengan AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan yaitu dari yang seharusnya dari O(h) dimana h adalah height dari tree menjadi hanya O(log n). Agar Tree tetap seimbang, maka diberikan batasan sebesar -1, 0, atau 1, dimana batasan ini didapat dari selisih height child kiri dan child kanan. Ada beberapa operasi dalam AVL Tree, yaitu: 1. Insert, dalam insert dapat menyebabkan beberapa masalah miringnya / tidak seimbangnya jumlah child kiri dan child kanan, berikut beberapa masalah yang ada: a. Left-left case dan Right-right case: diselesaikan dengan single rotation yaitu dengan mengambil bagian tengah dari 3 node yang segaris/lurus dan meletakkanya di tengah sebagai parent, dengan 2 node sisanya menjadi cabangnya...