Algoritma adalah urutan
langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan
logis. Kata logis merupakan kata kunci dalam algoritma. Langkah-langkah dalam
algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar.
Dalam beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk
melakukan pekerjaan tertentu.
Stack (tumpukan) merupakan struktur data yang dalam
pengelolaan datanya bersifat Last In First Out (LIFO), yaitu data yang terakhir
dimasukkan akan dikeluarkan pertama kali. Data yang dimasukkan kedua dari
terakhir akan dikeluarkan yang kedua. Demikian seterusnya, sehingga data yang
pertama kali dimasukkan akan dikeluarkan terakhir (Barakbah, 2013).
Operasi Stack
a)
Push : digunakan untuk menambah item pada
stack pada tumpukan paling atas
b)
Pop : digunakan untuk mengambil item pada
stack pada tumpukan paling atas
c)
Clear : digunakan untuk mengosongkan stack
d)
IsEmpty : fungsi yang digunakan untuk
mengecek apakah stack sudah kosong
e)
IsFull : fungsi yang digunakan untuk
mengecek apakah stack sudah penuh.
Queue adalah struktur data linear seperti stack, hanya
saja penambahan dan penghapusan elemen dilakukan pada tempat yang berbeda.
Penambahan elemen dilakukan pada bagian belakang Queue, sedangkan penghapusan
elemen dilakukan pada bagian depan Queue. Mekanisme ini dikenal sebagai First
In First Out (FIFO). Beberapa contoh aplikasi queue atau antrian adalah antrian
printer, antrian kasir, dsb.
Struktur data queue setidaknya harus memiliki
operasi-operasi sebagai berikut :
a)
EnQueue Memasukkan data ke dalam antrian
b)
DeQueue Mengeluarkan data terdepan dari antrian
c)
Clear Menghapus seluruh antrian
d)
IsEmpty Memeriksa apakah antrian kosong
e)
IsFull Memeriksa apakah antrian penuh
Tree adalah kumpulan node
yang saling terhubung satu sama lain dalam suatu kesatuan yang membentuk
layakya struktur sebuah pohon. Struktur pohon adalah suatu cara
merepresentasikan suatu struktur hirarki (one-to-many) secara grafis yang mirip
sebuah pohon, walaupun pohon tersebut hanya tampak sebagai kumpulan node-node
dari atas ke bawah. Suatu struktur data yang tidak linier yang menggambarkan
hubungan yang hirarkis (one-to-many) dan tidak linier antara elemen-elmennya.
Pengurutan
data menggunakan metode Tree C++, memiliki beberapa istilah/cara yang berbeda.
yaitu:
1.
PreOrder : Cetak node - Kunjungi node kiri -
Kunjungi node kanan.
2.
InOrder : Kunjungi node kiri - Cetak node -
Kunjungi node kanan.
3.
PostOrder : Kunjungi node kiri - Kunjungi node
kanan - Cetak node.
Berikut source kodenya :
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
//pendeklarasian struct sebuah tree awal
struct Node{
int
data;
Node *kiri;
Node *kanan;
};
//procedure untuk menambahkan node baru
void tambah(Node **root, int databaru)
{
//jika root masih kosong
if((*root) == NULL)
{
//pembuatan node baru
Node *baru;
//pengalokasian memori dari node yang telah dibuat
baru = new Node;
//inisialisasi awal node yang baru dibuat
baru->data = databaru;
baru->kiri = NULL;
baru->kanan = NULL;
(*root) = baru;
(*root)->kiri = NULL;
(*root)->kanan = NULL;
cout<<"Data bertambah!"<<endl;
}
//jika
data yang akan dimasukkan lebih kecil daripada elemen root, maka akan
diletakkan di node sebelah kiri.
else if(databaru<(*root)->data)
tambah(&(*root)->kiri, databaru);
//jika data yang akan dimasukkan lebih besar daripada elemen root,
maka akan diletakkan di node sebelah kanan
else if(databaru>(*root)->data)
tambah(&(*root)->kanan, databaru);
//jika saat dicek data yang akan dimasukkan memiliki nilai yang sama
dengan data pada root
else if(databaru == (*root)->data)
cout<<"Data sudah ada!"<<endl;
}
//procedure yang digunakan untuk mencetak tree
secara preOrder
void preOrder(Node *root)
{
if(root != NULL){
cout<<"\t"<<root->data;
preOrder(root->kiri);
preOrder(root->kanan);
}
}
//procedure yang digunakan untuk mencetak tree
secara postOrder
void postOrder(Node *root)
{
if(root != NULL){
postOrder(root->kiri);
postOrder(root->kanan);
cout<<"\t"<<root->data;
}
}
//program utama
main()
{
//deklarasikan variabel
int
pil, data;
Node *pohon;
pohon = NULL; //inisialisasi node pohon
//perulangan do-while
do
{
system("cls"); //bersihkan layar
cout<<"\t======================";
cout<<"\n\t PROGRAM
BINARY TREE";
cout<<"\n\t======================";
cout<<"\n1. Tambah\n";
cout<<"2. Lihat pre-order\n";
cout<<"3. Lihat post-order\n";
cout<<"4. Exit\n";
cout<<"Pilihan : ";
cin>>pil;
switch(pil)
{
//jika pil bernilai 1
case 1 :
cout<<"\nINPUT :
";
cout<<"\n-------";
cout<<"\nData baru :
";
cin>>data;
//panggil fungsi untuk
menambah node yang berisi data pada tree
tambah(&pohon, data);
break;
//jika pil bernilai 2
case 2 :
cout<<"\nOUTPUT
PRE ORDER : ";
cout<<"\n------------------\n";
if(pohon!=NULL)
//panggil fungsi untuk
mencetak data secara preOrder
preOrder(pohon);
else
cout<<"Masih kosong!";
break;
//jika pil bernilai 3
case 3 :
cout<<"\nOUTPUT
POST ORDER : ";
cout<<"\n------------------\n";
if(pohon!=NULL)
//panggil fungsi untuk
mencetak data secara postOrder
postOrder(pohon);
else
cout<<"Masih kosong!";
break;
}
_getch();
}while(pil != 4); //akan diulang jika input tidak samadengan 4
getch();
}
|
Tidak ada komentar: