You are on page 1of 9

LAPORAN PRAKTIKUM RESMI

BAB IV
THREE PART 4





Disusun oleh :
Analis Hasby Azizah
201301043

Dosen pengampu :
Yosef Murya Kusuma Ardhana.S.T., M.Kom



JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014

BAB I
DASAR TEORI

A. Insert Level Per Level Dengan Cara Lain
Insert per level dengan cara lain ini dengan membuat pointer (link secara langsung)
node node dalam satu level .( YM Kusuma Ardhana, Structur Data Dalam Ilustrasi
Eclipse Indigo C++)
Intruksi 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;
const int kiri=0, kanan=1;
char X;
int i, n, Flag, FlagHabis, Level;
Fungsi untuk Inisialisasi tree
void Inisialisasi()
{
Root=NULL;
P=NULL;
}
Catatan : Bila root berisi NULL berarti tree belum ada.
Fungsi untuk membuat sebuah Node
void BuatSimpul (char X)
{
P=(Simpul*)malloc(sizeof(Simpul));
if(P!=NULL)
{
P->INFO=X;
P->Left=NULL; // sebuah node awal sudah dibuat, ditunjuk oleh pointer p//
P->Right=NULL;
P->Link=NULL;
}
else
{
cout<<Mempri heap full;
exit(1);
}
}
Fungsi membuat node root
void BuatSimpulAkar()
{
if(Root==NULL)
{
if(P!=NULL) //sebuah node sudah dibuat//
{
Root=P;
LastCurrent=Root //Lascurrent menunjuk node terakhir (sebelumnya) yang di-current
LastKiri=Root; //Lastkiri menunjuk node paling kiri//
Flag=kiri;
FlagHabis=1; // node pada level tersebuh sudah komplit//
level=0; //node terakhir berada di level nol//
n=1;
}
else
{ cout<<Node belum ada;
exit (1);
else
{
cout<<Tree sudah ada;
exit(1);
}
}


















BAB II
PRAKTIKUM

Listing Program 1.1
/*
* tree4.cpp
*
* Created on: Oct 08, 2014
* Author: analis
*/


#include <iostream>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <malloc.h>
using namespace std;
struct Node
{
char INFO;
struct Node *Left;
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 item)
{
P=(Simpul*) malloc(sizeof(Simpul));
if(P!=NULL)
{
P->INFO=item;
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;
}
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=LastCurrent->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;
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)
{
PreOrder(T->Left);
PreOrder(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);
cout<<"\n";
PostOrder(Root);
cout<<"\n";
BacaPerLevel();
return 0;
}

Output Program 4.1


Penjelasan Program 4.1
Berukut penjelasan dari Listing Program 4.1 :
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat
sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah
atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk
menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum
kompilasi dimulai
3. Iostream digunakan untuk menampilkan deklarasi yang ada pada cout.
4. Conio digunakan untuk menampilkan fungsi gech
5. Malloc merupakan fungsi standart untuk mengalokasikan memori.
6. Using namespace std; digunakan untuk menampilkan perintah perintah yang ada pada
library standard.
7. Fungsi Main adalah nama judul fungsi.
8. Struct merupakan tipe data abstrak
9. Cout (character out) dipakai untuk menampilkan text di layar monitor anda.
10. Tanda <<, yang diketahui sebagai operator pemasukan (insertion operators).
11. Tanda { pada fungsi main() menyatakan awal eksekusi program. Adapun } pada fungsi
main() menyatakan akhir eksekusi program.
12. Tanda semicolon ; digunakan untuk mengakhiri sebuah pernyataan.

























BAB III
KESIMPULAN
Pada praktikum kali ini, untuk melakukan insert level per level pada tree kita harus
membuat pointer (link secara langsung) terlebih dahulu.

You might also like