double stack
ciri2 double stack :
- stack 1 kosong : top1 = -1
- stack 2 kosong : top2 = n
- stack penuh (stack 1 dan stack 2 tidak bisa diisi) : top2 – top1 = 1
- stack bisa diisi (stack 1 dan stack 2 tidak bisa diisi) : top2 – top1 > 1
- stack 1 ada isinya : top1 > -1
- stack 2 ada isinya : top2 < n
kondisi awal :
top1 = -1; top2 = n;
algoritma dasar double stack :
- PUSH stack 1
top1 = top1 + 1; s[top1] = x;
- POP stack 1
x = s[top1]; top1 = top1 - 1;
- PUSH stack 2
top2 = top2 - 1; s[top2] = x;
- POP stack 2
x = s[top2]; top2 = top2 + 1;
algoritma lengkap double stack :
- PUSH stack 1
void PUSH1(void){ if(top2 - top1 > 1){ top1 = top1 + 1; s[top1] = x; }else{ printf( "stack penuh"); } }
- POP stack 1
void POP1(void){ if(top1 > -1){ x = s[top1]; top1 = top1 - 1; }else{ printf( "stack 1 kosong"); } }
- PUSH stack 2
void PUSH2(void){ if(top2 - top1 > 1){ top2 = top2 + 1; s[top2] = x; }else{ printf( "stack penuh"); } }
- POP stack 2
void POP2(void){ if(top2 < n){ x = s[top2]; top2 = top2 + 1; }else{ printf( "stack 2 kosong"); } }
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.


