Coretanku

Tempatku Berbagi…

Category Archives: C++

Stack di C++

Wokey, ketemu lagi dengan coretanku :D, kali ini akan ngebahas stack karena ada tugas kuliah dan temen2 ane ada yg nanya (lebih tepatnya minta jawaban :D), daripada males ngirimin email satu-satu mending posting aja di blog.. hehe

Ok,, langsung aja Stack sendiri merupakan sebuah konsep untuk menyimpan dan mengambil dengan algoritma LIFO (“Last In First Out”) dimana data yang masuk duluan yang akan dikeluarkan terlebih dahulu, contoh realnya ketika kita memasukkan bola ke dalam suatu tabung, maka bola yang dimasukkan pertama kali akan diambil terakhir kali,, nah seperti itulah kira2 konsep stack..

Operasi-operasi yang ada di stack yaitu antara lain
– push yang digunakan untuk menyimpankan data
– pop untuk mengambil data
– isEmpty untuk menentukan stack dalam keadaan kosong
– isFull untuk menentukan stack dalam keadaan penuh
– clear untuk menghapus stack
yah, kira2 itu yang perlu diperhatikan.. langsung ke contoh source code ja…

#include <stdio.h>
#include <conio.h>
#include <iostream.h>

#define MAXSTACK 100

typedef int itemType;
typedef struct {
	int 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 x, Stack *s){
	if(penuh(s))
    	printf("\nMaaf data sudah penuh\n");
   else{
   	s->item[s->jml]=x;
      ++(s->jml);
   }
}

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

void tampil(Stack *s){
	if(kosong(s))
   	printf("\nMaaf Data masih kosong\n");
   else
   	printf("\n");
		for(int i=s->jml-1;i>=0;i--){
   		printf("Data: %d\n",s->item[i]);
   	}
}

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

void main(){
	int pil;
   Stack tumpukan;
   itemType data;
   init(&tumpukan);

   do{
   	printf("\nMENU: \n 1. Isi\n 2. Ambil\n 3. Lihat\n 4. Hapus\n 5. Keluar\n");
   	printf("Masukkan pilihan: "); scanf("%i",&pil);

      switch(pil){
      	case 1:
         	printf("\nMasukkan data: "); scanf("%i",&data);;
            isi(data,&tumpukan);
            break;
         case 2:
         	ambil(&tumpukan,&data);
            break;
         case 3:
         	tampil(&tumpukan);
            break;
         case 4:
            hapus(&tumpukan);
            break;
      }
   }while(pil!=5);

   getch();
}

Wokey,, itu contoh sourcecodenya, tinggal dijalanin aja,, o ya sedikit keterangan tentang fungsi yang ada
fungsi isi=push
fungsi ambil=pop
fungsi kosong=isEmpty
fungsi penuh=isFull
fungsi hapus=Clear
udah itu aja cuman namahin dikit,, hasilnya setelah dijalankan kira2 kayak gini:


yah udah kelar, tampilannya ga menarik sama sekali ya.. hehehe cuman item putih kaya’ gitu.. ckckck,, udah segitu aja,, semoga bermanpaat ea.. mau tidur dulu udah ngantuk e..