Stack adalah sebuah kumpulan
data dimana data yang diletakkan di atas data yang lain. Dengan demikian stack
adalah struktur data yang menggunakan konsep LIFO. Dengan demikian, elemen
terakhir yang disimpan dalam stack menjadi elemen pertama yang diambil. Dalam
proses komputasi, untuk meletakkan sebuah elemen pada bagian atas dari stack,
maka kita melakukan push. Dan untuk memindahkan dari tempat yang atas tersebut,
kita melakukan pop.
Pada saat ukuran stack,
kalau kita teruskan menambah data lagi, akan terjadi overflow. Dengan demikian
perlu data tambahan untuk mencatat posisi ujung stack. Dengan kebutuhan seperti
ini, kita dapat menyajikan stack dengan menggunakan tipe data struktur (struct)
yang terdiri dari dua field. Field pertama bertipe array untuk menyimpan elemen
stack, medan kedua bertipe integer untuk mencatat posisi ujung stack.
Sebagai
ilustrasi, “Benda
yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar
dari stack. Hal ini asemacam kebalikan dari postingan saya sebelumnya tentang queue
Saya akan membuat suatu program yang melakukan pembalikan kalimat dengan menggunakan stack
Contoh:
Contoh:
source code
#include
<iostream.h>
#include
<stdio.h>
#include
<stdlib.h>
#include
<conio.h>
#define
maxstack 200
struct
STACK //membuat jenis data abstrak
'STACK'
{
int top;
char data[maxstack];
};
char
dta[maxstack];
struct
STACK stackbaru;
void
inisialisasi()
{
stackbaru.top = -1;
}
bool
isfull() //menanyakan penuhkah?
{
if (stackbaru.top == maxstack-1) return
true;
else return false;
}
bool
isempty() //menanyakan kosongkah?
{
if (stackbaru.top == -1) return true;
else return false;
}
void
push(char dta) //mengisi stack (menyiapkan data)
{
if (isfull() == false)
{
stackbaru.top++;
stackbaru.data[stackbaru.top]=dta;
}
else
{
puts ("\nMaaf Stack penuh");
}
}
void
pop() //mengambil isi stack
{
while (isempty() == false)
{
cout<<stackbaru.data[stackbaru.top];
stackbaru.top--;
}
}
void
print() //mencetak stack
{
cout<<" ";
for (int i=0; i<=stackbaru.top; i++)
{
cout<<stackbaru.data[i];
}
}
void
clear()
{
stackbaru.top = -1;
}
void
main()
{
char kata[200];
printf("--- PROGRAM PEMBALIK KALIMAT
--- \n\n");
printf("Masukkan kalimat yang Anda inginkan:
\n");
gets(kata);
for(int i=0; kata[i]; i++)
push(kata[i]);
printf("------------------------------------ \n\n");
print();
cout<<"
menjadi ";
pop();
cout<<"\n";
getche();
}
Tampilan
program sorting dengan menggunakan stack
source code;
#include
<iostream.h>
#include
<conio.h>
#include
<stdio.h>
#define
maxstack 6
//using
namespace std;
int
top=-1;
struct
STACK
{
int
top;
float
data[4];
};
float
dta;
struct
STACK stackbaru;
bool
isfull ()
{
if (stackbaru.top == maxstack)
return true;
else return false;
}
bool
isempty()
{
if (stackbaru.top == -1)
return true;
else
return false;
}
void
push (float dta)
{
if (isfull() == true)
{
cout<<"maaf, stack dalam
keadaan penuh";
getche();
}else{
top++;
stackbaru.top++;
stackbaru.data[top] = dta;
}
}
void
pop ()
{
if (isempty () == true){
cout<<"data pada stack dalam
keadaan kosong";
getche();
}else {
cout<<"data yang terambil :
"<<stackbaru.data[top]<<endl;
top--;
}
}
void
print () // mencetak stack
{
for (int i =top; i>=0;i--){
cout<<stackbaru.data[i]<<" ";
}
}
void
clear ()
{
top=-1;
}
void
inisialisasi ()
{
stackbaru.top=-1;
}
void
Sort (int Array[])
{
int i,j,kecil,temp;
for (i=0; i<5; i++)
{
{kecil=i;
for (j=i+1; j<5; j++)
{
if(Array[kecil]>Array[j])
{kecil =j;}
}
temp = Array [i];
Array[i] = Array[kecil];
Array[kecil] = temp;
}
}
}
int
main ()
{
void
inisialisasi ();
char menu;
char ulang;
int data [5];
int i,j;
do
{
clrscr;
printf("Menu : \n");
puts("1. pop stack");
puts("2. Push data dan sorting
ascending");
puts("3. cetak sorting
descending");
puts("4. Bersihkan stack");
puts("5. Exit");
cout<<"Menu pilihan anda : ";
cin>>menu;
if (menu == '1'){
pop ();
getche ();
ulang == 'y';
}
else if (menu == '2')
{
cout<<"sorting
ascending\n";
for(i=0; i<5; i++)
{
cout<<"input nilai ke
"<<(i+1)<<" =";
cin>>data[i];
}
Sort(data);
cout<<"sorting ascending :";
for(j=0 ; j<5 ; j++)
{cout<<data[j];
push(data[j]);
}
cout<<"\n";
getche();
ulang = 'y';
clrscr;
}else if (menu == '3')
{
cout<<"sorting
descending\n";
print ();
cout<<"\n";
getche();
}else if (menu =='4')
{
clear ();
cout<<"Ulang? (y/t)";
cin>>ulang;
}else if (menu =='5')
{
}
}while
(ulang =='Y' || ulang == 'y');
getche();
}
tampilan
semoga membantu :)
persentasi tentang stack memusingkan juga ;)
BalasHapusintinya, stack itu kebalikan dari queue :)
Hapussip
Hapusterimakasih infonya teh...
BalasHapussamasamaaa :)
BalasHapusassalamu'alaikum, mba, kalo dibuat flowchart nya gmn?
BalasHapusmbak aman tampilan nya begini gimana mbak koding nya
BalasHapusContoh Tampilan Hasil
Jumlah Kata : 4
Kata 1 : Sukarti
Kata 2 : hari
Kata 3 : Ini
Kata 4 : ujian
Maka yang di PUSH ke dalam STACK
4
3
Ujian
2
hari
Ujian
Ini
Ini
ujian
1
Sukarti
Ini
Hari
Sukarti
hari
dan queue kebalikan dari eueuq wkwkwkwk :D
BalasHapusmantap bang materinya sangat membantu, bisa saling tukar backlink gan, silakan agan bisa kunjungi blog saya , salam kenal :')
BalasHapus