Sabtu, 21 Juli 2012

Rangkuman Mata Kuliah Struktur Data di Kelas

A. Pembuka

1. David Siringoringo
2. 6311066
3. Jln. Suka ati No.39 Bandung
4. 1 TI 5
5. Struktur Data Teori
6. Dadan Nurdin Bagenda
7. PKN & STMIK LPKIA Bandung


Pak,, Semua Program Untuk Semua Lampiran / Judul Postingan Saya,,

Ada Disini : "http://www.4shared.com/rar/FLWC7XXg/Program_C_Dari_Tugas_Akhir.html"

Mangga di Download Pak,,
hehe,,








[+/-] Selengkapnya...

PENGERTIAN STRUKTUR DATA


Struktur data merupakan salah satu ilmu fundamental untuk mempelajari pemograman.
Struktur adalah susunan,
Data adalah representasi dari fakta dunia nyata, dan
Fakta adalah keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol

Jadi ,
Struktur data adalah cara penyusunan, penyimpanan atau merepresentasikan, dan pengaturan data di dalam komputer agar bisa dipakai secara efisien, dan agar penggunaan suatu data dapat lebih singkat/simple.

Secara garis besar type data terutama dalam struktur data dapat dikategorikan menjadi :

1. Type Data Sederhana

a. Type Data Sederhana Tunggal,
Seperti : Integer, Real, Boolean, Dan Char
b. Type Data Sederhana Majemuk,
Seperti : String

2. Struktur Data, meliputi

a. Struktur Data Sederhana,
Seperti : Array dan Record
b. Struktur Data Majemuk, yang terdiri dari :
Linear : Stack, Queue, Linked List, dan Multilist
Non-Linear : Tree, Binary Tree, dan Graph

[+/-] Selengkapnya...

Pemetaan Struktur Data






Binarry Tree
Kunjungan

Pre Order
Kunjungan secara preorder (Depth First Order)
a. Cetak simpul yang dikunjungi (simpul akar)
b. Kunjungi cabang kiri
c. Kunjungi cabang kanan





In Order
Kunjungan secara Inorder (Symmetric order) mempunyai urutan:
a. Kunjungi cabang kiri
b. Cetak isi simpul yang dikunjungi (simpul akar)
c. Kunjungi cabang kanan












 Post Order
Kunjungan secara postorder
a. Kunjungi cabang kiri
b. Kunjungi cabang kanan
c. Cetak simpul yang dikunjungi (simpul akar)

[+/-] Selengkapnya...

Array Dan Pointer

ARRAY
Array adalah suatu tipe data terstuktur yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan diberi suatu nama tertentu.

Elemen-elemen array tersusun secara sekuensial di dalam memori sehingga memiliki alamat yang berdekatan.

Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.

Array adalah deretan variabel yang berjenis sama dan mempunyai nama sama. Pada bahasa C, array mempunyai lokasi yang bersebelahan. Alamat terkecil menunjuk keelemen pertama dan alamat terbesar menunjuk ke alamat terakhir. Sebuah elemen pada array diakses melalui indeksnya.

Bentuk umum deklarasi array :
type nama_array[ukuran]
tipe : menyatakan tipe dasar array
ukuran : menyatakan banyaknya elemen pada array

Kelebihan ARRAY :
1. Struktur data paling mudah
2. Memori ekonomis, bila semua elemen terisi
3. Waktu akses sama ke setiap elemen
Kekurangan ARRAY :
1. Boros memori jika banyak elemen yang tidak digunakan
2. Struktur data statis




















POINTER
Pointer adalah suatu variabel penunjuk, berisi nilai yang menunjuk alamat suatu lokasi memori tertentu.
Jadi pointer tidak berisi nilai data, melainkan berisi suatu alamat memori atau null jika tidak berisi data.
Pointer yang tidak diinisialisasi disebut dangling pointer Lokasi memori tersebut bisa diwakili sebuah variabel atau dapat juga berupa nilai alamat memori secara langsung.

Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer tertentu. Pointer merupakan variabel level rendah yang dapat digunakan untuk menunjuk nilai integer, character, float, double, atau single, dan bahkan tipe-tipe data lain yang didukung oleh bahasa C. Variabel biasa, sifatnya statis dan sudah pasti, sedangkan pada pointer sifatnya dinamis dan dapat lebih fleksibel. Variabel pointer yang tidak menunjuk pada nilai apapun berarti memiliki nilai NULL, dan disebut sebagai dangling pointer karena nilainya tidak diinisialisasi dan tidak dapat diprediksi.
Pendeklarasian variabel pointer menggunakan tanda * sebelum nama variabelnya, sedangkan untuk menampilkan nilai yang ditunjuk oleh suatu variabel pointer, juga digunakan operator * (tanda asterisk). Jika diinginkan untuk menampilkan alamat tempat penyimpanan nilai yang ditunjuk oleh suatu variabel pointer, digunakan operator & (tanda ampersand).
Pada suatu tipe data array, variabel pointer hanya perlu menunjuk pada nama variabel arraynya saja tanpa perlu menggunakan tanda ampersand, atau menunjuk pada nama variabel array pada indeks yang ke nol nya.
Bentuk Umum : tipe_data *nama_pointer;
Contoh : int *nilai;
char *huruf;
Operator pointer ada dua, yaitu :
 Operator &
 Operator & bersifat unary (Hanya memerlukan satu operand saja)
 Operator & menghasilkan alamat dari operandnya
 Operator *
 Operator * bersifat unary (Hanya memerlukan satu operand saja)
 Operator * menghasilkan nilai yang berbeda pada sebuah alamat



Operasi Pointer
a. Operasi Penugasan
Suatu variabel pointer seperti hal nya variable yang lain, juga bias mengalami operasi penugasan. Nilai dari suatu variable pointer dapat disalin ke pointer yang lain.
Contoh program
#include “stdio.h”
#include “conio.h”
void main(){
float *x1, *x2, y;
clrscr();
y = 13.45;
x1 = &y; /* Alamat dari y disalin ke variabel x1 */
x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */
printf(“Nilai variabel y = %.2f ada di alamat %p\n”, y, x1);
printf(“Nilai variabel y = %.2f ada di alamat %p\n”, y, x2);
getch();
}

b. Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan. Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Begitu juga operasi pengurangan.

Contoh Program
#include “stdio.h”
#include “conio.h”
void main(){
int nilai[3], *penunjuk;
clrscr();
nilai[0] = 125;
nilai[1] = 345;
nilai[2] = 750;
penunjuk = &nilai[0];
printf(“Nilai %i ada di alamat memori %p\n”, *penunjuk, penunjuk);
printf(“Nilai %i ada di alamat memori %p\n”, *(penunjuk+1),
penunjuk+1);
printf(“Nilai %i ada di alamat memori %p\n”, *(penunjuk+2),
penunjuk+2);
getch();
}

[+/-] Selengkapnya...

Stuktur Data Linear

A. Double Linked List Circular

Double Linked List Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya(next), 1 field menunjuk pointer sebelumnya (prev), serta sebuah field yang berisi data untuk node tersebut.
Double Linked List Circular pointer next dan prev nya menunjuk ke dirinya sendiri secara circular.

Pengertian:
Double : artinya field pointer-nya terdiri dari dua buahdan dua arah, yaitu prev dan next
Linked List : artinya node-node tersebut salingterhubung satu sama lain.
Circular : artinya pointer next dan prev-nya menunjuk kedirinya sendiri.





Dengan Head
• Menggunakan 1 pointer head
• Head selalu menunjuk node pertama

Sebelumnya kita harus mendeklarasikan dulu pointer head :
TNode *head;
Setelah kita mendeklarasikan pointer head, kita belum bisa secara langsung mendeklarasikan node yang dituju. Sehingga pointer head harus dibuat bernilai null terlebih dahulu :
head = NULL;
Untuk mengetahui apakah suatu Linked List kosong atau tidak, kita dapat mengetahuinya dengan mengecek nilai dari pointer Head-nya.


Contoh program :
• Penambahan di depan

void tambahdata (int databaru){
TNode *baru,*bantu;
//pointer bantu digunakan untuk menunjuk node terakhir (head->prev)
baru = new TNode;
baru -> data = databaru;
baru -> next = baru;
baru -> prev = baru;

if (isEmpty()==1) {
head=baru;
head->next=head;
head->prev=head;
}
else {
bantu=head->prev;
baru->next=head;
head->prev=baru;
head=baru;
head->prev=bantu;
bantu->next=head;
}
printf(”data masuk”);
}


• Penambahan di belakang

void insertBelakang (int databaru){
TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = baru;
baru->prev = baru;
if(isEmpty()==1){
head=baru;
head->next = head;
head->prev = head;
}
else {
bantu=head->prev;
bantu->next = baru;
baru->prev = bantu;
baru->next = head;
head->prev = baru;
}
printf(”data masuk”);
}

• Tampil

void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
do{
printf(“%i ”,Bantu->data);
bantu=bantu->next;
}while(bantu!=head);
printf(“\n”);
} else printf(“masih Kosong”);cout<<"Masih kosong\n"; } • Hapus di depan void hapusDepan (){ TNode *hapus,*bantu; int d; if (isEmpty()==0){ if(head->next != head){
hapus = head;
d = hapus->data;
bantu = head->prev;
head = head->next;
bantu->next = head;
head->prev = bantu;
delete hapus;
} else {
d = head->data;
head = NULL;
}
printf(“%i terhapus”,d);
} else printf(“Masih kosong\n”);
}

• Hapus di belakang

void hapusBelakang(){
TNode *hapus,*bantu;
int d;
if (isEmpty()==0){
if(head->next != head){
bantu = head;
while(bantu->next->next != head){
bantu = bantu->next;
}
hapus = bantu->next;
d = hapus->data;
bantu->next = head;
delete hapus;
} else {
d = head->data;
head = NULL;
}
printf(“%i terhapus\n”,d);
} else printf(“Masih Kosong”);
}


B. Double Linked List Non Circular (DLLNC)
DLLNC adalah sebuah Linked List yang terdiri dari dua arah pointer, dengan node yang saling terhubung, namun kedua pointernya menunjuk ke NULL.
Setiap node pada linked list mempunyai field yang berisi data dan pointer yang saling berhubungan dengan node yang lainnya.

Gambaran Node DLLNC





Deklarasi Node
typedef struct TNode
{
int data;
TNode *next;
TNode *prev;
}


C. Single linked list Circular
SLLC adalah Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya.

Pengertian:
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar




Ilustrasi Penggunaan Single Linked List Circular





Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data.
Pada akhir linked list, node terakhir akan menunjuk ke node terdepan sehingga linked list tersebut berputar.




D. Single linked list Non Circular
Pengertian:
Single : artinya field pointer-nya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL
Linked List : artinya node-node tersebut saling terhubung satu sama lain.




E. Tambah list di depan(LIFO), tengah, belakang(FIFO).
Dengan pengertiannya merupakan linked list yang nodenya atau elemenya hanya dapat dimasukan dan dihapus dari paling atas.

Sebagai contoh dalam sehari – hari , seperti :
 Apabila kita memasukan kerikil atau batu ke dalam botol maka yang
terakhir masuk merupakan batu yang akan keluar paling pertama.
 Dalam persediaan beras digudang, beras yang pertama masuk maka aka
disimpan paling bawah dan yang terakhir masuk maka akan disimpan
paling atas. Maka untuk mengambil beras akan di ambil dari yang atas
terlebih dahulu karena apabila dari bawah yang akan terjadi adalah
berantakan.

F. Hapus List di depan, tengah,belakang, dan semua

[+/-] Selengkapnya...

Stuktur Data Non LInear

A. Tree
Tree merupakan salah satu bentuk struktur data non linear yang menggambarkan hubungan yang bersifat hirarkis antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut ROOT dan node lainnya terbagi menjadi himpunan-himpunan yang saling tidak berhubungan satu sama lainnya (subtree)
Tree adalah sebuah struktur data yang secara bentuk menyerupai sebuah pohon, yang terdiri dari serangkaian node (simpul) yang saling berhubungan. Node-node tersebut dihubungkan oleh sebuah vektor. Setiap node dapat memiliki 0 atau lebih node anak (child). Sebuah node yang memiliki node anak disebut node induk (root). Sebuah node anak hanya memiliki satu node induk. Sesuai konvensi ilmu komputer, tree bertumbuh ke bawah, tidak seperti pohon di dunia nyata yang
tumbuh ke atas.



B. Binarry Tree
Binary tree adalah tree dengan syarat bahwa tiap node bisa kosong atau maksimal memiliki dua subtree dan kedua subtree harus terpisah.
Sesuai dengan definisi tersebut, maka tiap node dalam binary tree hanya boleh memiliki paling banyak dua child dan Binary tree mempunyai berbagai jenis, yaitu :

1. Full Binary tree
Full Binary Tree adalah binary tree yang tiap nodenya (kecuali leaf) memiliki dua child dan tiap subtree harus mempunyai panjang path yang sama

2. Complete binary Tree
Complete Binary Tree Mirip dengan full binary tree, namun tiap subtree boleh memiliki panjang path yang berbeda.node (kecuali leaf) memiliki 0 atau 2 child

3. Skewed Binary Tree
Skewed Binary Tree adalah binary tree yang semua node nya (kecuali leaf) hanya memiliki satu child.

Contoh Binarry Tree = DAVID




C. Graph
Graph adalah kumpulan noktah (simpul) di dalam bidang dua dimensi yang dihubungkan dengan sekumpulan garis (sisi).Graph dapat digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut. Representasi visual dari graph adalah dengan menyatakan objek sebagai noktah, bulatan atau titik (Vertex), sedangkan hubungan antara objek dinyatakan dengan garis
G = (V, E)
Dimana
G = Graph
V = Simpul atau Vertex, atau Node, atau Titik
E = Busur atau Edge, atau arc

[+/-] Selengkapnya...