Sunday, March 23, 2014

Tree & Binary Tree

I. Tree Concept





II. Binary Tree concept

parent punya 2 anak
















Beda Binary Tree dan Binary Search Tree






Boleh memasukan angka berapa pun secara acak







B -> harus lebih kecil dari A
C-> harus lebih besar dari A












III. Type of Binary Tree


Perfect Binary Tree
>di paling bawah full
>tiap level jumlahnya sama










Complete Binary Tree
> Bawahnya tidak full  

















IV. Expresion Tree Concept


prefix : * + ab /- cde    --> tanda di depan
postfix : ab + cd - e /*  --> tanda di belakang
infix : (a+b)*((c-d)/e)    --> tanda di tengah

contoh 1 :
2 + a + (b/2) * 3
prefix = + 2 + a / b 2 3
postfix = 2 ab 2/3 * ++

contoh 2:
3 / (a +b) -2
prefix = - / 3 + ab 2
postfix = 3 ab + / 2


bedanya graph dan tree


graph : ujung tersambung







Tree : ada yang digantung










V. Menggambar Tree

c / a * 2 + 3 / 12 + 21



cara untuk mengecek :
infix     : L V R
postfix : L R V
prefix   : V L R














Sunday, March 16, 2014

Algoritma dan Struktur Data Pemograman
by : Okky Pribadi, S.Kom

Perbedaan Array dan Linked List

Array :
- Statis
- Penambahan dan penghapusan data terbatas
- Random Access
- Penghapusan Array Tidak Mungkin

Linked List :
- Dinamis
- Penambahn dan penghapusan data tidak terbatas
- Sequential Access
- Penghapusan mudah

contoh :
Array :
char nama[5]
[o] [k] [k] [y] []

Linked List :
[o|] [k|] [k|] [y|] [null|]


Algoritma?
> Berasal dari kata Algorism yang berati proses menghitung dengan angka arab
> Algoritma adalah urutan langkah - langkah logis penyelesaian masalah yang disusun secara sistematis dan logis

Bedanya Algo & Program 
> Program : Algoritma + bahasa (struktur data)
>Algoritma  dapat diterjemahkan di berbagai bahasa pemograman





senin , 10 maret 2014


Friday, March 7, 2014

Linked List Implementation I

Linked list ada 3 jenis :
> Single LL 
    ----> <----

>Double LL
  ---->
 <----

>Multiple LL
*panahnya kesegala arah






selain itu ada jenis lain..
> Circular single Lingked list                                                       











>double















ex:
struct Mahasiswa *curr;
*cur =(struct Mahasiswa *)malloc(sizeof(struct carts));
strcpy(curr->nama,nama)
curr->next = head
head=char

malloc disini fungsinya untuk mengembalikan data void bintang
sedangkan struct disiini agar dapat sesuai dengan isi struct.

Single LL
- Push Depan
- Push Tengah
- Push Belakang

Push depan
head = curr = tail = null

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

*note : pada saat pertama bikin, current selalu ada di data baru
buat kodingan head selalu di depan dan tail selalu dibelakangan.

Push belakang
h = t = c =null

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



ada juga pop.. digunakan untuk menghapus atau delete

pop depan
 if(head == tail){
        head = tail = NULL;
        free(curr);
    }else{
        //2
        head = head->next;
        //3
        free(curr);
    }
    

Pop belakang
 if(head == tail){
        head = tail = NULL;
        free(curr);
    }else{
        //2
        while(curr->next != tail){
            curr=curr->next;
        }
        //3
        tail = curr;
        //4
        free(curr->next);
        //5
        tail->next = NULL;
    }


sumber
http://strukturdata-asb.blogspot.com/

www.binus.edu
SkyConnectiva
Angela Ekarizky Aprilla Nugraheni

hope you enjoy :)

Tuesday, February 25, 2014

Data Structure Class

Pointer, Array & Introduction to Date Structure

Array
  • kumpulan data
  • homogen (tipe data sama)
  • index .. start = 0
contoh : int angka[][] = 2 dimensi
             int angka[][][] = 3 dimensi

ada beberapa dimensi dalam array...

Array 1 dimensi
deklarasi :
int arr [5];

akses:
arr [0] = 7;
arr [1] = 2;

syntax :
type name [size]

Array 2 dimensi
deklarasi : 
int array [3] [6] ==> 3 baris 6 kolom ==> 3x6 = 18 ==> banyaknya data : elemen

akses :  arr[0][2] = 2;
     arr[2][1] = 9;

syntax :
type name [size1] [size2]

Array mulitidimensi
deklarasi :
int arr[3][4][7][10];

akses : arr[0][2][2][9] = 2
     arr[2][1][6][0] = 0

syntax:
type name[size1][size2][size3][size4][..]

Q : berapa batas dimensi dalam array?
A : Tidak terbatas

Storing array values

dalam menyimpan nilai atau value kedalam array kita dapa melakukan :
  • insiasi elemen
  • memasukan nilai untuk elemen, dan
  • menetapkan nilai untuk elemen
•Insiasi untuk array
  Ex:  int marks[4] = {92, 80, 87, 96};
•memasukan nilai
  Ex:  int i, marks[15];
  for (i=0; i<15; i++)
  scanf(“%d”, &marks[i]);
•menetapkan nilai
  Ex:  int i, arr1[20], arr2[20];
  for(i=0; i<20; i++)
  arr2[i] = arr1[i];

Operasi - operasi yang ada di dalam array
> Transversal 
int angka[3][2]={(1,2,3),(2,2,4),(4,5,6)};
for(i=0;i<3;i++){
  for(j=0;j<3;j++){
     printf("%d",angka[j][i]);
      }
    }
}
hasil :
1 2 3
2 2 4
4 5 6

>Insertion 
>Searching
found=-1;
for(i=0;i<index;i++){
if(strcmpi(nama,binus[i].nama)==0){
found=i;break;
}
}
>Deletion
int i,found;
char nama[30];
do{
printf("masukan nama [3..12];");
gets(nama);
}while(strlen(nama)<3||strlen(nama)>12);

found=-1;
for(i=0;i<index;i++){
if(strcmpi(nama,binus[i].nama)==0){
found=i;break;
}
}
if(found==-1){
printf("data not found\n");
}else{
for(i=found;i<index-1;i++){
binus[i]=binus[i+1];
}
index--;
}
}

>Merging
>Sorting
int i,j;
for(i=0;i<index-1;i++){
for(j=index-1;j>i;j--){
if(strcmpi(binus[j].nama,binus[j-1].nama)<0){
swap(&binus[j],&binus[j-1]);
}
}
}
}

Pointer
tipe data yang nilainya mengacu pada nilai lain disimpan di tempat lain dalam memori komputer dengan
menggunakan alamatnya.

& = alamat
* = isi

Struktur Data
pengaturan data baik dalam memori komputer maupun didalam penyimpanan disk
- Tipe-tipe struktur data
> array
kumpulan data (contohnya sudah ada di atas)

> Linked list 
dapat menambahkan juga menghapus elemen dari mana saja

> Queues
seperti orang yang sedang berbaris.. dia yang masuk pertama dan dia jg yg keluar pertama
[][][][] ... FIFO = first in first out

> Stacks
seperti menumpukan buku.. buku yang terakhir diletakan akan berada di paling atas lalu dia akan diambil pertama.
[]
[]
[].. LIFO = Last in first out

>binarry trees
kumpulan elemen yang dikatakan sebagai nodes atau titik yang saling berhubungan

> Hash Table 

Tipe Data
- int
- char
- float
- void

Abstract Data Typr
·           Secara umum, ADT adalah sebuah tipe data yang memenuhi kondisi berikut :
1.        Representasi, operasi, dan tupe objek didefinisikan dalam single syntatic unit.
2.        Representasi dari objek disembunyikan dari unit program yang menggunakan objek tersebut, sehingga operasi yang memungkinkan adalah operasi yang disediakan didalam type’s definition.
(ADT tidak bisa terlepas dari attribute)

Keuntungan ADT :
Program terorganisasi, dapat dimodifikasi, dan kompilasi terpisah.
Dapat diandalkan dengan menyembunyikan representasi data, pengguna (user) tidak dapat mengakses objek secara langsung.

Introduction to Linked List

Memory alocation dynamic
-dialokasikan saat runtime

Array VS Linked List
Array
  • koleksi liniear dari elemen data
  • menyimpan nilai dalam lokasi memori berturut - turut
  • bisa memasukan akses data random ==> langsung ke index
Linked list
  • koleksi linier dari titik atau nodes
  • tidak menyimpan titiknya secara berturut-turut dalam lokasi memori
  • kalau mau diakses harus berurutan

Nama : Angela Ekarizky Aprila N.
Nim : 1701289505
Kelas : 02PGT

:) Enjoy.. maaf kalo tidak lengkap :)