Anda di halaman 1dari 13

LAPORAN PRAKTIKUM RESMI

TREE BAGIAN IV
Disusun oleh :
Fransisca Febriyani
201301021
Dosen Pengampu :
Yosef Murya Kusuma Ardhana, S.T, M.Kom
JURUSANSISTEM INFORMASI
SEKOLAHTINGGI ILMU KOMPUTERYOS SUDARSO
PURWOKERTO
2014
2
BAB I
TEORI DASAR
1. Cara insert level per level dengan cara lain
Dilakukan dengan membuat pointer /link secara langsung node-node ke dalam satu level.
Link
Right
Left
Instruksinya mendeklarasi mendeklarasikan struktur node dan pointer yang diperlukan :
struct Node
{
char INFO,
struct Node *Left;
struct Node *Right;
struct Node *Link;
};
typedef struct Node Simpul;
Simpul *P, *Root, Current, LastCurrent, LastKiri;
3
const int kiri=0, kanan=1;
char X;
int i, n, Flag, FlagHabis, Level;
Output:
2. Fungsi Inisialisasi Tree
void Inisialisasi()
{
Root=NULL;
P=NULL;
}
NULL = tree kosong.
3. Fungsi untuk membuat node void BuatSimpul (char X)
{
P=(Simpul*) malloc (sizeof(Simpul));
if(P!=NULL)
{
P->INFO=X;
P->Left=NULL;
P->Right=NULL;
P->Link=NULL;
}
4
else
{
printf("Memori heap full");
exit(1);
}
}
4. Fungsi membuat node root
void BuatSimpulAkar()
{
{
else
if(Root==NULL)
if(P != NULL)
{
Root=P;
LastCurrent=Root;
LastKiri=Root;
Flag=kiri;
FlagHabis=1;
level=0;
n=1;
}
{ printf("Node belum ada");
exit(1);
}
else
exit(1);
{
printf("Tree sudah ada");
}
}
5
BAB II
PENJELASAN PROGRAM
Pada bab ini akan dijelaskan tentang Program Tree Bagian II dan Program Silsilah Keluarga.
Listing Program Tree Bagian II.
#include <iostream>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
using namespace std;
struct Node{
struct Node *Left;
char INFO;
struct Node *Right;
struct Node *Link;
};
typedef struct Node Simpul;
Simpul *P, *Q, *Root, *LastCurrent, *Current, *LastKiri;
const int kiri=0, kanan=1;
int i, n, Flag, FlagHabis, Level;
char X, A[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void Inisialisasi(){
Root=NULL; P=NULL;
}
void BuatSimpul(char X){
P=(Simpul*)malloc(sizeof(Simpul));
if(P!=NULL)
{P->INFO=X;
P->Left=NULL;
P->Right=NULL; P->Link=NULL;
}
else{
cout<<"Memory sudah penuh";
}
}
void BuatSimpulAkar(){
if(Root==NULL){
if(P != NULL){
Root=P;
LastCurrent=Root; LastKiri=Root; n=1;
Level=0; FlagHabis=1; Flag=kiri;
6
}
else{
cout<<"Node belum ada";
exit(1);
}
}
else{
cout<<"Tree sudah ada";
exit(1);
}
}
void TambahSimpul(){
if(Root != NULL){
n=n+1;
if(FlagHabis==1){
FlagHabis=0; Current=P; LastCurrent->Left=P; Flag=kanan;
Level=Level+1;
}
else{
if(Flag==kiri){
Flag=kanan;
LastCurrent->Left=P; Current->Link=P; Current=P;
}
else{
LastCurrent->Right=P; Current->Link=P;
Flag=kiri;
if( n==(pow(2, Level+1)-1)){
FlagHabis=1;
LastCurrent=LastKiri->Left;
LastKiri=LastKiri->Left;
}
else{
Current->Link=P; Current=P;
LastCurrent=LastCurrent->Link;
}
}
}
}
else
cout<<"Tree belum ada";
}
void PreOrder(Simpul *T){
if(T != NULL){
cout<<T->INFO;
7
PreOrder(T->Left); PreOrder(T->Right);
}
}
void InOrder(Simpul *T){
if(T != NULL){
InOrder(T->Left);
cout<<T->INFO; InOrder(T->Right);
}
}
void PostOrder(Simpul *T){
if(T != NULL){
PostOrder(T->Left);
PostOrder(T->Right);
cout<<T->INFO;
}
}
void BacaPerLevel(){
Q=Root; LastKiri=Root; cout<<Q->INFO;
while(Q->Left != NULL){
cout<<"\n";
Q=Q->Left;
LastKiri=LastKiri->Left;
cout<<Q->INFO;
while(Q->Link != NULL){
Q=Q->Link;
cout<<Q->INFO;
}
Q=LastKiri;
}
}
int main(){
i=0; X=A[i];
Inisialisasi();
BuatSimpul(X);
BuatSimpulAkar();
for (i=1; i<=25; i++){
X=A[i];
BuatSimpul(X);
TambahSimpul();
}
PreOrder(Root);
cout<<"\n";
InOrder(Root);
8
cout<<"\n";
PostOrder(Root);
cout<<"\n";
BacaPerLevel();
return 0;
}
Output Program Tree Bagian IV.
Penjelasan Program Tree Bagian IV.
1. #include <iostream> adalah deklarasi yang diperlukan untuk penggunaan c input (cin)
dan c output (cout).
2. #include <stdlib.h>
3. #include <ctype.h>
4. #include <math.h>
5. using namespace std; merupakan statement tentang namespace yang digunakan
bernama std. Tujuan dari penulisan kode ini adalah untuk melakukan penulisan kode langsung
tanpa penulisan scope std::.
6. struct Node{
struct Node *Left;
char INFO;
struct Node *Right;
struct Node *Link;
};
7. typedef struct Node Simpul; adalah tipe data abstrak untuk memberi nama alias
pada tipe data Node menjadi Simpul.
8. Simpul *P, *Q, *Root, *LastCurrent, *Current, *LastKiri;
9. const int kiri=0, kanan=1;
10. int i, n, Flag, FlagHabis, Level; adalah tipe data integer atau bilangan bulat
untuk variable i, j, Flag, FlagHabis dan Level.
11. char X, A[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
12. void Inisialisasi(){
Root=NULL; P=NULL;
} pendeklarasian fungsi Inisialisasi.
13. void BuatSimpul(char X){
P=(Simpul*)malloc(sizeof(Simpul));
if(P!=NULL)
9
{P->INFO=X;
P->Left=NULL;
P->Right=NULL; P->Link=NULL;
}
else{
cout<<"Memory sudah penuh";
}
} pendeklarasian fungsi BuatSimpul dengan variable X.
14. void BuatSimpulAkar(){
if(Root==NULL){
if(P != NULL){
Root=P;
LastCurrent=Root; LastKiri=Root; n=1;
Level=0; FlagHabis=1; Flag=kiri;
}
else{
cout<<"Node belum ada";
exit(1);
}
}
else{
cout<<"Tree sudah ada";
exit(1);
}
} pendeklarasian fungsi BuatSimpulAkar.
15. void TambahSimpul(){
if(Root != NULL){
n=n+1;
if(FlagHabis==1){
FlagHabis=0;
Current=P;
LastCurrent->Left=P;
Flag=kanan;
Level=Level+1;
}
else{
if(Flag==kiri){
Flag=kanan;
LastCurrent->Left=P; Current->Link=P; Current=P;
}
else{
LastCurrent->Right=P; Current->Link=P;
Flag=kiri;
if( n==(pow(2, Level+1)-1)){
FlagHabis=1;
LastCurrent=LastKiri->Left;
LastKiri=LastKiri->Left;
10
}
else{
Current->Link=P; Current=P; LastCurrent=LastCurrent->Link;
}
}
}
}
else
cout<<"Tree belum ada";
} pendeklarasian fungsi TambahSimpul.
16. void PreOrder(Simpul *T){
if(T != NULL){
cout<<T->INFO;
PreOrder(T->Left); PreOrder(T->Right);
}
} pendeklarasian fungsi PreOrder.
17. void InOrder(Simpul *T){
if(T != NULL){
InOrder(T->Left);
cout<<T->INFO; InOrder(T->Right);
}
} pendeklarasian fungsi InOrder.
18. void PostOrder(Simpul *T){
if(T != NULL){
PostOrder(T->Left);
PostOrder(T->Right);
cout<<T->INFO;
}
} pendeklarasian fungsi PostOrder.
19. void BacaPerLevel(){
Q=Root; LastKiri=Root; cout<<Q->INFO;
while(Q->Left != NULL){
cout<<"\n";
Q=Q->Left;
LastKiri=LastKiri->Left;
cout<<Q->INFO;
while(Q->Link != NULL){
Q=Q->Link;
cout<<Q->INFO;
}
Q=LastKiri;
}
} pendeklarasian fungsi BacaperLevel.
20. int main(){ adalah awal dan akhir eksekusi program.
21. i=0; X=A[i];
22. Inisialisasi();berfungsi untuk memanggil fungsi Inisialisasi.
11
23. BuatSimpul(X); berfungsi untuk memanggil fungsi BuatSimpul dengan variabel X.
24. BuatSimpulAkar();berfungsi untuk memanggil fungsi BuatSimpulAkar.
25. for (i=1; i<=25; i++) adalah statement perulangan.
26. X=A[i];
27. BuatSimpul(X); berfungsi untuk memanggil fungsi BuatSimpul dengan variabel X.
28. TambahSimpul();berfungsi untuk memanggil fungsi TambahSimpul.
29. PreOrder(Root); berfungsi untuk memanggil fungsi PreOrder dengan variabel Root.
30. InOrder(Root); berfungsi untuk memanggil fungsi InOrder dengan variabel Root.
31. PostOrder(Root); berfungsi untuk memanggil fungsi PostOrder dengan variabel
Root.
32. BacaPerLevel();berfungsi untuk memanggil fungsi BacaPerLevel.
33. return 0; untuk memberikan nilai balik dan menyatakan bahwa program berakhir dengan
normal tanpa error.
BAB III
KESIMPULAN
12
Praktikum pada Tree bagian IV kita diminta untuk menganalisa program yang sudah ada
kemudian temukan kesalahan atau errornya dan perbaiki. Maka kita dapatkan beberapa
kesalahn pada program, sebagai berikut :
1. Program komplier Eclipse Indigo C++ tidak terdapat library stdio.h dan conio.h
2. Harus terdapat usingnamespace std;
3. Menggunakan cout bukan printf karena library yang kita gunakan adalah iostream.
4. Pada body program masih terdapat kekurangan.
5. Menggunakan return 0; bukan getche();
BAB IV
DAFTAR PUSTAKA
13
Murya Kusuma Ardhana, Yosef dan Gregorius Airlangga. 2011. Algoritma Pemrograman C++
Dalam Ilustrasi. Jasakom : Yogyakarta.
Murya Kusuma Ardhana, Yosef. 2013. Struktur Data Dalam Ilustrasi Eclipse Indigo C++.
CAPS : Yogyakarta
Suarga. 2012. Algoritma dan Pemrograman. Andi : Yogyakarta.

Anda mungkin juga menyukai