Anda di halaman 1dari 50

STACK LINIER

Contoh Program dan Penjelasannya

Oleh Achmad Solichin


Assisten Laboratorium Komputer FTI
Universitas Budi Luhur
08 April 2004
Niscaya Allah akan meninggikan derajat
orang-orang yang beriman di antara
kamu dan orang-orang
yang diberi ilmu pengetahuan
beberapa derajat
Dan Allah Maha Mengetahui apa yang
kamu kerjakan.
(QS Al-Mujaadalah : 11)
#include "stdio.h"
#include "conio.h"
HEADER FUNGSI
#include "stdlib.h"
#include "ctype.h"
void push();
void pop();
void tampil();
void reset();
int x[5],dasar=0;
int atas=0,pil,bil;
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "ctype.h"
void push(); DEKLARASI FUNGSI push();

void pop();
void tampil();
void reset();
int x[5],dasar=0;
int atas=0,pil,bil;
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "ctype.h"
void push();
void pop(); DEKLARASI FUNGSI pop();

void tampil();
void reset();
int x[5],dasar=0;
int atas=0,pil,bil;
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "ctype.h"
void push();
void pop();
void tampil(); DEKLARASI FUNGSI tampil();

void reset();
int x[5],dasar=0;
int atas=0,pil,bil;
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "ctype.h"
void push();
void pop();
void tampil();
void reset(); DEKLARASI FUNGSI reset();

int x[5],dasar=0;
int atas=0,pil,bil;
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "ctype.h"
void push();
void pop();
void tampil();
void reset();
int x[5],dasar=0; DEKLARASI stack x[5],
variabel dasar, atas, pil
int atas=0,pil,bil; dan bil
void main()
{
menu :
clrscr();
gotoxy(25,3);
printf("====================");
gotoxy(25,4);
printf(“ Menu pilihan : ");
gotoxy(25,5);
printf("====================");
gotoxy(25,6); printf(" 1. Push ");
gotoxy(25,7); printf(" 2. Pop ");
void main() FUNGSI main();
{
menu :
clrscr();
gotoxy(25,3);
printf("====================");
gotoxy(25,4);
printf(“ Menu pilihan : ");
gotoxy(25,5);
printf("====================");
gotoxy(25,6); printf(" 1. Push ");
gotoxy(25,7); printf(" 2. Pop ");
void main()
{
menu : DEKLARASI LABEL
clrscr();
gotoxy(25,3);
printf("====================");
gotoxy(25,4);
printf(“ Menu pilihan : ");
gotoxy(25,5);
printf("====================");
gotoxy(25,6); printf(" 1. Push ");
gotoxy(25,7); printf(" 2. Pop ");
void main()
{
menu :
clrscr(); MEMBERSIHKAN LAYAR
gotoxy(25,3);
printf("====================");
gotoxy(25,4);
printf(“ Menu pilihan : ");
gotoxy(25,5);
printf("====================");
gotoxy(25,6); printf(" 1. Push ");
gotoxy(25,7); printf(" 2. Pop ");
void main()
{
menu :
clrscr();
MEMINDAHKAN CURSOR
gotoxy(25,3); KE BARIS 25 , KOLOM 3
printf("====================");
gotoxy(25,4);
3
printf(“ Menu pilihan : ");
gotoxy(25,5); 25
printf("====================");
gotoxy(25,6); printf(" 1. Push ");
gotoxy(25,7); printf(" 2. Pop ");
gotoxy(25,8);
printf("3. Preview ");
gotoxy(25,9);
printf("4. Clear ");
gotoxy(25,10);
printf("5. Exit ");
gotoxy(25,11);
printf("============
===");
gotoxy(25,12);
printf("Masukkan pilihan :
"); scanf("%i", &pil);
gotoxy(25,8);
printf("3. Preview ");
SAMPAI DI SINI PROGRAM
gotoxy(25,9); AKAN MENAMPILKAN
MENU PILIHAN BERUPA :
printf("4. Clear "); 1. Push
2. Pop
gotoxy(25,10); 3. Preview
4. Clear
printf("5. Exit "); 5. Exit
gotoxy(25,11);
printf("===========
====");
gotoxy(25,12);
printf("Masukkan pilihan :
"); scanf("%i", &pil);
gotoxy(25,8);
printf("3. Preview ");
gotoxy(25,9);
printf("4. Clear ");
gotoxy(25,10);
printf("5. Exit ");
gotoxy(25,11);
printf("===========
====");
gotoxy(25,12);
Masukkan Pilihan
printf("Masukkan pilihan :
"); scanf("%i", &pil);
gotoxy(25,8);
printf("3. Preview ");
gotoxy(25,9);
printf("4. Clear ");
gotoxy(25,10);
printf("5. Exit ");
gotoxy(25,11);
printf("===========
===="); MEMINTA INPUTAN
BILANGAN
gotoxy(25,12); INTEGER DAN
DIMASUKKAN
printf("Masukkan pilihan : DALAM VARIABEL pil
"); scanf("%i", &pil);
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil);
push();
getch();
break;
case 2 : pop(); break;
case 3 : tampil(); getch(); break;
case 4 : reset(); getch(); break;
case 5 : exit(0); break;
}
goto menu;
}
switch(pil) STRUKTUR
switch … case AKAN
{ case 1 : gotoxy(25,13); MEMERIKSA ISI
printf("Masukkan bil = "); VARIABEL pil YANG
scanf("%i", &bil); AKAN MENENTUKAN
PERINTAH MANA YANG
push(); DILAKSANAKAN
getch();
Bentuk umum :
break; switch(pilihan) {
case 2 : pop(); break; case 1 : <statemen>;
case 3 : tampil(); getch(); break; break;
case 2 : <statemen>;
case 4 : reset(); getch(); break; break;
case 5 : exit(0); break; ……
default : <statemen>;
} }
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13); JIKA ISI VARIABEL pil=1
MAKA STATEMENT
printf("Masukkan bil = "); DALAM BLOK INI AKAN
scanf("%i", &bil); DILAKSANAKAN
push();
getch();
break;
case 2 : pop(); break;
case 3 : tampil(); getch(); break;
case 4 : reset(); getch(); break;
case 5 : exit(0); break;
}
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = "); MASUKKAN BILANGAN
scanf("%i", &bil); YANG AKAN MASUK
push(); KE STACK

getch();
break;
case 2 : pop(); break;
case 3 : tampil(); getch(); break;
case 4 : reset(); getch(); break;
case 5 : exit(0); break;
}
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil); MEMINTA INPUTAN
push(); BILANGAN
INTEGER DAN
getch(); DIMASUKKAN
break; DALAM VARIABEL bil
case 2 : pop(); break;
case 3 : tampil(); getch(); break;
case 4 : reset(); getch(); break;
case 5 : exit(0); break;
}
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil);
push(); PANGGIL FUNGSI
getch(); push() YANG
MENGINPUT
break; ISI VARIABEL BIL KE
case 2 : pop(); break; DALAM STACK X
case 3 : tampil(); getch(); break;
case 4 : reset(); getch(); break;
case 5 : exit(0); break;
}
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil);
push(); break;
getch(); AKAN KELUAR DARI
switch SEHINGGA
break; PERINTAH YANG ADA
case 2 : pop(); break; DI BAWAHNYA TIDAK
AKAN DILAKSANAKAN
case 3 : tampil(); getch(); break;
case 4 : reset(); getch(); break;
case 5 : exit(0); break;
}
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil);
push();
getch();
JIKA NILAI VARIABEL
break; pil=2 MAKA PANGGIL
case 2 : pop(); break; FUNGSI pop() UNTUK
MENGELUARKAN
case 3 : tampil(); getch(); break; ISI STACK
case 4 : reset(); getch(); break;
case 5 : exit(0); break;
}
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil);
push();
getch();
break;
JIKA NILAI VARIABEL
case 2 : pop(); break; pil=3 MAKA PANGGIL
case 3 : tampil(); getch(); break; FUNGSI tampil() UNTUK
MENAMPILKAN
case 4 : reset(); getch(); break; ISI STACK
case 5 : exit(0); break;
}
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil);
push();
getch();
break;
case 2 : pop(); break; JIKA NILAI VARIABEL
case 3 : tampil(); getch(); break; pil=4 MAKA PANGGIL
FUNGSI reset() UNTUK
case 4 : reset(); getch(); break; MENGEMBALIKAN ISI
case 5 : exit(0); break; VARIABEL atas dan
dasar
}
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil);
push();
getch();
break;
case 2 : pop(); break;
case 3 : tampil(); getch(); break;
JIKA NILAI VARIABEL
case 4 : reset(); getch(); break; pil=5 MAKA PANGGIL
case 5 : exit(0); break; FUNGSI exit(0) DIMANA
PROGRAM AKAN
} SELESAI
goto menu;
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil);
push();
getch();
break;
case 2 : pop(); break;
case 3 : tampil(); getch(); break;
case 4 : reset(); getch(); break;
case 5 : exit(0); break;
}
MENUJU KE LABEL
goto menu; menu
}
switch(pil)
{ case 1 : gotoxy(25,13);
printf("Masukkan bil = ");
scanf("%i", &bil);
push();
getch();
break;
case 2 : pop(); break;
case 3 : tampil(); getch(); break;
case 4 : reset(); getch(); break;
case 5 : exit(0); break;
}
AKHIR FUNGSI
goto menu; main()
}
void push() FLOWCHART PUSH()
{ if(atas<5)
{ x[atas] = bil;
atas++; atas<5

gotoxy(25,14);
x[atas]=bil
printf("%i telah masuk",bil);
penuh
tampil();
atas++
} else {
gotoxy(25,14);
berhasil
printf("Stack penuh");
}
}
void push() FUNGSI push() YANG
{ if(atas<5) AKAN MENAMBAHKAN
BILANGAN YANG
{ x[atas] = bil; DIINPUT KE DALAM
atas++; STACK

gotoxy(25,14);
printf("%i telah masuk",bil);
tampil();
} else {
gotoxy(25,14);
printf("Stack penuh");
}
}
void push()
{ if(atas<5) DALAM PROSES push()
{ x[atas] = bil; PERTAMA KALI DIPE-
RIKSA APAKAH STACK
atas++; SUDAH PENUH. JIKA
atas MASIH KURANG
gotoxy(25,14); DARI 5 (JUMLAH MAX
printf("%i telah masuk",bil); STACK) MAKA STACK
MASIH BISA DIISI
tampil();
} else {
gotoxy(25,14);
printf("Stack penuh");
}
}
void push()
{ if(atas<5)
{ x[atas] = bil; ISI VARIABEL bil
atas++; DISALIN
KE STACK x INDEX
gotoxy(25,14); YANG KE-atas
printf("%i telah masuk",bil);
tampil();
} else {
gotoxy(25,14);
printf("Stack penuh");
}
}
void push()
{ if(atas<5)
{ x[atas] = bil; POINTER atas
atas++; DIGESER KE KANAN.
atas = atas+1
gotoxy(25,14);
printf("%i telah masuk",bil);
tampil();
} else {
gotoxy(25,14);
printf("Stack penuh");
}
}
void push()
{ if(atas<5)
{ x[atas] = bil;
atas++;
gotoxy(25,14); NYATAKAN BAHWA
ISI VARIABLE bil
printf("%i telah masuk",bil); TELAH MASUK KE
tampil(); STACK

} else {
gotoxy(25,14);
printf("Stack penuh");
}
}
void push()
{ if(atas<5)
{ x[atas] = bil;
atas++;
gotoxy(25,14);
printf("%i telah masuk",bil); PANGGIL FUNGSI
tampil(); tampil() UNTUK ME-
NAMPILKAN ISI STACK
} else {
gotoxy(25,14);
printf("Stack penuh");
}
}
void push()
{ if(atas<5)
{ x[atas] = bil;
atas++;
gotoxy(25,14);
printf("%i telah masuk",bil);
tampil();
} else {
NYATAKAN STACK
gotoxy(25,14); PENUH JIKA KONDISI
ATAS<5 TIDAK
printf("Stack penuh"); TERPENUHI
}
}
void pop()
FLOWCHART POP()
{ if(atas>0)
{ atas --;
bil = x[atas]; atas>5
gotoxy(25,13);
printf("%i telah dihapus",bil); atas --
} else { kosong
gotoxy(25,13); bil=x[atas]
printf("Stack kosong");
} terhapus
getch();
}
void pop()
FUNGSI pop() YANG
{ if(atas>0) AKAN MENGELUARKAN
BILANGAN DALAM
{ atas --; STACK SATU PER SATU
bil = x[atas];
gotoxy(25,13);
printf("%i telah dihapus",bil);
} else {
gotoxy(25,13);
printf("Stack kosong");
}
getch();
}
void pop()
{ if(atas>0) DALAM PROSES pop()
{ atas --; PERTAMA KALI DIPE-
RIKSA APAKAH STACK
bil = x[atas]; KOSONG. JIKA atas
MASIH LEBIH BESAR
gotoxy(25,13); DARI 0 (NILAI AWAL
printf("%i telah dihapus",bil); atas) MAKA STACK
MASIH ADA ISINYA
} else {
gotoxy(25,13);
printf("Stack kosong");
}
getch();
}
void pop()
{ if(atas>0)
{ atas --; POINTER atas
bil = x[atas]; DIGESER KE KIRI.
atas = atas-1
gotoxy(25,13);
printf("%i telah dihapus",bil);
} else {
gotoxy(25,13);
printf("Stack kosong");
}
getch();
}
void pop()
{ if(atas>0)
{ atas --;
ISI VARIABEL x[atas]
bil = x[atas]; DISALIN
gotoxy(25,13); KE VARIABEL bil

printf("%i telah dihapus",bil);


} else {
gotoxy(25,13);
printf("Stack kosong");
}
getch();
}
void pop()
{ if(atas>0)
{ atas --;
bil = x[atas];
gotoxy(25,13); NYATAKAN BAHWA
ISI VARIABLE bil
printf("%i telah dihapus",bil); TELAH DIHAPUS DARI
} else { STACK

gotoxy(25,13);
printf("Stack kosong");
}
getch();
}
void pop()
{ if(atas>0)
{ atas --;
bil = x[atas];
gotoxy(25,13);
printf("%i telah dihapus",bil);
} else {
NYATAKAN STACK
gotoxy(25,13); KOSONG JIKA KONDISI
printf("Stack kosong"); atas>0 TIDAK
TERPENUHI
}
getch();
}
void tampil()
{ int i,baris; FLOWCHART TAMPIL()
i = 0;baris=17;
gotoxy(25,15);
printf("==================") int i=0;
;
gotoxy(25,16);
printf("Isi stack : "); i<atas
while(i<atas)
{ gotoxy(25,baris);
cetak
printf("x[%i] = %2i", i, x[i]);
isi
i++; baris++; stack
}
gotoxy(25,baris); i++;
printf("=================\n")
;
gotoxy(25,++baris);
printf("Press any key ....");
}
void tampil()
{ int i,baris;
i = 0;baris=17;
gotoxy(25,15);
printf("==================")
;
gotoxy(25,16);
printf("Isi stack : ");
while(i<atas)
PERULANGAN UNTUK
{ gotoxy(25,baris); MENAMPILKAN ISI
printf("º x = %2i", x[i]); STACK. PERULANGAN
i++; baris++; DIMULAI DARI i=0
} SELAMA i<atas
gotoxy(25,baris);
printf("=================\n")
;
gotoxy(25,++baris);
printf("Press any key ....");
}
void reset()
{
atas = 0; FUNGSI reset() UNTUK
MENGEMBALIKAN STACK KE
dasar = 0; KEADAAN SEMUA(AWAL)
DIMANA atas=0 DAN dasar=0
printf("Stack telah
dikosongkan.....");
}
SELESAI
Alhamdulillahi Robbil ‘Alamiin