Senin, 07 Desember 2015

Pemrograman(Metode Stack)

Kali ini saya akan menampilkan contoh program yang menggunakan metode stack!!
Berikut adalah contoh programnya:

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

typedef struct {
    int top;
    int data[max+1];
}stack;

stack tumpukan;
void createEmpty();
int IsEmpty();
int IsFull();
void push(int x);
void pop();

main(){
    int lagi;
    int input;
    int pilih;
    createEmpty();
    pilih = 0;
    while (pilih != 5){
    menu:system("cls");
        puts("_____________________________________");
        printf("             MENU UTAMA\n");
        //Printf dan Puts memiliki Fungsi yang sama
        puts("_____________________________________");
        puts("1: Cek kondisi Tumpukan");
        puts("2: Tambah data (Pust)");
        puts("3: Keluarkan isi Tumpukan (Pop)");
        puts("4: Kosongkan Tumpukan");
        puts("5: Keluar");
        printf("Pilihan Anda: ");
        scanf("%d",&pilih);
        switch(pilih){
        case 1:
        system("cls");
            if (IsEmpty() == 1)
                puts("Stack masih kosong");
            else if ((IsEmpty() == 0) && (IsFull() == 0))
                puts("Stack sudah terisi (belum penuh)");
            else
                puts("Stack sudah penuh");
            system("pause");
    goto menu;
        break;
        case 2:
        system("cls");
            if (IsFull() == 1)
                puts("Stack Penuh.");
            else
            {
                printf("Masukkan data: ");
                scanf("%d",&input);
                push(input);
                printf("Top baru: %d\n",tumpukan.data[tumpukan.top]);
                printf("IsFull: %d\n",IsFull());
                printf("IsEmpty: %d\n",IsEmpty());
            }
            system("pause");
    goto menu;
        break;
        case 3:
        system("cls");
            printf("Top yang dikeluarkan bernilai: %d \n",tumpukan.data[tumpukan.top]);
            pop();
            system("pause");
    goto menu;
        break;
        case 4:
        system("cls");
            while (IsEmpty() == 0)
            {
                printf("Top yang dikeluarkan bernilai: %d \n",tumpukan.data[tumpukan.top]);
                pop();
            }
            puts("Stack sudah kosong");
            system("pause");
    goto menu;
        break;
        case 5:
        system("cls");
            puts("---Terimakasih---");
            system("pause");
    goto menu;
        break;
        }
    }
   system("pause");
    goto menu;
}

void createEmpty(){
    tumpukan.top = 0;
}

void push(int x){
    tumpukan.top = tumpukan.top + 1;
    tumpukan.data[tumpukan.top] = x;
}

void pop(){
    tumpukan.top = tumpukan.top - 1;
}

int IsEmpty(){
    if (tumpukan.top == 0)
        return 1;
    else
        return 0;
}

int IsFull(){
    if (tumpukan.top == max)
        return 1;
    else
        return 0;
}


Tidak ada komentar:

Posting Komentar