laporan 7 - muhammad darmadi - j1f114076
DESCRIPTION
aTRANSCRIPT
LAPORAN PRAKTIKUM VII
ALGORITMA DAN STRUKTUR DATA
“STACK, QUEUE, DAN TREE”
Nama : Muhammad Darmadi
NIM : J1F114076
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS LAMBUNG MANGKURAT
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
PROGRAM STUDI S1 ILMU KOMPUTER
BANJARBARU
2015
12 TNR bold
Spasi 2.0
12 TNR bold
Spasi 2.0
BAB I
PENDAHULUAN
1.1 Tujuan
Tujuan dalam praktikum yang Keenam ini adalah :
1. Mengenal pengertian stack, queue, dan tree pada bahasa pemrograman C++
2. Memahami penggunaan stack, queue, dan tree pada bahasa pemrograman C+
+
3. Bisa Menggunakan stack, queue, dan tree dengan menggunakan linked list
pada bahasa pemrograman C++
4. Mengenal perbedaan stack, queue, dan tree dalam penggunaan linked list
pada bahasa pemrograman C++
1.2 Deklarasi
struct nama_simpul
{
Tipe_data nama_variabel;
struct nama_simpul *nama_simpul_selanjutnya;
}
1.3 Sintaks sederhana
#include <iostream>
BAB II
TINJAUAN PUSTAKA
1.1 Pengertian Stack
STACK adalah salah satu list linear dalam struktur data yang digunakan
untuk menyimpan dan mengambil data dengan konsep LIFO (Last In First Out).
Dimana dalam stack ini kumpulan data yang masuk diletakkan di atas data yang
lain. Dan berdasar konsep LIFO maka data yang terakhir kali disimpan dalam
stack akan menjadi data yang pertama kali diambil. Dalam prosesnya, untuk
memasukkan sebuah data ke dalam stack atau dengan kata lain ke bagian atas
dari sebuah tumpukan digunakan perintah push. Dan untuk memindahkan data
dari tempat tersebut digunakan perintah pop. Sedangkan dalam penyajiannya,
stack bisa memakai array atau linked list (Yofianto, 2010).
1.2 Pengertian Queue
Queue / Antrian adalah suatu kumpulan data yang mana penambahan
elemen hanya bisa dilakukan pada satu ujung (disebut dengan sisi belakang atau
tail/rear) dan penghapusan atau pengambilan elemen dilakukan lewat ujung lain
(disebut dengan sisi depan atau head/front). Antrian menggunakan prinsip
Pertama Masuk Pertama Keluar – First In First Out (FIFO). Dengan kata lain
urutan masuk sama dengan urutan keluar. Antrian banyak dijumpai dalam
kehidupan sehari-hari. Mobil-mobil yang mengantri digerbang tol untuk membeli
karcis tol; orang-orang yang mengantri di loket untuk membeli karcis film juga
membentuk antrian. Elemen yang pertama kali masuk ke antrian akan keluar
pertama kalinya. DEQUEUE adalah mengeluarkan satu elemen dari suatu
antrian. Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar
di ujung satunya sehingga membutuhkan variabel Head dan Tail. (Rudiyanto,
2015).
1.3 Pengertian Tree
Tree merupakan salah satu bentuk struktur data linier yang
menggambarkan hubungan yang bersifat hierarkis (hubungan one to many) antara
elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan
satu elemen khusus yang disebut Root. Node lainnya terbagi menjadi himpunan-
himpunan yang saling tak berhubungan satu sama lain (disebut Subtree). Untuk
lebih jelasnya, di bawah akan diuraikan istilah-istilah umum dalam tree:
Predecessor : Node yang berada di atas node tertentu
Successor : Node yang berada di bawah node tertentu
Ancestor : Seluruh node yang terletak sebelum node tertentu dan terletak
pada jalur yang sama
Descendant : Seluruh node yang terletak sesudah node tertentu dan terletak
pada jalur yang sama
Parent : Predecessor satu level di atas suatu node
Child : Successor satu level di bawah suatu node
Sibling : Node-node yang memiliki pparent yang sama dengan suatu
node
Subtree : Bagian dari tree yang berupa suatu node beserta descendentnya
dan memiliki semua karakteristik dari tree tersebut
Size : Banyaknya node dalam suatu tree
Height : Banyaknya tingkatan/level dalam suatu tree
Root : Satu-satunya node khusus dalam tree yang tak punya
predecessor
Leaf : Node-node dalam tree yang tak memiliki successor
Degree : Banyaknya child yang dimiliki suatu node
(Sanjaya, 2005).
BAB III
IMPLEMENTASI
3.1 Deskripsi Program
Program dibuat menggunakan borland C++. Program yang dibuat adalah
membuat program menampilkan data menggunakan metode stack pada linked
list. Program diawali dengan memunculkan menu. Dalam daftar menu terdapat
pilihan tambah, tampil, hapus dan keluar. Tambah untuk menambah data pada
linked list data yang diamasukkan akan muncul di depan. Tampil untuk
menampilkan data yang telah dimuat sebelumnya. Hapus untuk menmpilkan
data yang telah dimasukkan sebelumnya, data yang dihapus adalah yang berada
dibagian depan. Apabila belum ada data pada linked list maka apabila memilih
pilihan tampil atau hapus akan ada tulisan data kosong. Pilihan keluar untuk
keluar dari program.
3.2 Alur Program
3.2.1 isempty
3.2.2 tambah
3.2.3 tampil
3.2.4 hapus
3.2.5 menu utama
3.3 Source Code#include <constrea.h>
struct Node
{
int data;
Node *next ;
};
Node *head;
bool isempty()
{
if (head==NULL)
return true;
else
return false;
}
void tambah (int databaru)
{
Node *baru;
baru = new Node;
baru->data = databaru;
baru->next=NULL;
if (isempty() == true)
{
head=baru;
head->next=NULL;
}
else
{
baru->next=head;
head=baru;
}
cout<<"Data Masuk";
getch();
}
void tampil()
{
Node *bantu;
bantu=head;
if(isempty()==false)
{
while(bantu!=NULL)
{
cout<<bantu->data<<" ";
bantu=bantu->next;
}
cout<<endl;
}
else
cout<<"Masih kosong";
}
void hapus()
{
Node *hapus;
int d;
if (isempty()==false)
{
if (head->next !=NULL)
{
hapus=head;
d=hapus->data;
head=head->next;
delete hapus;
}
else
{
d=head->data;
head=NULL;
}
cout<<d<<" terhapus\n";
}
else
cout<<"Data Masih Kosong\n";
}
void main()
{
int databaru;
char pil;
do
{
clrscr();
cout<<"+=====================================+\n";
cout<<"| Menu Utama |\n";
cout<<"| a. Tambah |\n";
cout<<"| b. Tampil |\n";
cout<<"| c. Hapus |\n";
cout<<"| d. Keluar |\n";
cout<<"+-------------------------------------+\n";
cout<<"| Masukkan pilihan anda (a - d) : |\n";
cout<<"+=====================================+\n";
gotoxy(35,8);cin>>pil;
switch(pil)
{
case 'a' : cout<<"\n";
cout<<"\nData baru : ";
cin>>databaru;
tambah(databaru);
break;
case 'b' : cout<<"\n";
cout<<"Data : ";
tampil();
getch();
break;
case 'c' : cout<<"\n";
hapus();
getch();
break;
case 'd' : gotoxy(1,12);cout<<"Keluar Program"; getch();break;
default : gotoxy(1,12);cout<<"Anda salah pilih...\n"; getch(); break;
}
}
while(pil!='d');
}
3.4 Output
(Gambar 3.1 Tampilan awal program pada menu utama)
(Gambar 3.2 Tampilan saat salah menginputkan pilihan )
(Gambar 3.3 Tampilan saat memilih pilihan tanbah dan menginputkan data)
(Gambar 3.4 Tampilan saat menginputkan pilihan tampil)
(Gambar 3.5 Tampilan saat menginputkan pilihan hapus)
(Gambar 3.6 Tampilan saat menginputkan pilihan tampil atau hapus tapi data
masih kosong)
(Gambar 3.6 Tampilan saat menginputkan pilihan keluar program)
3.5 Tugas
3.5.1 Deskripsi Program
Program dibuat menggunakan borland C++. Program yang dibuat
adalah program menampilkan data dengan metode tree secara pre-order,
in-order dan post-order. Program diawali dengan menampilkan menu
utama lalu menginputkan pilihan yang ada pada menu. Pilihan tambah
untuk menambah data pada linked list. Pilihan pre-order untuk
menampilkan data mulai dari simpul pohon lalu ke kiri dan ke kanan.
Pilihan in-order untuk menampilkan data mulai dari sebelah kiri lalu ke
kanan baru ke simpul. Pilihan post-order untuk menampilkan data mulai
dari sebelah kiri lalu ke simpul baru ke sebelah kanan. Pilihan keluar
untuk keluar dari program.
3.5.2 Source code
#include <constrea.h>
struct Node
{
int data;
Node *kiri;
Node *kanan;
};
void tambah (Node **root, int databaru)
{
if ((*root) == NULL)
{
Node *baru;
baru = new Node;
baru->data = databaru;
baru->kiri = NULL;
baru->kanan = NULL;
(*root) = baru;
(*root)->kiri = NULL;
(*root)->kanan = NULL;
cout<<"Data Bertambah!";
getch();
}
else
if (databaru < (*root)->data)
tambah (&(*root)->kiri, databaru);
else
if (databaru > (*root)->data)
tambah (&(*root)->kanan,databaru);
else
if (databaru == (*root)->data)
{
cout<<"Data sudah ada!";
getch();
}
}
void preOrder(Node *root)
{
if (root != NULL)
{
cout<<root->data<<" ";
preOrder(root->kiri);
preOrder(root->kanan);
}
}
void inOrder(Node *root)
{
if (root !=NULL)
{
inOrder(root->kiri) ;
cout<<root->data<<" ";
inOrder(root->kanan);
}
}
void postOrder(Node *root)
{
if(root != NULL)
{
postOrder(root->kiri);
postOrder(root->kanan);
cout<<root->data<<" ";
}
}
void main()
{
int data;
Node *pohon;
pohon = NULL;
char pil;
do
{
clrscr();
cout<<"+=====================================+\
n";
cout<<"| Menu Utama |\n";
cout<<"| a. Tambah |\n";
cout<<"| b. Lihat Pre-order |\n";
cout<<"| c. Lihat In-order |\n";
cout<<"| d. Lihat Post-order |\n";
cout<<"| e. Keluar |\n";
cout<<"+-------------------------------------+\n";
cout<<"| Masukkan pilihan anda (a - e) : |\n";
cout<<"+=====================================+\
n";
gotoxy(35,9);cin>>pil;
switch(pil)
{
case 'a' : cout<<"\n";
cout<<"\nData baru : ";
cin>>data;
tambah(&pohon,data);
break;
case 'b' : cout<<"\n";
if (pohon!=NULL)
preOrder(pohon);
else
{
gotoxy(1,14);cout<<"Data Masih
Kosong!";
}
getch();
break;
case 'c' : cout<<"\n";
if (pohon!=NULL)
inOrder(pohon);
else
{
cout<<"Data Masih Kosong!";
}
getch();
break;
case 'd' : cout<<"\n";
if (pohon!=NULL)
postOrder(pohon);
else
{
cout<<"Data Masih Kosong!";
}
getch();
break;
case 'e' : gotoxy(1,14);cout<<"Keluar Program"; getch();break;
default : gotoxy(1,14);cout<<"Anda salah pilih...\n";getch();break;
}
}
while(pil!='e');
}
3.5.3 Output
(Gambar 3.6 Tampilan awal program)
(Gambar 3.7 Tampilan saat menginputkan pilihan dan mengisi data)
(Gambar 3.8 Tampilan apabila pilihan salah)
(Gambar 3.9 Tampilan keluar program)
BAB IV
PENUTUP
2.4 Kesimpulan
Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai
keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian Linked list
juga merupakan suatu cara untuk menyimpan data dengan struktur sehingga
dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data
yangdiperlukan. Ada 2 Tipe Single Linked List yaitu Single Linked List Circular
dan Single Linked List Non Circular
4.2 Saran
Sebaiknya untuk asisten praktikum jangan terlalu sulit untuk membuat soal
pretest.
DAFTAR PUSTAKA
Rudiyanto, Fery. (2015). Mengenal Queue (Antrian) Pada C++ http://www.klikartikel.com/2015/01/mengenal-queue-antrian-pada-c.html Diakses pada tanggal 29 Nopember 2015.
Sanjaya, Dwi. 2005. Asyiknya Belajar Struktur Data di Planet C++. Jakarta: PT Elex
Media Komputindo.
Yofiyanto, Evan. (2010). Stack & Queue : Penjelasan, Deskripsi Fungsi Dasar, Pemodelan, dan Penerapan Stackhttps://kuliahinformatika.wordpress.com/2010/02/06/stack-queue-penjelasan-deskripsi-fungsi-dasar-pemodelan-dan-penerapan-stack/ Diakses pada tanggal 29 Nopember 2015.