Jumat, 11 Januari 2013

STACK


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.

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. 

Source code program: 
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#define MAXSTACK 999
typedef int itemType;

typedef struct {
     float item[MAXSTACK];
   int jml;
} Stack;

void init(Stack *s){
     s->jml=0;
}

int kosong(Stack *s){
     return (s->jml==0);
}

int penuh(Stack *s){
     return (s->jml==MAXSTACK);
}

void isi(itemType y, Stack *s){
     clrscr();
     if(penuh(s)){
           clrscr();
           printf("\n\tMaaf.! data sudah penuh\n");
           }
     else{
           s->item[s->jml]=y;
      ++(s->jml);
   }
}

void ambil(Stack *s, itemType *x){
     if(kosong(s))
           printf("\n\tMaaf data masih kosong\n");
     else{
    --(s->jml);
      *x=s->item[s->jml];
      s->item[s->jml]=0;
           printf("\n\tData %i berhasil diambil\n",*x);
      }
}

void hapus(Stack *s){
     s->jml=0;
     printf("\n\tSemua data berhasil dihapus\n");
}

void tampil(Stack *s){
     int x=s->jml;
     if(kosong(s)){
           printf("\n\tMaaf.! Data masih kosong\n");
     }
     else
{
     printf("\n");
     printf("Data yang dimasukkan berjumlah : %d\n",x);
     printf("=======================================\n");
     for(int i=s->jml-1; i>=0; i--){
           printf("\tData ke[%d]\t: %.0f\n",i,s->item[i]);
     }
     printf("\n=======================================\n");
     }
}
void main(){
   int pil;
   char lagi;
   Stack tumpukan;
   itemType data;
   init(&tumpukan);
           back:
           clrscr();
   printf(“==========================\n”);
   printf(“UBAIDILLAH\n”);
   printf(“1412110052\n”);
   printf(“==========================\n”);
           printf("\t===============================\n");
           printf("\t____________MENU_____________\n");
           printf("\n\t1. Isi[PUSH]");
           printf("\n\t2. Lihat[PRINT]");
           printf("\n\t3. Ambil[POP]");
           printf("\n\t4. Hapus[CLEAR]");
           printf("\n\t5. Keluar[EXIT]\n");
           printf("\t=============================");
           printf("\n\n\tMasukkan pilihan: ");
           scanf("%i",&pil);
switch(pil){
case 1:
     ok:
     clrscr();
     tampil(&tumpukan);
printf("\n\tMasukkan data: ");
scanf("%i",&data);
     isi(data,&tumpukan);
     tampil(&tumpukan);
     printf ("\n\n\tIsi Data Lagi [Y/T]? : ");
     ulang:
     lagi = getchar();
     if(lagi=='T' || lagi=='t'){
     goto back;;
     }else if(lagi=='Y' || lagi=='y'){
     goto ok;
     }
     else if(lagi!='T' || lagi!='t'||lagi!='Y' ||lagi!='y')
{
           goto ulang;
     }
     break;
     case 2:
           clrscr();
           tampil(&tumpukan);
           printf("\n\n\tPress any key to continue..");
           getch();
           goto back;
           break;
           case 3:
           ambil(&tumpukan,&data);
           printf("\n\n\tPress any key to continue..");
           getch();
           goto back;
           break;
     case 4:
           hapus(&tumpukan);
           printf("\n\tPress any key to continue..");
           getch();
           goto back;
           break;
     case 5:
           clrscr();
     gotoxy(21,5);printf("Terima Kasih telah menggunakan Program ini");
           exit(0);
           break;
     default:
           clrscr();
           printf("\tPilihan Tidak tersedi.!");
           printf("\n\n\tPress any key to continue..");
           getch();
           goto back;
           break;
           }
}

Hasil percobaan:



STACK
fungsi dan penggunaan elemen elemen c++
membuat program faktorial menggunakan prototype dan rekursif
membuat segitiga pascal menggunakan bahasa c
menghitung nilai rata-rata mahasiswa menggunakan array
membuat segitiga samasisi menggunakan looping/perulangan
membuat segitiga angka menggunakan looping/perulangan
membuat algoritma sederhana menggunakan bahasa c
menghitung sisi miring segitiga menggunakan bahasa c
menghitung luas dan keliling lingkaran menggunakan bahasa c
definisi pemrograman bahasa c

Tidak ada komentar:

Posting Komentar