Selasa, 28 Januari 2014

Struktur Data Stack

// Program tumpukan untuk tugas 
// struktur data Teknik Informatika
// Universitas Musamus Merauke
// 23 Januari 2014

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define maksimal 5

int puncak, status;

// Fungsi Dorong
void dorong (int tumpukan[], int elemen_tumpukan) { 
if (puncak == (maksimal-1))
status = 0;
else {
status = 1;
++puncak;
tumpukan[puncak] = elemen_tumpukan;
}
}

// Fungsi Tarik
int tarik (int tumpukan[]) {
int ret;
if (puncak == -1) {
ret = 0;
status = 0;

else {
status = 1;
ret = tumpukan[puncak];
--puncak;
}
return ret;
}

// Fungsi untuk menampilkan tumpukan
void tampilkan (int tumpukan[]) {
int i;
printf ("Hasil tumpukan\n ");
if (puncak == -1)
printf ("\nKosong");
else {
for (i = puncak; i >= 0; --i)
printf ("\n=======\n|%3d  |\n=======", tumpukan[i]);
}
printf("\n");
}

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {

int tumpukan [maksimal], elemen_tumpukan, pilihan;

puncak = -1;

do {
do {
printf ("\n<<<< Menu Utama >>>>\n");
printf ("\n1. Dorong kedalam tumpukan");
printf ("\n2. Tarik dari tumpukan");
printf ("\n3. Selesai\n");
printf ("\nMasukkan pilihan Anda: ");
scanf ("%d",&pilihan);
if (pilihan < 1 || pilihan > 3 )
printf ("\nPilihan yang tersedia adalah 1, 2, 3 ; Silahkan ulangi lagi");
}
while (pilihan < 1 || pilihan > 3);
switch (pilihan) {
case 1 :
printf ("\nMasukkan elemen yang akan didorong: ");
scanf("%d",&elemen_tumpukan);
printf("\n%4d\n", elemen_tumpukan);
dorong (tumpukan, elemen_tumpukan);
if (status) {
printf ("\nSetelah didorong ");
tampilkan (tumpukan);
if (puncak == (maksimal-1))
printf ("\nTumpukan sudah penuh\n");

} else 
printf ("\nTumpukan sudah mencapai batas maksimal\n");

break;

case 2 :
elemen_tumpukan = tarik (tumpukan);
if (status) {
printf ("\nElemen tumpukan yang akan ditarik adalah %d. Setelah ditarik ");
tampilkan (tumpukan);
} else
printf ("\nTumpukan sudah mencapai batas minimal\n");

break;

default: 
printf ("\nAkhir proses");
}
} while (pilihan != 3);
getch();
return 0;
}

Tidak ada komentar:

Posting Komentar