LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL 8
STACK / TUMPUKAN
Diajukan Untuk Memenuhi Salah Satu Tugas
Metode Pembelajaran Praktikum Stuktur Data
Dosen: EndraSuseno, M.Kom
Di Susun Oleh :
Dera Dwi Bernika
20160920120
SI A 2016
FAKULTAS ILMU KOMPUTER
UNIVERSITAS KUNINGAN
Jalan Cut NyakDien No 36 A, Kel.Cijoho, Kuningan, Jawa Barat, Indonesia
2017
#include<iostream.h>
#include<conio.h>
#define max 10
struct Tumpukan {
int atas;
int data[max];
}T;
void awal(){
T.atas=-1;
}
int kosong(){
if(T.atas==-1)
return 1;
else
return 0;
}
int penuh(){
if(T.atas==max-1)
return 1;
else
return 0;
}
void input(int data){
if(kosong()==1)
{T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}
else if(penuh()==0)
{T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}
else
cout<<"Tumpukan penuh";
}
void hapus(){
if(kosong()==0){
cout<<"Data teratas sudah terambil";
T.atas--;
}
else
cout<<"Data kosong";
}
void tampil(){
if(kosong()==0){
for(int i=T.atas; i>=0; i--)
{
cout<<"\nTumpukan ke "<<i<<"="<<T.data[i];
}
}
else
cout<<"Tumpukan kosong";
}
void bersih(){
T.atas=-1;
cout<<"Tumpukan kosong!";
}
void main(){
int pil,data;
awal();
do
{
clrscr();
cout<<" 1. Input\n 2. Hapus\n 3. Tampil\n 4. Bersihkan\n 5. Keluar\n Masukan pilihan :";
cin>>pil;
switch(pil){
case 1: cout<<"Masukan data = ";cin>>data;
input(data);
break;
case 2: hapus();
break;
case 3: tampil();
break;
case 4: bersih();
break;
case 5: cout<<"Terimakasih, tekan enter untuk keluar";
}
getch();
}
while(pil!=5);
}
HASIL RUNNING
PEMBAHASAN
Program ini adalah contoh sebuah stack yang dimana di dalamnya terdapat operasi PUSH ( memasukan data ), POP ( menghapus data yang terakhir diinputkan ) Tampil ( Menampilkan isi tumpukan) CLEAR ( menghapus semua tumpukan ) dan exit. Hal pertama yang harus dilakukan adalah memilih dari ke 5 menu tersebut di mana setiap menu terdapat statemennya masing – masing dan stantemen itu terdapat dalam function.
Operasi PUSH atau INPUT, dalam statement PUSH terdapat perintah if(kosong()==1) jadi jika tumpukan kosong maka kita akan menginput sebuah nilai yang nantnya akan ditampung atau ditumpuk dalam variable array data. Dan kondisi else if (penuh()==0) maka akan melakukan penginputan sekali lagi karena itu sebagai pemberi tahu bahwa tumpukan hampir penuh
Operasi POP atau Hapus dalam statement ini hampir sama yaitu terdapat kondisi if(kosong()==0) maksudnya adalah jadi tumpukan yang kosong itu tersisa 0 atau dianggapnya sudah penuh, dan function kosong itu mempunyai nilai 0 jika nilai T.atas lebih dari -1, dan mempunyai nilai satu jika T.atasnya itu -1, jadi selama nilai fungsi kosongnya bernilai 0 maka stack akan bisa di hapus dan juga dengan mengurangnya T.atas. misalnya t.atas = 5 jika di hapus maka tinggal 4 data yang tersisa, dan jika t.atas sudah mempunyai nilai 0 maka akan keluar notice Tumpukan Kosong.
Operasi Tampilan atau VIEW untuk menampilkan stack LIFO maka hanya perlu dilakukan pemanggilan beserta perulangan for dan deremen, jadi jika menggunakan oprasi decremen maka yang akan keluar itu nilai yg terakhir diinputkan dan batasan dari perulangan nya adalah T.atas krn setiap melakukan penginputan nilai T.atas akan bertambah jd nilai T.atas menunjukan jumlah data dalam tumpukan.
PRAKTIKUM 8.2
#include<iostream.h>
#include<conio.h>
#include<string.h>
struct
{
char data [15][100], max [15];
int i,j;
} stack;
void push() //push untuk memasukan dta
{
stack.i++;
cout<<"masukan data : ";
cin>>stack.max;
strcpy (stack.data[stack.i],stack.max);
}
void pop() //pop untuk mengambil data
{
if (stack.i>0)
{
cout<<"data yang terambil : "<<stack.data[stack.i]<<endl;
stack.i--; stack.j--;
}
else
cout<<"tak ada data yang terambil "<<endl;
}
void view (int n) //print untuk menampilkan data
{
if (stack.j>0)
{
for (int e=n; e>=1; e--)
{
cout<<stack.data[e]<<endl;
}
}
else
cout<<"tak ada data tersimpan"<<endl;
}
void main()
{
int n,plh;
ayo:
clrscr();
cout<<"contoh program stack (tumpukan \n\n";
cout<<"maksimal tumpukan data : "; cin>>n;
stack.data[n];
stack.i=0;
stack.j=0;
balik:
clrscr();
cout<<"\n1. push \n2. pop \n3. view \n4. clear \n5. quit \n";
cout<<"\npilih :"; cin>>plh;
cout<<"\n";
if (plh==1)
{
if (stack.j<n)
{
stack.j++; push();
}
else
{
cout<<"tumpukan penuh"<<endl;
getch();
}
goto balik;
}
else if (plh==2)
{
pop(); getch(); goto balik;
}
else if (plh==3)
{
view (stack.i); getch(); goto balik;
}
else if (plh==4)
{
getch();
goto balik;
}
else if (plh==5)
{
getch(); goto ayo;
}
else
{
cout<<"input yang anda masukan salah !!!";
getch(); goto ayo;
}
}
HASIL RUNNING
1.
2.
3.
4.
5.
PEMBAHASAN
LATIHAN 8.1
#include<conio.h>
#include<stdio.h>
#define N 20
main()
{
int nilai[N],i,jml;
printf(" Jumlah Maksimal Tumpukan (<=20) = ");
scanf("%d",&jml);
for(i=0; i<jml; i++)
{
printf(" Data ke-%d = ", i+1);
scanf("%d",&nilai[i]);
if(i==jml-1)
{
printf("Tumpukan Penuh");
getch();
}
}
for(i=jml-1; i>=0;i--)
{
printf("\n data ke-%d = %d", i+1, nilai[i]);
}
getch();
return 0;
}
PEMBAHASAN
Ini adalah sebuah contoh program, pertama masukan jumlah tumpukan yang dapat di tampung dan maksimal tumpukan dibawah 20, karena data yang akan diinput akan di tampung dalam array maka lakukan penginputan dengan menggunakan for dan batasanya adalah nilai yang di inputkan pertama, masukan if dengan kondisi (i==jml-1) if ini berguna untuk memberitahu jika tumpukan suda penuh. Dan kondisi if i==jml-1 itu karena dalam array indeks pertama di hitung 0 dan batasan indeks itu adalah nilai dikurangi 1 jadi jika element arraynya 5 maka indeks terakhirnya 5-1=4. Untuk output gunakan for untuk outputnya namun i nya di dekremen kan (i--) karena stack ini mempunyai sifat LIFO ( last in first out ) jadi data yang di input terakhir akan keluar pertama.
0 komentar:
Posting Komentar