Laporan Praktikum Resmi - Tree 2

28
LAPORAN PRAKTIKUM RESMI ALGORITMA STRUKTUR DATA II POHON BINER (BINARY TREE) Disusun oleh : Velisia Puspita Devi 201301023 Dosen pengampu : Yosef Murya Kusuma Ardhana.S.T., M.Kom JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO

description

Laporan Praktikum ALPRO STR Data II

Transcript of Laporan Praktikum Resmi - Tree 2

Page 1: Laporan Praktikum Resmi - Tree 2

LAPORAN PRAKTIKUM RESMI

ALGORITMA STRUKTUR DATA II

POHON BINER (BINARY TREE)

Disusun oleh :

Velisia Puspita Devi

201301023

Dosen pengampu :

Yosef Murya Kusuma Ardhana.S.T., M.Kom

JURUSAN SISTEM INFORMASI

SEKOLAH TINGGI ILMU KOMPUTER

YOS SUDARSO

PURWOKERTO

2014

Page 2: Laporan Praktikum Resmi - Tree 2

BAB I

LANDASAN TEORI

1. Pengantar

Tree merupakan struktur data non linear. Struktur data dalam

bentuk pohon (tree) dapat diartikan sebuah struktur data yang secara

bentuk menyerupai sebuah pohon, yang terdiri dari serangkaian simpul

atau node yang saling berhubungan.

Simpul-simpul atau node tersebut dihubungkan oleh sebuah vektor.

Setiap simpul dapat memiliki 0 atau lebih node anak (child). Sebuah node

yang memiliki node anak disebut node induk (parent).

Sebuah node anak hanya memiliki satu node induk. Sesuai

konvensi ilmu komputer, tree bertumbuh ke bawah, dengan demikian node

anak akan digambarkan berada di bawah node induknya.

Node yang berada di pangkal tree disebut node akar (root),

sedangkan node yang berada di paling ujung pada piramida tree disebut

node daun (leaf).

A. Struktur Tree

Semua bulatan disebut simpul (node).

Node G adalah node induk dari H, I, J.

Node H, I, J adalah node anak dari G.

2

Page 3: Laporan Praktikum Resmi - Tree 2

Akar (root) adalah simpul yang tidak memiliki superordinat. Untuk

pohon yang dicontohkan di atas, maka root adalah node A.

Daun (leaf) adalah simpul yang tidak memiliki subordinat. Untuk

pohon diatas dicontohkan diatas, maka leaf adalah node D, E, F, H, I, J.

a. Superordinat dan Subordinat

Node B merupakan superordinat node E dan node F.

Node E dan F mempunyai superordinat yang sama, yaitu node B.

Node B mempunyai subordinat, yaitu node E (node) dan F (node).

Node E dan node F merupakan subordinat simpul B.

b. Tingkat (Level) dan Kedalaman (Depth)

- Tingkat (level)

Root dinyatakan berada pada level 0 (namun ada juga

dibeberapa buku literatur lain menyebutnya level 1).

3

Page 4: Laporan Praktikum Resmi - Tree 2

INFO

- Kedalaman (depth)

Tree yang mempunyai posisi paling atas atau level teratas.

c. Derajat (Degree) Sebuah Node

Degree pada sebuah node menyatakan jumlah subordinat dari node

tersebut.

Untuk tree yang dicontohkan pada gambar diatas :

Node A : degree = 3.

Node B : degree = 2.

Node C : degree = 0.

Node D : degree = 3.

B. Pohon Biner (Binary Tree)

Pohon Biner adalah sebuah tree yang pada masing-masing

simpulnya hanya dapat memiliki maksimum 2 simpul anak, tidak boleh

lebih. Pada pohon biner umumnya kedua node anak (child) disebut dengan

posisinya, yaitu subordinat kiri (left child) dan subordinat kanan (right

child).

Ada banyak cara dalam mengilustrasikan struktur sebuah node

binary tree, namum yang paling umum adalah ilustrasi seperti pada

gambar di bawah ini.

4

Page 5: Laporan Praktikum Resmi - Tree 2

C

F

A

B

D E G

Left Right

a. Pohon Biner dengan Depth 3

Ilustrasi gambar di bawah ini merupakan contoh dari pohon biner

dengan depth = 3.

b. Stricly Binary Tree

Stricly Binary Tree adalah pohon biner yang semua node-nya

(kecuali simpul leaf) mempunyai lengkap node subordinat kiri dan node

subordinat kanan.

c. Complete Binary Tree

Complete Binary Tree dengan depth = d adalah pohon biner stricly

binary tree, dimana semua leaf hanya berada pada level d. Maka, pada

completely binary tree berlaku:

Pada level k jumlah node

n=2^k

Untuk tree dengan depth d, maka jumlah node

5

Page 6: Laporan Praktikum Resmi - Tree 2

n=2^(d+1)-1

Untuk tree dengan depth d, maka jumlah node leaf

n=2^d

Untuk tree dengan depth d, maka jumlah node bukan leaf

n=(2^d)-1

Bila jumlah seluruh node=n, maka depth tree adalah

d=log2(n+1)-1

Complete Binary Tree dengan depth = d, memiliki cirri-ciri:

Setiap node yang berada di bawah d-1, memiliki 2 subordinat.

Jika pada level d-1 subtree kanan ada node yang mempunyai

subordinat, maka setiap node pada level d-1 subtree kiri harus

memiliki subordinat kiri dan kanan.

d. Balance Binary Tree

Balance Binary Tree atau pohon biner seimbang atau biasa disebut

dengan pohon AVL adalah pohon biner dengan ketinggian subtree kiri dan

subtree kanan untuk setiap node superordinat paling banyak selisih 1.

AVL Tree muncul untuk menyeimbangkan Binary Search Tree . Dengan

AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan

disederhanakan.

Selain AVL Tree, terdapat pula Height Balanced and Tree, yakni

Binary Search Tree yang memiliki perbedaan level antara subtree kiri dan

subtree kanan maksimal adalah n. Sehingga AVL Tree adalah Height

Balanced 1 Tree.

Untuk mempermudah menyeimbangkan tree, maka digunakan

simbol-simbol bantu.

- (tanda minus) : digunakan apabila subtree kiri lebih panjang dari

subtree kanan.

+ (tanda plus) : digunakan apabila subtree kanan lebih panjang

dari subtree kiri.

6

Page 7: Laporan Praktikum Resmi - Tree 2

0 (nol) : digunakan apabila subtree kanan dan subtree kiri

memiliki height yang sama.

C. Penomoran Node Pohon Biner

Untuk melakukan konversi, telah disepakati cara penomoran setiap

node dalam binary tree sebagai berikut:

● jika sebuah node bernomor n, maka subordinat kiri bernomor 2n dan

subordinat kanan bernomor 2n+1.

● dengan mengetahui dari nomor setiap node maka sebuah binary tree

dapat direpresentasikan ke dalam sebuah array satu dimensi.

D. Operasi Pada Pohon Biner

Operasi pada binary tree merupakan satu rangkaian proses yang

dapat dibagi menjadi beberapa bagian operasi (fungsi) seperti:

- Inisialisasi

- Pembuatan sebuah node

- Pembuatan node akar

- Penambahan node baru

- Penghapusan node dari sebuah tree

- Pembacaan atau penelusuran binary tree

Pembagian ini bukan berdasarkan urutan proses, namun hanya

berdasarkan fungsinya yang berbeda. Sebelum proses di atas dapat

dilakukan, tentunya segala sesuatu yang diperlukan harus disiapkan

terlebih dahulu, antara lain mendeklarasikan struktur node dan semua

pointer yang diperlukan.

E. Proses Inisialisasi

Inisialisasi yang dimaksud adalah pemberian nilai awal pada suatu

variabel atau kondisi yang dapat digunakan sebagai cirri suatu kondisi.

BAB II

7

Page 8: Laporan Praktikum Resmi - Tree 2

PENJELASAN PROGRAM

1. Latihan Praktikum

Pada bab ini akan membahas tentang listing program yang telah

digunakan untuk latihan pada pertemuan kedua. Latihan yang dilakukan

mencakup pada Listing Program Tree.

Listing Program Tree

/* * Program-Tree(Lagi).cpp * * Created on: Sep 19, 2014 * Author: home */

#include <iostream>#include <malloc.h>#include <conio.h>#define Nil NULLusing namespace std;

struct nod{

struct nod *left;char data;struct nod *right;

};

typedef struct nod NOD;typedef NOD POKOK;

NOD *NodBaru(char item){

NOD *n;n=(NOD *) malloc (sizeof(NOD));if(n !=Nil){

n->data=item;n->left=Nil;n->right=Nil;

}return n;

}

void BinaPokok(POKOK **T){

8

Page 9: Laporan Praktikum Resmi - Tree 2

*T=Nil;}

typedef enum {FALSE=0, TRUE=1} BOOL;

BOOL PokokKosong(POKOK *T){

return((BOOL)(T==Nil));}

void TambahNod(NOD **p, char item){

NOD *n;n=NodBaru(item);*p=n;

}

void preOrder(POKOK *T){

if(!PokokKosong(T)){

cout<<" "<<T->data;preOrder(T->left);preOrder(T->right);

}}

void inOrder(POKOK *T){

if(!PokokKosong(T)){

inOrder(T->left);cout<<" "<<T->data;inOrder(T->right);

}}

void postOrder(POKOK *T){

if(!PokokKosong(T)){

postOrder(T->left);postOrder(T->right);cout<<" "<<T->data;

}}

int main(){

POKOK *kelapa;char buah;

BinaPokok(&kelapa);TambahNod(&kelapa, buah='M');TambahNod(&kelapa->left, buah='E');

9

Page 10: Laporan Praktikum Resmi - Tree 2

TambahNod(&kelapa->left->right, buah='I');TambahNod(&kelapa->right, buah='L');TambahNod(&kelapa->right, buah='O');TambahNod(&kelapa->right->left, buah='D');

cout<<"Tampilan secara PreOrder: ";preOrder(kelapa);cout<<endl;cout<<"Tampilan secara InOrder: ";inOrder(kelapa);cout<<endl;cout<<"Tampilan secara PostOrder: ";postOrder(kelapa);cout<<endl;cout<<endl;

return 0;}

Hasil Output Program Tree

Penjelasan Program Tree

1. #include merupakan pengarah preprocessor yang berfungsi untuk

menginstruksikan compiler untuk menyertakan berkas C++ sebelum di

compile.

2. <iostream> adalah sebuah library yang berfungsi untuk memanggil library

C++. Library iostream berfungsi untuk input dan output (cin dan cout).

3. Using namespace std merupakan standart device.

4. main merupakan badan fungsi atau fungsi utama.

5. Struct merupakan struktur atau class.

6. Return 0 merupakan nilai balik suatu fungsi.

7. Cout berfungsi untuk menampilkan hasil output atau keluaran ke layar.

8. Cin berfungsi untuk menginputkan atau memasukan data.

9. Endl berfungsi untuk membuat baris baru atau new line sama seperti \n.

10

Page 11: Laporan Praktikum Resmi - Tree 2

10. struct nod{

struct nod *left;char data;struct nod *right;

};

Merupakan listing program tipe data abstrak struct dengan nama nod,

dimana tipe data dan variabel yang di deklarasikan adalah struct, char

untuk karakter, pointer left dan right sebagai tempat penampungan atau

penyimpanan sementara yang nantinya akan dipanggil.

11. typedef struct nod NOD;typedef NOD POKOK;

merupakan tipe data abstrak typedef struct dimana nama structnya adalah

nod. Typedef merupakan tipe data abstrak dimana NOD merupakan tipe

data lama dan POKOK adalah tipe data baru.

12. NOD *NodBaru(char item){

NOD *n;n=(NOD *) malloc (sizeof(NOD));if(n !=Nil){

n->data=item;n->left=Nil;n->right=Nil;

}return n;

}

Merupakan listing program yang berfungsi untuk membuat node baru

dimana tipe datanya adalah NOD dengan variabel NodBaru sebagai

pointer serta variabel item bertipe char atau karakter.

13. void BinaPokok(POKOK **T){

*T=Nil;}

Merupakan fungsi void bernama BinaPokok dengan variabel T sebagai

pointer yang bertipe data POKOK. Variabel T diberi value Nil.

14. Void TambahNod berfungsi untuk menambah node.

11

Page 12: Laporan Praktikum Resmi - Tree 2

15. Void preOrder berfungsi untuk menampilkan data yang telah ditambahkan

dalam suatu node akar (root) dan node daun (leaf).

16. Void inOrder berfungsi untuk menampilkan data yang telah ditambahkan.

17. Void postOrder berfungsi untuk menampilkan data. Data yang ditampilkan

pertama yaitu data yang paling terakhir ditambahkan (FIFO).

18. POKOK merupakan tipe data abstrak dengan variabel keluarga yang

berfungsi sebagai pointer.

19. Char buah merupakan tipe data karakter dengan variabel buah.

20. TambahNod(&kelapa, buah=’M’ merupakan pemanggilan prosedur

tambah pada main program atau program utama dengan pembentukan

node baru sebagai root atau akar dimana variabel buah diberikan value M

yang nantinyaberfungsi sebagai output atau keluaran.

21. TambahNod(&kelapa, buah=’E’ merupakan pemanggilan prosedur tambah

pada main program atau program utama dengan pembentukan node baru

sebagai anak dari root ke arah kiri, dimana variabel buah diberikan value E

yang nantinya berfungsi sebagai output atau keluaran.

22. TambahNod(&kelapa, buah=’I’ merupakan pemanggilan prosedur tambah

pada main program atau program utama dengan pembentukan node baru

sebagai anak dari root ke arah kiri lalu kanan, dimana variabel buah

diberikan value I yang nantinya berfungsi sebagai output atau keluaran.

23. TambahNod(&kelapa, buah=’L’ merupakan pemanggilan prosedur tambah

pada main program atau program utama dengan pembentukan node baru

sebagai anak dari root ke arah kanan, dimana variabel buah diberikan

value L yang nantinya berfungsi sebagai output atau keluaran.

24. TambahNod(&kelapa, buah=’O’ merupakan pemanggilan prosedur

tambah pada main program atau program utama dengan pembentukan

node baru sebagai anak dari root ke arah kanan, dimana variabel buah

diberikan value O yang nantinya berfungsi sebagai output atau keluaran.

25. TambahNod(&kelapa, buah=’D’ merupakan pemanggilan prosedur

tambah pada main program atau program utama dengan pembentukan

node baru sebagai anak dari root ke arah kanan lalu kiri, dimana variabel

12

Page 13: Laporan Praktikum Resmi - Tree 2

buah diberikan value D yang nantinya berfungsi sebagai output atau

keluaran.

26. preorder(kelapa) merupakan pemanggilan prosedur preorder pada main

program atau program utama

27. inorder(kelapa) adalah pemanggilan prosedur inorder pada main program

atau program utama.

28. postorder(kelapa) adalah pemanggilan prosedur inorder pada main

program atau program utama.

2. Tugas Praktikum

Pada bab ini, penulis akan membahas tugas praktikum yang

diberikan oleh dosen tentang listing program tree.

Listing Program Tree

/* * Program-Tree(Tugas_Root).cpp * * Created on: Sep 19, 2014 * Author: home

*/

#include <iostream>#include <conio.h>#include <malloc.h>#define Nil NULLusing namespace std;

struct nod{

struct nod *kiri;char data;struct nod *kanan;

};

typedef struct nod NOD;typedef NOD POKOK;

NOD *NodBaru(char item){

NOD *n;n=(NOD *) malloc (sizeof(NOD));if(n !=Nil){

13

Page 14: Laporan Praktikum Resmi - Tree 2

n->data=item;n->kiri=Nil;n->kanan=Nil;

}return n;

}

void BinaPokok(POKOK **T){

*T=Nil;}

typedef enum {FALSE=0, TRUE=1} BOOL;

BOOL PokokKosong(POKOK *T){

return((BOOL)(T==Nil));}

void TambahNod(NOD **p, char item){

NOD *n;n=NodBaru(item);*p=n;

}

void preOrder(POKOK *T){

if(!PokokKosong(T)){

cout<<" "<<T->data;preOrder(T->kiri);preOrder(T->kanan);

}}

void inOrder(POKOK *T){

if(!PokokKosong(T)){

inOrder(T->kiri);cout<<" "<<T->data;inOrder(T->kanan);

}}

void postOrder(POKOK *T){

if(!PokokKosong(T)){

postOrder(T->kiri);postOrder(T->kanan);cout<<" "<<T->data;

}}

14

Page 15: Laporan Praktikum Resmi - Tree 2

int main(){

POKOK *keluarga;char A[20], B[20], C[20], D[20], E[20], F[20], G[20];

BinaPokok(&keluarga);TambahNod(&keluarga, A[20]);TambahNod(&keluarga->kiri, B[20]);TambahNod(&keluarga->kanan, C[20]);TambahNod(&keluarga->kiri->kiri, D[20]);TambahNod(&keluarga->kiri->kanan, E[20]);TambahNod(&keluarga->kanan->kiri, F[20]);TambahNod(&keluarga->kanan->kanan, G[20]);

cout<<"Masukan nama kakek: ";cin>>A;cout<<endl;

cout<<"Masukan nama ayah: ";cin>>B;cout<<endl;

cout<<"Masukan nama om: ";cin>>C;cout<<endl;

cout<<"Masukan nama anda: ";cin>>D;cout<<endl;

cout<<"Masukan nama adik: ";cin>>E;cout<<endl;

cout<<"Masukan nama saudara pertama: ";cin>>F;cout<<endl;

cout<<"Masukan nama saudara kedua: ";cin>>G;cout<<endl;

cout<<"Tampilan secara PreOrder: ";preOrder(keluarga);cout<<endl;cout<<"Tampilan secara InOrder: ";inOrder(keluarga);cout<<endl;cout<<"Tampilan secara PostOrder: ";postOrder(keluarga);cout<<endl;cout<<endl;

15

Page 16: Laporan Praktikum Resmi - Tree 2

return 0;}

Hasil Output Program Tree

Penjelasan Program Tree

1. #include merupakan pengarah preprocessor yang berfungsi untuk

menginstruksikan compiler untuk menyertakan berkas C++ sebelum di

compile.

2. <iostream> adalah sebuah library yang berfungsi untuk memanggil library

C++. Library iostream berfungsi untuk input dan output (cin dan cout).

3. Using namespace std merupakan standart device.

4. main merupakan badan fungsi atau fungsi utama.

5. Struct merupakan struktur atau class.

6. Return 0 merupakan nilai balik suatu fungsi.

7. Cout berfungsi untuk menampilkan hasil output atau keluaran ke layar.

8. Cin berfungsi untuk menginputkan atau memasukan data.

9. Endl berfungsi untuk membuat baris baru atau new line sama seperti \n.

10. struct nod{

struct nod *kiri;

16

Page 17: Laporan Praktikum Resmi - Tree 2

char data;struct nod *kanan;

};

Merupakan listing program tipe data abstrak struct dengan nama nod,

dimana tipe data dan variabel yang di deklarasikan adalah struct, char

untuk karakter, pointer kiri dan kanan sebagai tempat penampungan atau

penyimpanan sementara yang nantinya akan dipanggil.

11. typedef struct nod NOD;typedef NOD POKOK;

merupakan tipe data abstrak typedef struct dimana nama structnya adalah

nod. Typedef merupakan tipe data abstrak dimana NOD merupakan tipe

data lama dan POKOK adalah tipe data baru.

12. NOD *NodBaru(char item){

NOD *n;n=(NOD *) malloc (sizeof(NOD));if(n !=Nil){

n->data=item;n->kiri=Nil;n->kanan=Nil;

}return n;

}

Merupakan listing program yang berfungsi untuk membuat node baru

dimana tipe datanya adalah NOD dengan variabel NodBaru sebagai

pointer serta variabel item bertipe char atau karakter.

13. void BinaPokok(POKOK **T){

*T=Nil;}

Merupakan fungsi void bernama BinaPokok dengan variabel T sebagai

pointer yang bertipe data POKOK. Variabel T diberi value Nil.

14. Void TambahNod berfungsi untuk menambah node.

15. Void preOrder berfungsi untuk menampilkan data yang telah ditambahkan

dalam suatu node akar (root) dan node daun (leaf).

16. Void inOrder berfungsi untuk menampilkan data yang telah ditambahkan. 17

Page 18: Laporan Praktikum Resmi - Tree 2

17. Void postOrder berfungsi untuk menampilkan data. Data yang ditampilkan

pertama yaitu data yang paling terakhir ditambahkan (FIFO).

18. POKOK merupakan tipe data abstrak dengan variabel keluarga yang

berfungsi sebagai pointer.

19. A[20] merupakan variabel A dengan elemen 10 atau bisa disebut sebagai

array. Angka 20 adalah angka dimana batas maksimal jumlah karakter

yang bisa diinputkan oleh user.

20. TambahNod(&keluarga, A[20]) merupakan pemanggilan prosedur tambah

pada main program atau program utama. Di sini A sebagai root.

21. TambahNod(&keluarga->kiri, B[20]) merupakan pemanggilan prosedur

tambah pada main program atau program utama dengan pembentukan

node baru ke arah kiri dari root.

22. TambahNod(&keluarga, C[20]) merupakan pemanggilan prosedur tambah

pada main program atau program utama dengan pembentukan node baru

ke arah kanan dari root.

23. TambahNod(&keluarga, D[20]) merupakan pemanggilan prosedur tambah

pada main program atau program utama dengan pembentukan node baru

ke arah kiri kemudian bercabang lagi ke arah kiri dari root.

24. TambahNod(&keluarga, E[20]) merupakan pemanggilan prosedur tambah

pada main program atau program utama dengan pembentukan node baru

ke arah kiri kemudian bercabang lagi ke arah kanan dari root.

25. TambahNod(&keluarga, F[20]) merupakan pemanggilan prosedur tambah

pada main program atau program utama dengan pembentukan node baru

ke arah kanan kemudian bercabang lagi ke arah kiri dari root.

26. TambahNod(&keluarga, G[20]) merupakan pemanggilan prosedur tambah

pada main program atau program utama dengan pembentukan node baru

ke arah kanan kemudian bercabang lagi ke arah kanan dari root.

27. preorder(keluarga) merupakan pemanggilan prosedur preorder pada main

program atau program utama

28. inorder(keluarga) adalah pemanggilan prosedur inorder pada main

program atau program utama.

18

Page 19: Laporan Praktikum Resmi - Tree 2

29. postorder(kelapa) adalah pemanggilan prosedur inorder pada main

program atau program utama.

BAB III

KESIMPULAN

19

Page 20: Laporan Praktikum Resmi - Tree 2

Dari program di atas, output program pada latihan praktikum tidak

memunculkan huruf L. Hal ini disebabkan karena pada main program, proses

pemanggilan dari huruf L dan O memiliki struktur node yang sama yaitu right,

sehingga program tidak bisa membaca atau menampilkan huruf L. Program

sebenarnya dapat membaca huruf L, tetapi karena struktur node dari huruf O

adalah sama yaitu right, maka huruf L tertimpa oleh huruf O, sehingga hasil

output atau keluarannya adalah huruf M, E, I, O, D saja.

Untuk menampilkan huruf L, harus mengubah struktur dari node, bahkan

semua node, agar jangan sampai huruf yang satu tertimpa dengan huruf yang lain.

Hal ini bisa menyebabkan output program tidak sesuai dengan apa yang

seharusnya ditampilkan.

Di dalam program tugas praktikum, user seharusnya bisa melihat output

dari inorder, preorder dan postorder. Kenyataannya, tampilan hasil dari inorder,

preorder dan postorder hanya berupa simbol-simbol. Penulis mencoba mengubah

tipe data dari tipe data char menjadi string. Untuk mengubah tipe data, tidak dapat

mengubah hanya beberapa tipe data saja, tetapi harus diubah secara keseluruhan.

Misalnya ingin mengganti tipe data char menjadi string, maka dalam satu program

tersebut harus diubah menjadi string semua, jika tidak, maka akan eror.

Tipe data dalam program tugas praktikum telah diubah menjadi string,

tetapi output tulisan postorder, inorder dan preorder tidak dapat muncul. Program

langsung berhenti pada output “Masukan nama saudara kedua: ” setelah itu

muncul pemberitahuan bahwa program tidak dapat dijalankan dan harus menutup

program eclipse. Untuk mengatasi hal ini, struktur node, tipe data serta

pemanggilan seharusnya bisa diperbaiki atau diubah agar output pada postorder,

inorder dan preorder tidak hanya muncul simbol-simbol saja tetapi keluaran dari

inputan user.

BAB IV

DAFTAR PUSTAKA

20

Page 21: Laporan Praktikum Resmi - Tree 2

Ardhana, YM Kusuma. 2013. Struktur Data dalam Ilustrasi Eclips Indigo C ++.

Yogyakarta: CAPS (Center of Academic Publishing Service).

Kristanto, Andri. 2003. Struktur Data Dengan C++. Yogyakarta: Graha Ilmu.

Kadir, Abdul. 2012. Buku Pintar C++ untuk Pemula. Jakarta: MediaKom

21