0% menganggap dokumen ini bermanfaat (0 suara)
7 tayangan19 halaman

STACK2

Diunggah oleh

saniya atmariani
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
7 tayangan19 halaman

STACK2

Diunggah oleh

saniya atmariani
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 19

STACK

(TUMPUKAN)

Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah
hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah
tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian
paling atas dan jika mengambilnya pun dari bagian paling atas pula. Lihat gambar 1.

Tumpukan uang koin Tumpukan kotak Tumpukan Buku

Gambar 1. Macam-macam tumpukan

Ada 2 operasi paling dasar dari stack yang dapat dilakukan, yaitu :
1. Operasi push yaitu operasi menambahkan elemen pada urutan terakhir (paling atas).
2. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dan
menghapus elemen tersebut dari stack.

Halaman - 1
Sebagai contoh, misalkah ada data sebagai berikut : 1 3 5 6, maka data tersebut
dapat tersimpan dalam bentuk sebagai berikut :

N 1 1
Top Top
N-1 3 2
5
6 6
5
3 2 N-1
1 1 N

Top

1 3 5 6
1 2 N-1 N
Gambar 2. Asumsi-asumsi penyimpanan stack

Contoh lain adalah ada sekumpulan perintah stack yaitu push(5), push(7), pop,
push(3), pop. Jika dijalankan, maka yang akan terjadi adalah :

Top 7 Top 3
Top 5 5 Top 5 5 Top 5
Top=0 Top=0
Kosong Kosong
Push(5) Push(7) Pop Push(3) Pop Pop
Gambar 3. Proses operasi stack

Selain operasi dasar stack (push dan stack), ada lagi operasi lain yang dapat terjadi
dalam stack yaitu :
1. Proses deklarasi yaitu proses pendeklarasian stack.
2. Proses isempty yaitu proses pemeriksaan apakah stack dalam keadaan kosong.
3. Proses isfull yaitu proses pemeriksaan apakah stack telah penuh.
4. Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan
pemberian nilai untuk top.

Halaman - 2
Representasi stack dalam pemrograman, dapat dilakukan dengan 2 cara yaitu :
1. Representasi stack dengan array
2. Representasi stack dengan single linked list
Sebagai contoh representasi kedua cara tersebut dengan operasi yang dilakukan
adalah push(1), push(2), pop, push(5), push(8), pos. Untuk lebih detail, perhatikan
gambar di bawah ini :
Representasi stack dengan menggunakan array dengan maksimal data 5 adalah

? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? Top 8 8
? ? Top 2 2 Top 5 5 Top 5
? Top 1 1 Top 1 1 1 1
Top=0 Top=1 Top=2 Top=3 Top=2 Top=3 Top=2
Maks=5 Maks=5 Maks=5 Maks=5 Maks=5 Maks=5 Maks=5
Kondisi Push(1) Push(2) Pop Push(5) Push(8) Pop
awal
Elemen berisi ? berarti nilai elemen tidak diketahui.
Gambar 4. Representasi stack dengan menggunakan array

Representasi stack dengan menggunakan single linked list

Top=NULL

Kondisi Push(1) Push(2) Pop Push(5) Push(8) Pop


awal

Gambar 5. Representasi stack dengan menggunakan single linked list

Halaman - 3
Operasi-operasi stack secara lengkap adalah sebagai berikut :
1. Pendeklarasian stack
Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori.
Karena stack dapat direpresentasikan dalam 2 cara, maka pendeklarasian stack pun
ada 2 yaitu :
a. Pendeklarasian stack yang menggunakan array.
Suatu stack memiliki beberapa bagian yaitu
 top yang menunjuk posisi data terakhir (top)
 elemen yang berisi data yang ada dalam stack. Bagian ini lah yang
berbentuk array.
 maks_elemen yaitu variable yang menunjuk maksimal banyaknya elemen
dalam stack.
Dalam bahasa C, pendeklarasiannya adalah :
#define maks 100

//pendeklarasian struktur stack


struct tstack{
int top;
int maks_elemen;
int elemen[maks];
};

//pendeklarasian stack
tstack stack;

b. Pendeklarasian stack yang menggunakan single linked list


Adapun stack yang menggunakan single linked list, hanya memerlukan suatu
pointer yang menunjuk ke data terakhir (perhatikan proses di halaman
sebelumnya). Setiap elemen linked list mempunyai 2 field yaitu elemen datanya
dan pointer bawah yang menunjuk posisi terakhir sebelum proses push.
Pendeklarasian dalam bahasa C adalah :
Struktur Elemen
typedef struct TStack *PStack; Linked List
typedef struct TStack
{
int elemen;
int Elemen
PStack bawah;
}; PStack Bawah
// contoh pendeklarasian variable stack
PStack stack;//variable stack akan selalu menunjuk top.

Halaman - 4
2. Inisialisasi
Inisialisasi stack adalah proses pembuatan suatu stack kosong. Adapun langkah-
langkah proses tersebut berdasarkan jenis penyimpanannya adalah :
a. Inisialisasi stack yang menggunakan array.
Proses inisialisasi untuk stack yang menggunakan array adalah dengan mengisi
nilai field top dengan 0 (nol) jika elemen pertama diawali dengan nomor 1.
Kalau elemen pertama array dimulai dengan 0 (contoh bahasa C), maka top diisi
dengan nilai -1.
Implementasinya dalam bahasa C adalah :
void inisialisasi(tstack *stack)
{
stack->top=-1;//karena dalam C array dimulai dgn 0
stack->maks_elemen=maks;
}
Cara pemanggilannya adalah
inisialisasi(&stack);

b. Inisialisasi stack yang menggunakan single linked list


Proses inisialisasi untuk stack yang menggunakan single linked list adalah
dengan mengisi nilai pointer stack dengan NULL.
Implementasi dalam bahasa C adalah :
void inisialisasi(PStack *stack)
{
*stack=NULL;
}
Cara pemanggilannya adalah :
inisialisasi(&stack);

Halaman - 5
3. Operasi IsEmpty
Operasi ini digunakan untuk memeriksa apakah stack dalam keadaan kosong.
Operasi ini penting dilakukan dalam proses pop. Ketika suatu stack dalam keadaan
kosong, maka proses pop tidak bisa dilakukan. Adapun langkah-langkah operasi ini
adalah :
a. Operasi IsEmpty pada stack yang menggunakan array.
Operasi ini dilakukan hanya dengan memeriksa field top. Jika top bernilai 0
(untuk elemen yang dimulai dengan index 1) atau top bernilai -1 (untuk elemen
yang dimulai dengan index 0), maka berarti stack dalam keadaan empty
(kosong) yang akan me-return-kan true (1) dan jika tidak berarti stack
mempunyai isi dan me-return-kan nilai false (0)
Implementasi dalam bahasa C adalah :
int isempty(tstack stack)
{
if (stack.top==-1)
return 1;
else
return 0;
}
Cara penggunaannya adalah :
//Penggunaan isempty dalam statement if
if( isempty(stack) ) ...

b. Operasi IsEmpty pada stack yang menggunakan single linked list.


Operasi IsEmpty pada stack yang menggunakan single linked list adalah dengan
memeriksa apakah pointer stack bernilai NULL. Jika stack bernilai NULL maka
menandakan stack sedang keadaan empty (kosong) dan akan me-return-kan nilai
1 dan jika tidak NULL maka menandakan stack mempunyai isi (tidak kosong)
sehingga operasi tersebut akan me-return-kan nilai false (0).
Implementasinya dalam bahasa C adalah :
int isempty(PStack stack)
{
if (stack==NULL)
return 1;
else
return 0;
}
Cara penggunaannya adalah
//Penggunaan isempty dalam statement if
if( isempty(stack) ) ...

Halaman - 6
4. Operasi IsFull
Operasi ini berguna untuk memeriksa keadaan stack apakah sudah penuh atau
belum. Operasi ini akan menghasilkan nilai true (1) jika stack telah penuh dan akan
menghasilkan nilai false (0) jika stack masih bisa ditambah. Langkah-langkah untuk
operasi ini adalah :
a. Operasi IsFull pada stack yang menggunakan array.
Operasi ini akan memberikan nilai true (1) jika field top sama dengan field
maks_elemen (untuk array yang elemennya dimulai dari posisi 1) atau top sama
dengan maks_elemen-1 (unauk array yang elemennya dimulai dari posisi 0).
Implementasinya dalam bahasa C adalah :
int isfull(tstack stack)
{
if (stack.top==(stack.maks_elemen-1))
return 1;
else
return 0;
}
Cara pemanggilannya adalah :
//penggunaan isfull dalam statement if
if( !isfull(stack) ) … // jika stack tidak penuh

b. Operasi IsFull pada stack yang menggunakan single linked list.


Karena dalam linked list bersifat dinamis, maka pengecekan isFull adalah
dengan memeriksa apakah memori masih dapat digunakan untuk alokasi sebuah
elemen stack. Jika alokasi dapat dilakukan, maka berarti memori masih belum
penuh dan proses push dapat dilakukan. Tetapi jika alokasi memori gagal
dilakukan, maka berarti memori penuh dan tidak bisa menambah lagi elemen
stack.
Implementasi dalam bahasa C adalah :
int isfull()
{
PStack test;
test=(PStack)malloc(sizeof(TStack));
if(test==NULL)//jika alokasi gagal
return 1;
else
{
free(test);
return 0;
}
}

Halaman - 7
Cara pemanggilannya adalah :
//penggunaan isfull dalam statement if
if( !isfull(stack) ) … // jika stack tidak penuh

5. Operasi Push
Operasi push adalah operasi dasar dari stack. Operasi ini berguna untuk menambah
suatu elemen data baru pada stack dan disimpan pada posisi top yang akan
mengakibatkan posisi top akan berubah. Langkah operasi ini adalah :
a. Operasi push pada stack yang menggunakan array.
Langkah operasi push dalam array adalah dengan :
 Periksa apakah stack penuh (isfull). Jika bernilai false/0 (tidak penuh) maka
proses push dilaksanakan dan jika pemeriksaan ini bernilai true/1 (stack
penuh), maka proses push digagalkan.
 Proses push-nya sendiri adalah dengan menambah field top dengan 1,
kemudian elemen pada posisi top diisi dengan elemen data baru.
Untuk lebih jelas, perhatikan lagi gambar 4 mengenai representasi stack dengan
array..
Implementasinya dalam bahasa C adalah :
void push(tstack *stack, int baru)
{
if(!isfull(*stack))
{
stack->top++;
stack->elemen[stack->top]=baru;
}
else
{
printf("Stack Full. Push Gagal.\n");
}
}
Cara penggunaannya adalah :
push(&stack,5);// push 5 ke dalam stack

Halaman - 8
b. Operasi push pada stack yang menggunakan single linked list
Operasi push pada stack yang menggunakan single linked list adalah sama
dengan proses tambahawal pada operasi linked list. Langkah-langkahnya
adalah :
 Periksa apakah memori penuh (isfull). Jika bernilai false/0 (tidak penuh)
maka proses push dilaksanakan dan jika pemeriksaan ini bernilai true/1
(stack penuh), maka proses push digagalkan.
 Proses push-nya sendiri adalah dengan cara mengalokasikan suatu elemen
linked list (disebut variable baru), kemudian periksa jika stack dalam
keadaan kosong maka pointer yang menunjuk ke awal stack diisi dengan
pointer baru, dan jika dengan menambah field top dengan 1, kemudian
elemen pada posisi top diisi dengan elemen data baru. Tetapi jika pointer
penunjuk stack sudah menunjuk ke suatu data, maka sambungkan field
pointer bawah (penunjuk ke data sebelumnya) dari pointer baru ke pointer
penunjuk posisi akhir stack (top) dan kemudian pindahkah pointer penunjuk
posisi akhir stack ke pointer baru. Untuk lebih jelas perhatikan kembali
gambar 5 di halaman 3 mengenai representasi stack dengan linked linst.
Implementasi operasi ini dengan menggunakan bahasa C adalah :
void push(PStack *stack, int data)
{
PStack baru;
if(!isfull())
{
baru=(PStack)malloc(sizeof(TStack));
baru->bawah=NULL;
baru->elemen=data;
if(isempty(*stack))
*stack=baru;
else
{
baru->bawah=*stack;
*stack=baru;
}
}
else
{
printf("Memory Full. Push Gagal.\n");
}
}
Cara penggunaannya adalah :
push(&stack,5);// push 5 ke dalam stack

Halaman - 9
6. Operasi Pop
Operasi pop adalah salah satu operasi paling dasar dari stack. Operasi ini berguna
untuk mengambil elemen terakhir (top) dan kemudian menghapus elemen tersebut
sehingga posisi top akan berpindah. Operasi ini biasanya dibuat dalam bentuk
function yang me-return-kan nilai sesuai data yang ada di top.
a. Operasi pop pada stack yang menggunakan array.
Langkah operasi pop pada stack yang menggunakan array adalah terlebih dahulu
memeriksa apakah stack sedang keadaan kosong, jika tidak kosong maka data
diambil pada posisi yang ditunjuk oleh posisi top, kemudian simpan dalam
variable baru dengan nama data, kemudian posisi top – 1, kemudian nilai pada
variable data di-return-kan ke function. Untuk lebih jelas perhatikan kembali
gambar 4 di halaman 3.
Implementasi operasi ini dalam bahasa C adalah :
int pop(tstack *stack)
{
int data;
if(!isempty(*stack))
{
data=stack->elemen[stack->top];
stack->top--;
return data;
}
else
return 0;

}
Cara pemanggilannya adalah :
int data;
data=pop(&stack);

b. Operasi pop pada stack yang menggunakan single linked list


Langkah operasi pop pada stack yang menggunakan single linked list adalah
sama dengan proses hapusawal pada operasi single linked list. Prosesnya
adalah :
 Periksa apakah.stack kosong (isempty), jika kosong maka proses pop tidak
bisa dilakukan. Jika stack tidak kosong maka proses pop dijalankan.
 Proses pop-nya sendiri adalah mengambil elemen yang ditunjuk oleh pointer
stack kemudian simpan dalam variable data. Kemudian buat variable pointer

Halaman - 10
bantu yang diisi dengan pointer penunjuk stack yang nantinya akan dihapus
dari memori. Kemudian pointer penunjuk stack dipindahkan ke posisi yang
ditunjuk oleh field pointer bawah dari variable bantu.
Implementasi dalam bahasa C adalah :
int pop(PStack *stack)
{
int data;
PStack bantu;
if(!isempty(*stack))
{
data=(*stack)->elemen;
bantu=*stack;
*stack=bantu->bawah;
free(bantu);
return data;
}
else
return 0;

}
Cara pemanggilannya adalah :
int data;
data=pop(&stack);

Halaman - 11
Contoh Implementasi Stack 1
Konversi Bilangan Desimal ke Bilangan Biner

Contoh nyata implementasi stack adalah proses pengkonversian dari bilangan


decimal (basis 10) ke bilangan biner (basis 2).
Algoritmanya adalah :
1. Ambil sisa pembagian variable bilangan dengan angka 2, kemudian simpan dalam
variable sisa. Kemudian simpan isi variable sisa ke dalam stack.
2. Bagi variable bilangan dengan angka 2.
3. Ulangi langkah 1 dan 2 selama bilangan tidak 0. Jika variable bilangan telah
bernilai 0 maka lanjutkan ke langkah 4,
4. Lakukan perulangan untuk langkah 5 dan 6 selama stack masih mempunyai isi
(tidak kosong).
5. ambil (pop) nilai yang ada di stack simpan di variable data.
6. Tulis isi variable data ke layar .
7. Selesai.
Untuk lebih jelasnya perhatikan operasi konversi dari decimal ke biner dengan
variable bilangan yang akan dikonversi adalah 25.
Operasi Representasi Array Representasi
Single Linked List
Kondisi Awal
? 10
? 9
? …
? …
? 4
Operasi Stack : ? 3
? 2
inisialisasi(&stack) ? 1

Top=0 Maks_Elemen=10 Pointer Stack = NULL

Halaman - 12
Bilangan = 25.
? 10
Pembagian : 25 / 2 ? 9
Sisa = 1 ? …
Bilangan = 12 ? …
? 4
Opeasi Stack : ? 3
Push(&stack,1) ? 2
Top 1 1

Top=1 Maks_Elemen=10
Bilangan = 12.
? 10
Pembagian : 12 / 2 ? 9
Sisa = 0 ? …
Bilangan = 6 ? …
? 4
Operasi Stack : ? 3
Push(&stack,0) Top 0 2
1 1

Top=2 Maks_Elemen=10
Bilangan = 6
? 10
Pembagian : 6 / 2 ? 9
Sisa : 0 ? …
Bilangan : 3 ? …
? 4
Opeasi Stack : Top 0 3
Push(&stack,0) 0 2
1 1

Top=3 Maks_Elemen=10

Halaman - 13
Bilangan = 3
? 10
Pembagian : 3 / 2 ? 9
Sisa : 1 ? …
Bilangan : 1 ? …
Top 1 4
Operasi Stack : 0 3
Push(&stack,1) 0 2
1 1

Top=4 Maks_Elemen=10

Bilangan = 1
? 10
Pembagian : 1 / 2 ? 9
Sisa : 1 ? …
Bilangan : 0 Top 1 …
1 4
Operasi Stack : 0 3
Push(&stack,1) 0 2
1 1

Top=5 Maks_Elemen=10

Operasi pembagian variable bilangan dengan angka 2 berakhir di posisi ini karena nilai
variable bilangan sudah mencapai 0. Langkah selanjutnya adalah proses menampilkan
data biner dari stack, sampai stack habis.

Halaman - 14
Periksa :
Stack Kosong ? Tidak ? 10
? 9
Opeasi Stack : ? …
1 …
Data=pop(&stack); Top 1 4
Menghasilkan Data=1 0 3
0 2
Tampilkan variable 1 1
Data di layar
Top=4 Maks_Elemen=10
Di layar : 1

Periksa :
Stack Kosong ? Tidak ? 10
? 9
Opeasi Stack : ? …
1 …
Data=pop(&stack); 1 4
Menghasilkan Data=1 Top 0 3
0 2
Tampilkan variable 1 1
Data di layar
Top=3 Maks_Elemen=10
Di layar : 1 1

Halaman - 15
Periksa :
Stack Kosong ? Tidak ? 10
? 9
Opeasi Stack : ? …
1 …
Data=pop(&stack); 1 4
Menghasilkan Data=0 0 3
Top 0 2
Tampilkan variable 1 1
Data di layar
Top=2 Maks_Elemen=10
Di layar : 1 1 0

Periksa :
Stack Kosong ? Tidak ? 10
? 9
Opeasi Stack : ? …
1 …
Data=pop(&stack); 1 4
Menghasilkan Data=0 0 3
0 2
Tampilkan variable Top 1 1
Data di layar
Top=1 Maks_Elemen=10
Di layar : 1 1 0 0
Periksa :
Stack Kosong ? Tidak ? 10
? 9
Opeasi Stack : ? …
1 …
Data=pop(&stack); 1 4
Menghasilkan Data=1 0 3
0 2
Tampilkan variable 1 1
Data di layar
Top=0 Maks_Elemen=10 Stack = NULL
Di layar : 1 1 0 0 1
Periksa : Proses pop stack selesai karena stack telah kosong. Itu berarti
Stack Kosong ? Ya semua bilangan biner yang disimpan dalam stack telah
ditampilkan ke layar.
Pembuktian :
1 * 24 + 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 16 + 8 + 1 = 25.

Halaman - 16
Contoh Implementasi Stack 2
Notasi Polish (Polish Notation)

Dalam operasi aritmatika, dikenal 3 jenis notasi, yaitu :


1. Notasi Infix (menempatkan operator di antara 2 operand)
Contoh : A+B atau C-D atau E * F atau G / H
2. Notasi Prefix (menempatkan operator di depan / sebelum ke-2 operandnya)
Contoh : +AB atau –CD atau *EF atau /GH
3. Notasi Postfix (menempatkan operator di belakang/setelah operandnya)
Contoh : AB+ atau CD- atau EF* atau GH/
Komputer umumnya hanya mengenal ekspresi matematika yang ditulis dalam
notasi postfix. Ekspresi matematika yang ditulis dalam notasi infix agar dikenal oleh
computer harus diubah dengan memperhatikan :
1. Mengubah notasi infix menjadi postfix, kemudian menghitungnya
2. Menggunakan stack sebagai penampung sementara operator dan operandnya.

1. Mengubah Notasi Infix menjadi Notasi Postfix


Dimisalkan Q adalah ekspresi matematika yang ditulis dalam notasi infix dan P
adalah penampung ekspresi matematika dalam notasi postfix, maka algoritmanya
adalah :
a. Push tanda “(“ ke stack dan tambahkan tanda “)” di sentinel di Q.
b. Scan Q dari kiri ke kanan, kemudian ulangi langkah c s.d f untuk setiap elemen
Q sampai stack Q kosong.
c. Jika yang discan adalah operand, maka tambahkan ke P
d. Jika yang discan adalah “(“ maka push ke stack
e. Jika yang discan adalah “)” maka pop isi stack sampai ditemukan tanda “(“,
kemudian tambahkan ke P sedangkan tanda “(“ tidak disertakanke P.

Halaman - 17
f. Jika yang discan adalah operator, maka :
 Jika elemen paling atas dari stack adalah operator yang mempunyai tingatan
sama atau lebih tinggi dari operator yang discan, maka pop operator tersebut
dan tambahkan ke P.
 Push operator tersebut ke stack.
g. Keluar

Contoh kasus :
Q:A+(B*C -(D/E^F)*G)*H
Tambahkan “(” ke stack dan tambahkan tanda “)” ke sentinel Q sehingga Q menjadi
Q:A+(B*C -(D/E^F)*G)*H)
Dari Q, terdapat 20 simbol yaitu :
Q : A + ( B * C - ( D / E ^ F ) * G ) * H )
No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Urutan operasinya adalah :


No Simbol Stack Ekspresi P
(
1 A ( A
2 + (+ A
3 ( (+( A
4 B (+( AB
5 * (+(* AB
6 C (+(* ABC
7 - (+(- ABC*
8 ( (+(-( ABC*
9 D (+(-( ABC*D
10 / (+(-(/ ABC*D
11 E (+(-(/ ABC*DE
12 ^ (+(-(/^ ABC*DE
13 F (+(-(/^ ABC*DEF
14 ) (+(- ABC*DEF^/
15 * (+(-* ABC*DEF^/
16 G (+(-* ABC*DEF^/G
17 ) (+ ABC*DEF^/G*-
18 * (+* ABC*DEF^/G*-
19 H (+* ABC*DEF^/G*-H
20 ) ABC*DEF^/G*-H*+
Dari proses di atas didapatkan bahwa postfixnya adalah ABC*DEF^/G*-H*+

Halaman - 18
2. Menghitung Ekspresi Matematika yang disusun dalam Notasi Postfix
Diasumsikan P adalah ekspresi matematika yang ditulis dalam notasi postfix dan
variable value sebagai penampung hasil akhir.
Algoritmanya adalah :
a. Tambahkan tanda “)” pada sentinel di P
b. Scan P dari kiri ke kanan, ulangi langkah c dan d untuk setiap elemen P sampai
ditemukan sentinel.
c. Jika yang discan adalah operand, maka push ke stack.
d. Jika yang discan adalah operator (sebut opr1), maka
 Pop 1 buah elemen teratas dari stack, simpan dalam variable var1.
 Pop 1 buah elemen teratas dari stack, simpan dalam variable var2.
 Hitung variable (var2 opr1 var1), simpan hasil di variable hitung.
 Push variable hitung ke stack.
e. Pop isi stack dan simpan di variable value.
f. Keluar.
Contoh : P : 5, 2, 6, +, *, 12, 4, /, -
Tambahkan tanda “)”pada sentinel P sehingga
P : 5, 2, 6, +, *, 12, 4, /, -, )
Dari P, didapatkan 10 simbol yaitu :
P : 5 2 6 + * 12 4 / - )
No 1 2 3 4 5 6 7 8 9 10

Urutan operasinya adalah :


No Simbol Stack Operasi Perhitungan
1 5 5
2 2 5, 2
3 6 5, 2, 6
4 + 5, 8 var1=6,var2=2,hitung=2 + 6 =8
5 * 40 var1=8,var2=5,hitung=5 * 8 =40
6 12 40, 12
7 4 40, 12, 4
8 / 40, 3 var1=4,var2=12,hitung=12 / 4 = 3
9 - 37 Var1=3,var2=40,hitung=40 – 3 = 37

10 ) Perulangan selesai karena telah mencapai sentinel dan


data dalam stack adalah 37 (hasil akhir).
Jadi hasil operasi tersebut adalah : 37

Halaman - 19

Anda mungkin juga menyukai