Kamis, April 4

Stack , Queue , Binary Tree & AVL Tree

1. STACK

a. Definisi Stack

STACK ( tumpukan ) merupakan struktur data yang seolah – oleh terlihat seperti data yang terusun secara tumpuk dimana ada data yang terletak diatas data yang lainnya .

b. Stack dengan Array

Stack menggunakan array pengambil / penghapusan dielemen dalam stack yang dilaukan dengan memulainya dari elemen teratas

c. Double Stack dengan Array

Merupakan metode khusus yang dikembangkan untuk menghemat pemakaian memori dalam pembuatan dua stack dengan array . intinya adalah penggunaan hanya sebuah array untuk menampung dua buah stack.

d. Stack dengan Single Linked List

Menggunakan Single Lingked List dalam pembuatan stack mempunyai keunggulan dibandingkan dengan array yaitu dapat digunakan alokasi memori yang dinamis sehingga menhindari pemborosan memori.

2. Queue

a. Definisi Queue

Queue ( Antrian ) merupakan kumpulan daya yang seolah – olah terihat seperti ada data yang diletakkan disebelah data yang lainnya . Queue memiliki sifat FIFO.

b. Queue dengan Linear Array

Linear Array adalah suatu array yan dibuat seakan – akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu keluar .

c. Queue dengan Circular Array

Circular Array merupakan suatu array yang dibuat seakan – akan merupakan sebuah lingkaran dengan titik awal an titik akhir saling bersebelahan jika array dalam keadaan kosong .

d. Queue dengan Double Lingked List

Merupakan Queue yang menggunakan Double Lingked List yang dapat menghemat memori dalam pengerjaan nya seperti pengertian Double Lingked List sebelumnya .

3.TREE

a) .Definisi Tree

Tree bisa didefinisikan sebagai kumpulan simpul/node dengan elemen khusus yang disebutRoot. Notde lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lain (disebut Subtree).

b).Jenis-Jenis Tree

*Binary Tree
Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimaldua subtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut
tiap node dalam binary tree hanya boleh memiliki paling banyak dua child.

-Jenis- Jenis Binary Tree :
  • Full Binary Tree
Jenis binary tree ini tiap nodenya (kecuali leaf) memiliki dua child dan tiap subtree harus mempunyai panjang path yang sama.
  • Complete Binary Tree
Jenis ini mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path yang berbeda dan setiap node kecuali leaf hanya boleh memiliki 2 child.
  • Skewed Binary Tree
Skewed Binary Tree adalah Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu child.
  • Implementasi Binary Tree
Binary tree dapat diimplementasikan dalam C++ dengan menggunakan double
linkedlist.

c). Binary Search Tree

Binary search tree merupakan binary yang memiliki sifat dimana semua left child harus lebih kecil dibandingkan dengan right child dan parentnya dan sebaliknya. Binary ini dibuat untuk mengatasi kelemahan binary tree biasa dalam pencarian node tertentu. .(http://sad1n1Rom. .blogspot.com/)

d).AVL Tree

AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/ level maksimal 1antara 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.

Array, Pointer, & Linked List

1.ARRAY

Array adalah suatu struktur yang terdiri dari sejumlah
elemen yang memiliki tipe datayang sama. Elemen-elemen
array tersusun secara sekuensial dalam memori komputer.

a)Array Satu Dimensi

Array Satu dimensi tidak lain adalah kumpulan
elemen-elemen identik yang tersusun dalam satu baris.
Elemen-elemen tersebut memiliki tipe data yang sama,
tetapi isi darielemen tersebut boleh berbeda.
Bentuk umum:
NamaArray[n] = {elemen0, elemen1, elemen2,.....,n};
n = jumlah elemen

b)Array Dua Dimensi

Array dua dimensi sering digambarkan sebagai sebuah matriks,
merupakan perluasandari array satu dimensi.
Bentuk umum:
NamaArray [m][n];
Atau
NamaArray [m][n] = { {a,b,..z},{1,2,...,n-1} };
Contoh:
double matrix[4][4];
bool papan[2][2] = { {true,false},{true,false} };
Pendeklarasian array dua dimensi hampir sama
dengan pendeklarasian array satudimensi,
kecuali bahwa array dua dimensi terdapat dua
jumlah elemen yang terdapat di dalam kurung
siku dan keduanya boleh tidak sama.

2. STRUCTURE

Structure merupakan sekumpulan elemen data yang dikelompokkan secara bersama-sama dengan sebuah nama. Elemen dari anggotanya dapat memiliki tipe data dan panjang yang berbeda
Deklarasi Structure
struct structure_name
{
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
….
} object_names;

3.POINTER

Pointer merupakan tipe data berukuran 32 bit yang berisi satu
nilai yang berpadanandengan alamat memori tertentu.
Sebagai contoh, sebuah variabel P bertipe pointer bernilai 0x0041FF2A,
berarti P menunjuk pada alamat memori 0041FF2A. Pointer dideklarasikan
seperti variabel biasa dengan menambahkan tanda * (asterik) yang
mengawali nama variabel.
Bentuk Umum:
namaVariabel;
Contoh:
float * px;
Dalam pointer, terdapat 2 jenis operator yang biasa
digunakan :

a. Operator Alamat / Dereference Operator(&)

Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi memori dan pengguna biasanya tidak mengetahui di alamat mana data tersebut disimpan.Dalam C++, untuk mengetahui alamat tempat penyimpanan data, dapat digunakan tanda ampersand(&) yang dapat diartikan “alamat”.
Contoh :
Bil1 = &Bil2;
dibaca: isi variabel bil1 sama dengan alamat
bil2

b. Operator Reference (*)

Penggunaan operator (*), berarti mengakses nilai sebuah alamat yang ditunjuk oleh variabel pointer.
Contoh :
Bil1=*Bil2;
dibaca : bil1 sama dengan nilai yang ditunjuk oleh bil2

4.LINKED LIST

Hanya menggunakan satu variabel pointer saja
untuk menyimpan banyak data dengan metode yang kita
sebut Linked List.
Linked list adalah sekumpulan elemen bertipe sama,
yang mempunyai keterurutan tertentu, yang setiap
elemennya terdiri dari dua bagian.
Bentuk Umum :
Typedef struct telmtlist
{
Infotype info;
Address next;
}elmlist;
infotype sebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list
next address dari elemen berikutnya (suksesor)
Jika L adalah list, dan P adalah address, maka alamat elemen pertama list L dapat diacu
dengan notasi :
first(L)
Sebelum digunakan harus dideklarasikan terlebih dahulu :
#define first (L) (L)
Elemen yang diacu oleh P dapat dikonsultasi informasinya dengan notasi :
Info (P) deklasrasi #define info (P) (P)-> info
Next (P) deklasrasi #define next (P) (P)-> next

a.Single Linked List

Linked List merupakan sekumpualan elemen bertipe sama ,
yang mempunyai urutan tertentu , yang setiap elemennya
terdiri dati dua bagian .Dimana jika dibandingkan dengan array

*LIFO ( Last In First Out)

Lifo adalah suatu metode pembuatan Linked List di mana data
yang masuk paling akhiradalah data yang keluar paling awal. Hal ini
dapat dianalogikan (dalam kehidupansehari-hari) dengan saat Anda menumpuk barang seperti digambarkan dibawah ini.Pembuatan
sebuah simpul dalam suatu linked list.

*FIFO (Fisrt In Fisrt Out)

FIFO adalah suatu metode pembuatan Linked List di mana
data yang masuk palingawal adalah data yang keluar paling awal juga.

b).Double Linked List

Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya dapat bergerak
satu arah saja, maju/ mundur, atau kanan/kiri sehingga pencarian data pada single
linked list hanya dapat bergerak dalam satu arah saja. Untuk mengatasi kelemahan
tersebut, anda dapat menggunakan metode double linked list. Linked list ini dikenal
dengan nama Linked list berpointer Ganda atau Double Linked List.

c).Circular Double Linked List

Ini adalah double linked list yang simpul terakhirnya menunjuk ke simpul terakhirnya
menunjuk ke simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu
lingkaran.