Sunday, March 30, 2014

#Session 5 Stack and Implementation & Queue and Implementation

==============================================

Stack and Implementation 

  • Stack adalah Tumpukan suatu data
  • Stack dibagi menjadi dua macam yakni : 
1. LIFO(Last In First Out) pengertiannya yakni data yang terakhir kali masuk akan keluar pertama kali juga contohnya seperti dalam tumpukan piring - piring kotor yang akan di cuci. Piring pertama yang akan masuk rak adalah piring yang terakhir kali masuk yakni yang dicuci pertama kali
2. FILO(First In Last Out) pengertiannya yakni data yang pertama kali masuk akan keluar terakhir contohnya sama seperti diatas hanya saja kebalikannya. Piring yang berada di paling bawah akan masuk rak paling terakhir 

  • Terdapat dua macam variable yang sering digunakan yakni :
1. Max , variable untuk menunjukkan jumlah data pada stack
2. Top , variable untuk menunjukkan data yang ada di paling atas dalam stack 

  • Apabila Top = NULL maka data stack kosong sedangkan apabila Top = Max - 1 maka data stack penuh.
  • Beberapa function dalam stack :
1. is_empty(); -> untuk mengecek apakah stack kosong
2. is_full(); -> untuk mengecek apakah stack penuh
3. top(); -> untuk kembali ke index top
4. push(); -> untuk menambah data pada stack
5. pop(); -> untuk menghapus data pada stack

  • Dalam stack, apabila terjadi penambahan data maka Top akan naik sedangkan kebalikannya apabila terjadi pengurangan data maka Top akan turun.

Queue and Implementation

  • Queue adalah Antrian suatu data
  • Queue dibagi menjadi dua macam yakni :
1. FIFO (First In First Out) pengertiannya yakni data yang pertama kali masuk akan keluar pertama kali juga. Contohnya seperti pada saat mengantri untuk membeli tike nonton bioskop. Pengantri pertama akan keluar dari barisan apabila sudah membeli tiket.
2. LILO (Last In Last Out) pengertiannya yakni data yang terakhir kali masuk akan keluar terakhir kali juga. Contohnya sama seperti diatas hanya kebalikan saja.

  • Priority Queue maksudnya dalam suatu data terdapat 1 data yg dikhususkan / didahulukan 
  • Circular Queue maksudnya queue yang berbentuk seperti lingkaran (melingkari data - datanya)

Dept First Search

  • DFS merupakan pencarian secara preorder, mengunjungi anak suatu simpul sebelum simpul tetangganya.
  • Berikut gambar algoritma dari DFS :

  • Dari gambar, dapat dilihat bahwa dengan algoritma DFS, setiap anak simpul pertama yang bertetangga dengan simpul akar dikunjungi sampai tingkat terdalamnya lebih dahulu lalu seluruh simpul pada subtree tersebut, sebelum simpul lain yang juga bertetangga dengan simpul akar.
  • Keuntungan yang didapat apabila menggunakan metode DFS yakni :
1. Membutuhkan memori yang relative kecil, karena hanya node-node pada lintasan yang aktif saja yang disimpan. 
2. Secara kebetulan, metode depth-first search akan menemukan solusi tanpa harus menguji lebih banyak lagi.
  • Kekurangan dari metode DFS yakni :
1. Memungkinkan tidak ditemukannya tujuan yang diharapakan
2. Hanya akan menemukan 1 solusi pada setiap pencarian

==============================================

Nama : Johanes Arnold
NIM   : 1701302242

Sunday, March 23, 2014

#Session 4 Tree Concept and Binary tree

==============================================

Tree Concept


Derajat Tree = 3
Height = 3
Derajat C = 2
Induk C = A
Anak A = B, C, D
Sibling F = G
Ancestor of F = A, C
Descendant of C = F, G


  • Nodes yang berada di paling atas disebut dengan Root
  • Nodes yang mempunyai induk yang sama disebut dengan sibling
  • Nodes yang tidak mempunyai anak cabang disebut dengan leaf
  • garis yang menghubungkan induk dengan anak disebut edge
  • Height merupakan derajat maksimun dari suatu nodes dalam tree

Binary Tree Concept

  • Sebuah pohon struktur data dimana setiap simpul memiliki paling banyak dua anak
  • Yang merupakan Leaf adalah 9, 12, 10, 23
  • Binary Tree dibagi menjadi 4 jenis yakni
  1.  Perfect Binary Tree
    • Merupana binary tree yang memiliki kedalaman yang sama di tiap levelnya
2. Complete Binary Tree
    • Merupakan binary tree di mana setiap tingkat, kecuali yang terakhir benar-benar penuh. Perfect binary tree juga bisa disebut sebagai complete binary tree.
3. Skewed Binary Tree
    • Merupakan binary tree di mana setiap simpul memiliki paling banyak satu anak.
4. Balanced Binary Tree
    •  Merupakan binary tree yang dimana tidak ada daun jauh lebih jauh dari akar daripada daun lainnya (skema balancing yang berbeda memungkinkan definisi yang berbeda dari "lebih jauh").


Binary Tree (BT)




-> Push bebas



Binary Search Tree (BST)

     ->Left Nodes harus lebih kecil dari root sedangkan Right Nodes harus lebih besar dari                root

Expression Tree Concept

  • Prefix : * + ab / - cde
  • Postfix : ab + cd - e / *
  • Infix   : (a + b) * ((c - d) / e)
  • in Infix     -> LVR
  • in Postfix -> LRV
  • in Prefix  -> VLR

==============================================

Nama : Johanes Arnold
NIM  : 1701302242

Sunday, March 16, 2014

Session #3

Pada pertemuan ketiga dalam mata perkuliahan struct data, Bapak Sky mengundang dosen tamu yang bernama Okky Pribadi, S.Kom. Beliau merupakan lulusan dari Bina Nusantara University juga yakni mengambil jurusan sistem informasi.

Seperti biasa pertemuan ketiga ini dimulai dari mereview pelajaran yang sudah dipelajari di pertemuan sebelumnya. Ia mereview tentang apakah sebenarnya algoritma ? Algoritma merupakan langkah - langkah yang dilakukan dalam menyelesaikan suatu masalah. Programing = algoritma + bahasa pemograman. Dalam dunia sehari-hari, mungkin tanpa kita sadari Algoritma telah masuk dalam kehidupan kita. Contohnya seperti algoritma saat kita ingin berangkat ke sekolah atau kampus. Setiap orang memiliki algoritma untuk sampai ke sekolah atau kampus secara berbeda. Ada yang memulai dengan mandi dahulu ada juga yang memulai dengan makan terlebih dahulu.

Ia juga menjelaskan tentang perbedaan array dengan linked list, Berikut perbedaannya :

          Array                                                          Linked List

  1. Statis                                                        | Dinamis
  2. Penambahan & penghapusan terbatas | Tidak Terbatas
  3. Random access                                        | Sequential access
  4. Penghapusan array tidak                       | Penghapusan           mungkin                                                   |  mudah

Disaat menit - menit terakhir beliau juga bercerita mengenai dunia kerja seorang programer. Ternyata setelah saya mendengarkan ceritanya, menjadi seorang programmer ternyata sangat seru. Ia bercerita bahwa pernah mendapatkan bayaran lebih dari 10 jutaan hanya dengan sebuah program yang ia ciptakan kurang dari 3 hari saja. Ia juga mengingatkan agar kita lebih mendalami algoritma kita sehingga saat masuk di dunia kerja kita dapat lebih optimal membuat sebuah program yang dipesan atau diminta. Ia juga menyarankan agar kita sering - sering berlatih agar terbiasa dalam membuat suatu program. Sekian dari saya terima kasih telah membaca, Semoga bermanfaat buat anda sekalian.

Nama : Johanes Arnold
NIM  : 1701302242

www.binus.ac.id | www.skyconnectiva.com 


Thursday, March 6, 2014

Penjelasan Linked List

==========================================

Linked List

  • Dibagi menjadi tiga jenis yaitu :
    1. Single Linked list
    2. Double Linked list
    3. Multiple Linked list (Tree)
  • Contoh Single Linked list seperti berikut :

  • Dalam single linked list hanya terdapat satu arah panah, yakni arah penah dengan sebutan next.
  • Namun dalam Double linked list terdapat perbedaan, contohnya seperti berikut ini :

  • Dalam double linked list terdapat dua arah panah, yang disebut dengan nama next(yang ada di single linked list) dan previous.
  • Berikut contoh gambar dari multiple linked list :


Circle (Circular)

  • Contoh gambar dari linked list yang disebut circle :
 

  • Suatu Linked list akan disebut sebagai circle apabila data memori terakhirnya terhubung kembali lagi dengan data memori yang pertama (awal alokasi memori). Jadi arahnya bagaikan suatu lingkaran yang tidak ada batas akhirnya (NULL).

Push Depan dan Push Belakang

  • Linked list diterapkan dengan dua cara yakni Push depan dan Push belakang.
  • Di dalam linked list kalian akan mengenal tentang tiga elemen yaitu head, tail, dan curr(current).
  • Berikut contoh potongang codingan push depan dan push belakang :
struct mahasiswa
{
    int angka;
    struct mahasiswa *next;
}*head=NULL, *curr=NULL, *tail=NULL;

void clear()
{
    for(int c=0; c<25; c++)
        printf("\n");
}
void push_depan(int angka)
{
    curr = (struct mahasiswa*)malloc(sizeof(struct mahasiswa));
    curr->angka = angka;
    curr->next = NULL;

    if(head==NULL)
    {
        head=tail=curr;
    }
    else
    {
        curr->next = head;
        head = curr;
    }
    tail->next = NULL;
}

void push_belakang(int angka)
{
    curr = (struct mahasiswa*)malloc(sizeof(struct mahasiswa));
    curr->angka = angka;
    curr->next = NULL;

    if(head==NULL)
    {
        head = tail = curr;
    }
    else
    {
        tail->next = curr;
        tail = curr;
    }
}

  • Contoh ilustrasi dalam bentuk gambar :

  • Push depan juga bisa diterapkan dalam codingan seperti berikut :
head = curr = tail = NULL;
if(head == NULL)
{
head = tail = curr;
tail->next = NULL;
}
else
{
curr->next = head;
head = curr;
}


  • Sedangkan Push belakang seperti berikut :
if(head == NULL)
{
head = tail = curr;
}
else
{
tail->next = curr;
tail = curr;
}
tail->next = NULL;

==========================================

Nama  : Johanes Arnold
NIM   : 1701302242



Saturday, March 1, 2014

Penjelasan tentang Array, Pointer, Struct, Queue & Stack dan Linked List


  1. Array

  • Array merupakan kumpulan data yang sama dan dialokasikan pada suatu memori
  • Berikut merupakan ciri - ciri dari array :
          1. Mempunyai batasan permintaan alokasi memory(Statis)
          2. Bisa diakses secara acak tidak perlu urut
          3. Bersifat homogen (tipe datanya harus sejenis)

  • Array terdiri dari tiga yaitu array 1 dimensi, array 2 dimensi, array multidimensi
  •  Contoh syntaxnya 
int Array[3][3];
[]pertama maksudnya space atau ruang secara baris yang disediakan memori sebesar 3 sedangkan
[]kedua maksudnya space atau ruang secara kolom yang disediakan memori sebesar 3
 tipe data yang digunakan harus sama semua/ sejenis yaitu tipe data integer.


  • Batas range space array adalah sebagai berikut : Array[99999] hanya sebesar 5 digit angka 9. Jika melebihi dari batas range maka akan terjadi error dalam syntax coding.
  • Array harus dimulai dari index ke 0 dan data di alokasikan di memori secara urut.
2. Pointer

  • Pointer merupakan tipe data untuk menunjuk sebuah alamat pada variable tertentu.
  • Pointer dapat menunjuk pointer lainnya.
  • contoh penerapannya dalam bentuk syntax :
int x = 19;
int *pointer = &x;
int *pointer2 = &pointer;

maka nilai dari pointer2 adalah 19 karena pointer2 menunjuk nilai pointer lalu pointer menunjuk nilai dari variable x.

3. Struct

  • Struct merupakan Kumpulan tipe data yang berbeda - beda 
  • Contoh syntax dalam bahasa C :
Struct nama_struct
{
      char xxx;
      int xxx;
      float xxx;
}nama_data, nama_data2, dst;

4. Queue & Stack

  • Queue mempunyai sifat FIFO, yakni First in First out maksudnya seperti dalam antrian membeli tiket nonton. Masuk disatu sisi dan keluar di sisi lainnya.
  • Sedangkan Stack mempunyai sifat LIFO, yakni Last in First out maksudnya seperti dalam membaca. Buku yang masuk pertama akan ditumpuk di paling bawah sedangkan biasanya membaca buku dari yang paling atas atau yang terakir dimasukan.
5. Linked List

  • Linked list hampir sama dengan array namun berbeda di pengalokasian memorinya. Linked list tidak di alokasi secara urut. Linked list juga harus di akses secara urut, tidak dapat mengakses datanya secara acak.
  • Linked list sering disebut sebagai kumpulan linear dari suatu nodes (titik).