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.
Ada beberapa cara untuk menyajikan sebuah stack tergantung pada permasalahan yang akan kita selesaikan. Dalam bab ini kita akan menggunakan cara yang paling sederhana, tipe data yang sudah kita kenal, yaitu array. Kita dapat menggunakan array untuk menyajikan sebuah stack, dengan anggapan bahwa banyaknya elemen maksimum dari stack tersebut tidak akan melebihi batas maksimum banyaknya elemen dalam array.
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.
Contoh program stack pembalik kata:
//header
#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<<"\nKalimat awal : ";
for (int i=0; i<=stackbaru.top; i++)
{
cout<<stackbaru.data[i];
}
}
void clear()
{
stackbaru.top = -1;
}
void main()
{
char kata[200]; //menampung inputan
printf("Program Pembalik Kalimat \n\n");
printf("*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*\n");
printf("Masukkan kalimat yang Anda inginkan: \n");
gets(kata);
for(int i=0; kata[i]; i++)
push(kata[i]);
print();
cout<<"\n*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*\n\n";
cout<<"Balikan dari kalimat Anda : ";
pop();
cout<<"\n";
}
Tolong di koment kalo ada yang keliru.
Selamat mencoba!!
Ada beberapa cara untuk menyajikan sebuah stack tergantung pada permasalahan yang akan kita selesaikan. Dalam bab ini kita akan menggunakan cara yang paling sederhana, tipe data yang sudah kita kenal, yaitu array. Kita dapat menggunakan array untuk menyajikan sebuah stack, dengan anggapan bahwa banyaknya elemen maksimum dari stack tersebut tidak akan melebihi batas maksimum banyaknya elemen dalam array.
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.
Contoh program stack pembalik kata:
//header
#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<<"\nKalimat awal : ";
for (int i=0; i<=stackbaru.top; i++)
{
cout<<stackbaru.data[i];
}
}
void clear()
{
stackbaru.top = -1;
}
void main()
{
char kata[200]; //menampung inputan
printf("Program Pembalik Kalimat \n\n");
printf("*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*\n");
printf("Masukkan kalimat yang Anda inginkan: \n");
gets(kata);
for(int i=0; kata[i]; i++)
push(kata[i]);
print();
cout<<"\n*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*\n\n";
cout<<"Balikan dari kalimat Anda : ";
pop();
cout<<"\n";
}
Tolong di koment kalo ada yang keliru.
Selamat mencoba!!
0 komentar:
Posting Komentar