Anda di halaman 1dari 14

SOAL TENTANG STACK

1. Jelaskan konsep lifo pada stack !


2. BERIKAN SATU1. Jelaskan konsep lifo pada stack !
2. BERIKAN SATU CONTOH PENERAPAN STACK DALAM
KEHIDUPAN SEHARI-HARI !
3. JELASKAN PERBEDAAN TOP DENGAN MAX STACK !
4. BUATLAH CONTOH PROGRAM STACK !
5. JELASKAN KONSEP RECORD,ARRAY,TOP, PADA STACK !

JAWABAN

1. Jelaskan konsep lifo pada stack!


Pengertian Stack pada Struktur Data adalah sebagai tumpukan dari benda,
sekumpulan data yang seolah-olah diletakkan di atas data yang lain, koleksi
dari objek-objek homogen, atau Suatu urutan elemen yang elemennya dapat
diambil dan ditambah hanya pada posisi akhir (top) saja. Stack pada Struktur
Data dapat diilustrasikan dengan dua buah kotak yang ditumpuk, kotak yang
satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak
tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan
diperoleh sebuah stack kotak yang terdiri dari N kotak.

Stack bersifat LIFO (Last In First Out) artinya Benda yang terakhir masuk ke
dalam stack akan menjadi yang pertama keluar dari stack

Operasi-operasi yang biasanya tredapat pada Stack yaitu:


1. Push : digunakan untuk menambah item pada stack pada tumpukan paling
atas
2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling
atas
3. Clear : digunakan untuk mengosongkan stack
4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah
kosong
5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

Cara mendefenisikan Stack dengan Array of Struct yaitu:


1. Definisikan Stack dengan menggunakan struct
2. Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack
3. Buatlah variabel array data sebagai implementasi stack
4. Deklarasikan operasi-operasi/function di atas dan buat implemetasinya.
contoh :
//Deklarasi MAX_STACK
#define MAX_STACK 10
//Deklarasi STACK dengan struct dan array data
typedef struct STACK{
int top;
char data[10][10];
};

//Deklarasi/buat variabel dari struct


STACK tumpuk;

Inisialisasi Stack
Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang
berarti stack adalah kosong.
Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen
teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai
MAX of STACK sehingga menyebabkan stack penuh.

Ilustrasi Stack pada saat inisialisasi

IsFull berfungsi untuk memeriksa apakah stack sudah penuh atau tidak.
Dengan cara, memeriksa top of stack, jika sudah sama dengan MAX_STACK-
1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum
full.

Ilustrasi Stack pada kondisi Full

IsEmpty berfungsi untuk memeriksa apakah stack masih kosong atau tidak.
Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih
kosong.
Push berfungsi untuk memasukkan elemen ke stack, selalu menjadi elemen
teratas stack (yang ditunjuk oleh TOS).
Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada
penambahan elemen stack.
Asalkan stack masih belum penuh, isikan data baru ke stack berdasarkan
indeks top of stack setelah diincrement sebelumnya.

Pop berfungsi untuk mengambil elemen teratas (data yang ditunjuk oleh TOS)
dari stack.
Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack,
tampilkan nilai yang akan dipop, baru dilakukan decrement nilai top of stack
sehingga jumlah elemen stack berkurang.
Printberfungsi untuk menampilkan semua elemen-elemen stack dengan cara
looping semua nilai array secara terbalik, karena kita harus mengakses dari
indeks array tertinggi terlebih dahulu baru ke indeks yang kecil.

Operasi Push

void Push (NOD **T, char item)


{
NOD *n;
n=NodBaru (item);
n->next=*T;
*T=n;
}

Operasi Pop
char Pop (NOD **T)
{
NOD *n; char item;
if (!StackKosong(*T)) {
P=*T;
*T=(*T)->next;
item=P->data;
free(P);
}
return item;
}

2. BERIKAN SATU CONTOH PENERAPAN STACK DALAM KEHIDUPAN


SEHARI-HARI!

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

int top=1, data[100];


void pushdata(){
cout<<"Masukkan data : ";cin>>data[top];
}
void popdata(){
top-=1;
cout<<"Data telah dihapus!"<<endl;
}
void viewdata(){
cout<<endl;
for(int i=top-1;i>=1;i--){
cout<<"||"<<data[i]<<"||"<<endl;
}cout<<"====="<<endl;
}

void main(){
char ul; int pil;
do{
clrscr();
cout<<"\n1. Push Data\n2. Pop Data\n3. View Data\n";
cout<<"Pilih = ";cin>>pil;
switch(pil){
case 1:{ pushdata(); top++; } break;
case 2:{ if(top<=1){cout<<"Data Kosong!"<<endl; }else{ popdata(); }
}break;
case 3:{ if(top<=1){cout<<"Data Kosong!"<<endl; }else{ viewdata();}
}break;
default : cout<<"Pilihan tidak ada!"<<endl; break;
}
cout<<"Ingin mengulang : "; cin>>ul;
} while(ul=='y'||ul=='Y');

3. JELASKAN PERBEDAAN TOP DENGAN MAX STACk


Ø TOP merupakan sebutan untuk elemen paling atas dari suatu stack
Ø MAX_STACK untuk menyimpan maksimum isi stack

4. BUATLAH CONTOH PROGRAM STACK!

#include "iostream"
#include "conio.h"
#define maksElemen 10//konstanta
using namespace std;
struct tumpukan
{
short int isi[10];//isi
int pos;//posisi dri stack
};
short int kosong(tumpukan &t)//periksa bahwa elemen stack kosong
{short int kos;
if(t.pos>0){
kos=0;//blm kosong
cout<<endl<<"belum kosong";
}
else
kos=1;//sudah kosong
return(kos);
}
void posisi(tumpukan t)//melihat posisi top stack
{
if(kosong(t)!=1)//jika tdk kosong
{
cout<<endl<<"top sekarang pada indek = "<<t.pos;
cout<<" dan elemennya adalah "<<t.isi[t.pos-1];
}
}
void pop(tumpukan &t,short int &j)
{
if(kosong(t)==1)//periksa stack
cout<<endl<<"stack sudah kosong !";
else
{
cout<<endl<<kosong(t)<<"stack blm kosong.";
cout<<endl<<t.isi[t.pos-1]<<" telah di pop!";
t.pos=t.pos-1;
j=t.pos;
}
}
short int full(tumpukan &t)//periksa bhwa elemen stack sdah penuh
{short int penuh;
if(t.pos<maksElemen)
penuh=0;//blm penuh
else
penuh=1;//sdah penuh
return (penuh);
}
void push(tumpukan &t, short int x, short int j)
{
if(full(t)==1)//periksa stack
cout<<endl<<"stack telah PENUH !";
else{
cout<<endl<<"stack blm PENUH !!";
t.pos=j;
t.isi[j-1]=x;
cout<<endl<<t.isi[j-1]<<" telah di PUSH!!";
}
}
void main(){
tumpukan t; short int n,i,x,komen;
//n tdk lbih dri 10
char pil;
//memasukkan bil bulat
t.pos=0; komen=0; i=1; t.isi[t.pos]=0;
while(!(komen==1))
{
cout<<endl<<"1. PUSH dan 2.POP, mau pilih yang mana?";cin>>pil;
switch(pil)
{
case'1': posisi(t);//lihat posisi top satack
cout<<endl<<"Bilangan ke-"<<i<<"="; cin>>x;
push(t,x,i);i++;break;//pemanggilan prosedur PUSH

case'2': posisi(t);//lihat posisi top satack


pop(t,i);break;//pemanggilan prosedur pop
}//end case
cout<<endl<<"Tekan 1 untuk asphalt 8 :D..!!tekan: ";cin>>komen;
}//end while
_getch();
}

5. jELASKAN KONSEP RECORD,ARRAY,TOP, PADA STACK!


ARRAY
Suatu array adalah sebuah struktur data yang terdiri atas banyak variabel
dengan
tipe data sama, dimana masing-masing elemen variabel mempunyai nilai
indeks.setiap elemen array mampu untuk menyimpan satu jenis data
(yaitu:variabel).Cara Pendefinisian
• contoh type
A = array [1..6] of integer;
• Secara logika pendefinisian array di atas
merupakan sekumpulan kotak , dimana tiap
kotak mempunyai nilai indeks integer 1, 2, 3, ...,6
tiap elemen array ditandai dengan:
A[1], A[2], A[3], A[4], A[5], A[6]
untuk mengisi elemen array misal A[1]:=4;.Sifat Array
Array merupakan struktur data yang statis, yaitu
jumlah elemen yang ada harus ditentukan
terlebih dahulu dan tak bisa di ubah saat
program berjalan.
RECORD
Record adalah sebuah tipe data yang mengumpulkan beberapa item data di
mana masing-masing tipe data dari item data ini berbeda-beda. Masing-
masing item data ini bisa disebut dengan field.
Mendeklarasikan Record
Masih ingat kuliah mengenai tipe data? Dalam Pascal, semua variabel harus
dideklarasikan sebelum bisa dipakai. Sebagai contoh, kitaingin memakai
variabel dengan nama Nama untuk dimasukkan nilai nama-nama mahasiswa.
Kita akan mendefinisikannya menjadi:var Nama: String[80];
Dari kode di atas kita memberitahukan ke Pascal bahwa kita akan memakai
variabel Nama yang tipe datanya string dan kita alokasikan panjang stringnya
80 karakter.
Nah, dalam Pascal, kita dimungkinkan untuk memiliki judul tipe data yang
kita definisikan sendiri. Misalkan kita ingin mengganti judul tipe data integer
denganbilanganBulat. Dalam Pascal, kita definisikan ini dengan:
type bilanganBulat = integer;
Perhatikan beda pendefinisian variabel dan pendefinisian type. Untuk
pendefinisian variabel kita menggunakan titik dua (:), sedangkan pendefinisian
type kita menggunakan sama dengan (=).
Untuk mendeklarasikan record, kita memakai reserved word record, diikuti
dengan daftar field dan diakhiri dengan end. Berikut adalah contoh dari
deklarasi sebuah record.
type recMhs = record;
nama : string[80];
NPM : string[8];
nilai : integer;
end;
TOP
· TOP merupakan sebutan untuk elemen paling atas dari suatu stack
· Elemen TOP merupakan elemen yang paling akhir ditambahkan
· Elemen TOP diketahui
· penambahan dan penghapusan elemen selalu dilakukan di TOP
· LIFO

CONTOH PENERAPAN STACK DALAM KEHIDUPAN SEHARI-HARI !


3. JELASKAN PERBEDAAN TOP DENGAN MAX STACK !
4. BUATLAH CONTOH PROGRAM STACK !
5. JELASKAN KONSEP RECORD,ARRAY,TOP, PADA STACK !

JAWABAN

1. Jelaskan konsep lifo pada stack!


Pengertian Stack pada Struktur Data adalah sebagai tumpukan dari benda, sekumpulan
data yang seolah-olah diletakkan di atas data yang lain, koleksi dari objek-objek homogen,
atau Suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi
akhir (top) saja. Stack pada Struktur Data dapat diilustrasikan dengan dua buah kotak
yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian
stack 2 kotak tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan
diperoleh sebuah stack kotak yang terdiri dari N kotak.

Stack bersifat LIFO (Last In First Out) artinya Benda yang terakhir masuk ke dalam stack
akan menjadi yang pertama keluar dari stack

Operasi-operasi yang biasanya tredapat pada Stack yaitu:


1. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
3. Clear : digunakan untuk mengosongkan stack
4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

Cara mendefenisikan Stack dengan Array of Struct yaitu:


1. Definisikan Stack dengan menggunakan struct
2. Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack
3. Buatlah variabel array data sebagai implementasi stack
4. Deklarasikan operasi-operasi/function di atas dan buat implemetasinya.
contoh :
//Deklarasi MAX_STACK
#define MAX_STACK 10

//Deklarasi STACK dengan struct dan array data


typedef struct STACK{
int top;
char data[10][10];
};

//Deklarasi/buat variabel dari struct


STACK tumpuk;

Inisialisasi Stack
Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack
adalah kosong.
Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas
Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK
sehingga menyebabkan stack penuh.

Ilustrasi Stack pada saat inisialisasi

IsFull berfungsi untuk memeriksa apakah stack sudah penuh atau tidak. Dengan cara,
memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum
(masih lebih kecil dari MAX_STACK-1) maka belum full.

Ilustrasi Stack pada kondisi Full

IsEmpty berfungsi untuk memeriksa apakah stack masih kosong atau tidak. Dengan cara
memeriksa top of stack, jika masih -1 maka berarti stack masih kosong.
Push berfungsi untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack
(yang ditunjuk oleh TOS).
Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan
elemen stack.
Asalkan stack masih belum penuh, isikan data baru ke stack berdasarkan indeks top of
stack setelah diincrement sebelumnya.

Pop berfungsi untuk mengambil elemen teratas (data yang ditunjuk oleh TOS) dari stack.
Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai
yang akan dipop, baru dilakukan decrement nilai top of stack sehingga jumlah elemen
stack berkurang.

Printberfungsi untuk menampilkan semua elemen-elemen stack dengan cara looping


semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi
terlebih dahulu baru ke indeks yang kecil.

Operasi Push

void Push (NOD **T, char item)


{
NOD *n;
n=NodBaru (item);
n->next=*T;
*T=n;
}
Operasi Pop
char Pop (NOD **T)
{
NOD *n; char item;
if (!StackKosong(*T)) {
P=*T;
*T=(*T)->next;
item=P->data;
free(P);
}
return item;
}

2. BERIKAN SATU CONTOH PENERAPAN STACK DALAM KEHIDUPAN


SEHARI-HARI!

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

int top=1, data[100];

void pushdata(){
cout<<"Masukkan data : ";cin>>data[top];
}
void popdata(){
top-=1;
cout<<"Data telah dihapus!"<<endl;
}
void viewdata(){
cout<<endl;
for(int i=top-1;i>=1;i--){
cout<<"||"<<data[i]<<"||"<<endl;
}cout<<"====="<<endl;
}
void main(){
char ul; int pil;
do{
clrscr();
cout<<"\n1. Push Data\n2. Pop Data\n3. View Data\n";
cout<<"Pilih = ";cin>>pil;
switch(pil){
case 1:{ pushdata(); top++; } break;
case 2:{ if(top<=1){cout<<"Data Kosong!"<<endl; }else{ popdata(); }
}break;
case 3:{ if(top<=1){cout<<"Data Kosong!"<<endl; }else{ viewdata();}
}break;
default : cout<<"Pilihan tidak ada!"<<endl; break;
}
cout<<"Ingin mengulang : "; cin>>ul;
} while(ul=='y'||ul=='Y');

3. JELASKAN PERBEDAAN TOP DENGAN MAX STACk


Ø TOP merupakan sebutan untuk elemen paling atas dari suatu stack
Ø MAX_STACK untuk menyimpan maksimum isi stack

4. BUATLAH CONTOH PROGRAM STACK!

#include "iostream"
#include "conio.h"
#define maksElemen 10//konstanta
using namespace std;
struct tumpukan
{
short int isi[10];//isi
int pos;//posisi dri stack
};
short int kosong(tumpukan &t)//periksa bahwa elemen stack kosong
{short int kos;
if(t.pos>0){
kos=0;//blm kosong
cout<<endl<<"belum kosong";
}
else
kos=1;//sudah kosong
return(kos);
}
void posisi(tumpukan t)//melihat posisi top stack
{
if(kosong(t)!=1)//jika tdk kosong
{
cout<<endl<<"top sekarang pada indek = "<<t.pos;
cout<<" dan elemennya adalah "<<t.isi[t.pos-1];
}
}
void pop(tumpukan &t,short int &j)
{
if(kosong(t)==1)//periksa stack
cout<<endl<<"stack sudah kosong !";
else
{
cout<<endl<<kosong(t)<<"stack blm kosong.";
cout<<endl<<t.isi[t.pos-1]<<" telah di pop!";
t.pos=t.pos-1;
j=t.pos;
}
}
short int full(tumpukan &t)//periksa bhwa elemen stack sdah penuh
{short int penuh;
if(t.pos<maksElemen)
penuh=0;//blm penuh
else
penuh=1;//sdah penuh
return (penuh);
}
void push(tumpukan &t, short int x, short int j)
{
if(full(t)==1)//periksa stack
cout<<endl<<"stack telah PENUH !";
else{
cout<<endl<<"stack blm PENUH !!";
t.pos=j;
t.isi[j-1]=x;
cout<<endl<<t.isi[j-1]<<" telah di PUSH!!";
}
}
void main(){
tumpukan t; short int n,i,x,komen;
//n tdk lbih dri 10
char pil;
//memasukkan bil bulat
t.pos=0; komen=0; i=1; t.isi[t.pos]=0;
while(!(komen==1))
{
cout<<endl<<"1. PUSH dan 2.POP, mau pilih yang mana?";cin>>pil;
switch(pil)
{
case'1': posisi(t);//lihat posisi top satack
cout<<endl<<"Bilangan ke-"<<i<<"="; cin>>x;
push(t,x,i);i++;break;//pemanggilan prosedur PUSH

case'2': posisi(t);//lihat posisi top satack


pop(t,i);break;//pemanggilan prosedur pop
}//end case
cout<<endl<<"Tekan 1 untuk asphalt 8 :D..!!tekan: ";cin>>komen;
}//end while
_getch();
}

5. jELASKAN KONSEP RECORD,ARRAY,TOP, PADA STACK!


ARRAY
Suatu array adalah sebuah struktur data yang terdiri atas banyak variabel dengan
tipe data sama, dimana masing-masing elemen variabel mempunyai nilai indeks.setiap
elemen array mampu untuk menyimpan satu jenis data (yaitu:variabel).Cara Pendefinisian
• contoh type
A = array [1..6] of integer;
• Secara logika pendefinisian array di atas
merupakan sekumpulan kotak , dimana tiap
kotak mempunyai nilai indeks integer 1, 2, 3, ...,6
tiap elemen array ditandai dengan:
A[1], A[2], A[3], A[4], A[5], A[6]
untuk mengisi elemen array misal A[1]:=4;.Sifat Array
Array merupakan struktur data yang statis, yaitu
jumlah elemen yang ada harus ditentukan
terlebih dahulu dan tak bisa di ubah saat
program berjalan.
RECORD
Record adalah sebuah tipe data yang mengumpulkan beberapa item data di mana masing-
masing tipe data dari item data ini berbeda-beda. Masing-masing item data ini bisa disebut
dengan field.
Mendeklarasikan Record
Masih ingat kuliah mengenai tipe data? Dalam Pascal, semua variabel harus dideklarasikan
sebelum bisa dipakai. Sebagai contoh, kitaingin memakai variabel dengan nama Nama untuk
dimasukkan nilai nama-nama mahasiswa. Kita akan mendefinisikannya menjadi:var Nama:
String[80];
Dari kode di atas kita memberitahukan ke Pascal bahwa kita akan memakai variabel Nama
yang tipe datanya string dan kita alokasikan panjang stringnya 80 karakter.
Nah, dalam Pascal, kita dimungkinkan untuk memiliki judul tipe data yang kita definisikan
sendiri. Misalkan kita ingin mengganti judul tipe data integer denganbilanganBulat. Dalam
Pascal, kita definisikan ini dengan:
type bilanganBulat = integer;
Perhatikan beda pendefinisian variabel dan pendefinisian type. Untuk pendefinisian variabel
kita menggunakan titik dua (:), sedangkan pendefinisian type kita menggunakan sama dengan
(=).
Untuk mendeklarasikan record, kita memakai reserved word record, diikuti dengan daftar
field dan diakhiri dengan end. Berikut adalah contoh dari deklarasi sebuah record.
type recMhs = record;
nama : string[80];
NPM : string[8];
nilai : integer;
end;
TOP
· TOP merupakan sebutan untuk elemen paling atas dari suatu stack
· Elemen TOP merupakan elemen yang paling akhir ditambahkan
· Elemen TOP diketahui
· penambahan dan penghapusan elemen selalu dilakukan di TOP
· LIFO

Anda mungkin juga menyukai