Nama : Fanny Riskawanti
NRP : 6311255
Alamat : Bandung
Kelas : 1 TI-7
Matakuliah : Struktur Data
Dosen : Dadan Nurdin Bagenda
Kampus : PKN & STIMIK LPKIA
Kamis, 19 Juli 2012
Binary Tree
Binary Tree adalah struktur data yang hampir mirip juga dengan Linked List untuk
menyimpan koleksi dari data.
contoh :
Tree
- Tree adalah struktur data yang non cilcular yang memiliki sifat khusus.
dan tree juga merupakan salah satu bentuk implementasi banyak linked list yang biasanya digunakan untuk menggambarkan hubungan yang hirarkis antara elemen-elemen yang ada.
contoh algoritma dari Tree:
contoh :
#include "iostream.h"
#include "string.h"
#include "conio.h"
struct simpulpohon
{
simpulpohon *induk;
simpulpohon *kiri;
simpulpohon *kanan;
char data;
};
class pohonbiner
{
private:
simpulpohon *akar;
int tambah(simpulpohon *orangtua, simpulpohon *baru);
void tampil(simpulpohon *simpul);
public:
pohonbiner();
int tambah(char data);
void tampil();
};
void main()
{
clrscr();
char data[] = "CARKDUPBENXZS";
pohonbiner pohon;
for (int i = 0; i < strlen(data); i++)
pohon.tambah(data[i]);
cout<<"Data ke Pohon Biner : "<<endl;
for (int x = 0; x < strlen(data); x++)
cout<<data[x];
cout<<endl;
cout<<endl;
cout<<"Hasil Pohon Biner :"<<endl;
pohon.tampil();
getch();
}
pohonbiner::pohonbiner()
{
akar = NULL;
}
int pohonbiner::tambah(char data)
{
simpulpohon *simpul;
simpul= new simpulpohon;
simpul->kiri = NULL;
simpul->kanan = NULL;
simpul->induk = NULL;
simpul->data = data;
if (akar == NULL)
{
akar = simpul;
return(1);
}
else
return(tambah(akar,simpul));
}
int pohonbiner::tambah(simpulpohon *orangtua, simpulpohon *baru)
{
if (baru->data ==orangtua->data)
{
delete baru;
return(0);
}
else if (baru->data < orangtua->data)
{
if (!orangtua->kiri)
{
orangtua->kiri = baru;
baru->induk = orangtua;
}
else
return(tambah(orangtua->kiri,baru));
}
else
{
if (!orangtua->kanan)
{
orangtua->kanan = baru;
baru->induk = orangtua;
}
else
return(tambah(orangtua->kanan,baru));
}
return(1);
}
void pohonbiner::tampil()
{
tampil(akar);
cout<<endl;
}
void pohonbiner::tampil(simpulpohon *simpul)
{
if (simpul)
{
if (simpul->kiri) tampil(simpul->kiri);
cout<<simpul->data;
if (simpul->kanan) tampil(simpul->kanan);
}
}
Double LinkedList Non-Circular
Definisi dari Double linked list yang non circular
Double Linked List Non Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya dan 1 field menunjuk pointer sebelumnya serta sebuah field yang berisi data untuk node tersebut.
Double LinkedList Circular
Double Linked List Circula
• Double: artinya field pointer-nya terdiri dari dua buah dan dua arah, yaitu prev dan next
• Linked List: artinya node-node tersebut saling terhubung satu sama lain.
• Circular: artinya pointer next dan prev-nya menunjuk ke dirinya sendiri
• Setiap node pada linked list mempunyai field yang berisi data dan pointer ke node
berikutnya & ke node sebelumnya
• Untuk pembentukan node baru, mulanya pointer next dan prev akan menunjuk ke
dirinya sendiri
• Jika sudah lebih dari satu node, maka pointer prev akan menunjuk ke node
sebelumnya, dan pointer next akan menunjuk ke node sesudahnya.
Deklarasi node
Dibuat dari struct berikut ini:
typedef struct TNode{
int data;
TNode *next;
Tnode *prev;
};
Pembentukan node baru
• Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta
alokasi memorinya.
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = baru;
baru->prev = baru;
· Penambahan data di depan
Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan pada head nya.
Pada prinsipnya adalah mengkaitkan data baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan. Untuk menghubungkan node terakhir dengan node terdepan dibutuhkan pointer bantu.
Single LinkedList Non-Circular
single linked list non circular
Linked List
• Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun
secara sekuensial, saling sambung-menyambung, dinamis dan terbatas.
• Linked List sering disebut juga Senarai Berantai
• Linked List saling terhubung dengan bantuan variabel pointer
• Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa struct yang terdiri dari beberapa field.
Bentuk Node 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.
• Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga
memiliki field yang berisi data.
• Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada
saat pembacaan isi linked list.
Deklarasi Node
typedef struct TNode{
int data;
TNode *next;
};
Penjelasan:
• Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode
• Setelah pembuatan struct, buat variabel head yang bertipe pointer dari TNode yang berguna sebagai kepala linked list.
Single Linked List circular
Single linked list adalah sebuah node yang dihubungkan secara linier dengan bantuan pointer
- linked list selalu memiliki pointer petunjuk yang selalu menunjuk pada awal dari list yang di sebut head.
- linked list juga selalu memliki pointer petunjuk untuk menunjuk pada akhir dari list yang disebut TAIL, kecuali untuk jenis circular.
- Single linked list cilcular 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 Linked List Cilcular :
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar
Array
Jenis-jenis array :
Array 1 dimensi
-> Menggunakan array 1 dimensi : saat kita menggunakan 1 aksi ( baris saja atau kolom saja)
Array 2 dimensi
-> Menggunakan array 2 dimensi : saat kita membutuhkan atau akan membuat kolom dan baris, pada saat menggunakan table atau matriks yang membutuhkan x & y
Definisi dari Array :
Kumpulan Variabel
Tipe datanya sama
Dibedakaan dari indeks
Array merupakan koleksi data dimana setiap elemen memakai nama dan tipe yang sama serta setiap elemen diakses dengan membedakan indeks array-nya.
Contoh Program :
# include<constream.h>
Void main()
{
clrscr();
Int a[3];
for(int x=0; x=2;x++)
cin>>a[x];
for(x=0;x<=2;x++)
cout<<a[x]<<endl;
getch();
Penjelasan :
Nama array = a
Ada 1 array
Ada 4 variabel = a(0-2), x
data yang di input dari o-2 tapi bias di isi 3
untuk Array 2 Dimensi
contoh program :
#include
void printArray(int[][3]);
main()
{ int matrik1[2][3] = {{1, 2, 3},{4, 5, 6}};
int matrik2[2][3] = {1, 2, 3, 4, 5};
int matrik3[2][3] = {{1, 2},{4}};
printArray (matrik1);
printArray (matrik2);
printArray (matrik3);
return 0; }
void printArray (int a[][3])
{ int i,j;
for (i=0; i<=1; i++)
{ for (j=0; j<=2; j++)
cout<<“%d”,a[i][j]<<endl;
cout<<“n”<<endl;
}
}
Bila program diatas dijalankan, akan mucul hasil :
123
456
123
450
120
400
untuk Array 2 Dimensi
contoh program :
#include
void printArray(int[][3]);
main()
{ int matrik1[2][3] = {{1, 2, 3},{4, 5, 6}};
int matrik2[2][3] = {1, 2, 3, 4, 5};
int matrik3[2][3] = {{1, 2},{4}};
printArray (matrik1);
printArray (matrik2);
printArray (matrik3);
return 0; }
void printArray (int a[][3])
{ int i,j;
for (i=0; i<=1; i++)
{ for (j=0; j<=2; j++)
cout<<“%d”,a[i][j]<<endl;
cout<<“n”<<endl;
}
}
Bila program diatas dijalankan, akan mucul hasil :
123
456
123
450
120
400
pengertian pointer
*Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu
variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam
memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama
dikatakan menunjuk ke variabel kedua
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 berada pada sebuah alamat.
Contoh program :
#include "stdio.h"
#include "conio.h"
void main()
{
int x, y; /* x dan y bertipe int */
int *px; /* px pointer yang menunjuk objek */
clrscr();
x = 87;
px = &x; /* px berisi alamat dari x */
y = *px; /* y berisi nilai yang ditunjuk px */
cout<<“Alamat x =”<<&x <<\n”;
cout<<“Isi px = \n”, px);
cout<<“Isi x = \n”, x);
cout<<“Nilai yang ditunjuk oleh px = \n”, *px);
cout<<“Nilai y = \n”, y);
getch();
}
Definisi Struktur Data
Struktur data adalah cara menyimpan data di dalam komputer agar bisa dipakai secara efisien Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan dalam bentuk tulisan atau simbol.
ada 2 jenis tipe data yaitu:
a. Tipe data sederhana adalah tipe data yang sudah ada dan dijadikan standar dalam bahasa pemrograman tertentu.
Isi dari tipe data sederhana ini adalah data-data tunggal
contohnya seperti integer, real, bolean,karakter
b. Tipe data sederhana majemuk , seperti string,record
Langganan:
Postingan (Atom)