Rabu, 28 Desember 2011

Stack Using Array

Stack atau dalam bahasa kita disebut tumpukan adalah suatu urutan elemen dimana elemen-elemen tersebut hanya dapat diambil atau ditambah melalui posisi teratas saja. Istilah kerennya LIFO (Last In, First Out), siapa yang masuk paling terakhir, dialah yang keluar paling awal :D Misalkan ada 20 tumpuk karung beras dalam gudang. Saat ingin memindahkan beras-beras itu ke Gudang lain, orang akan mengambil tumpukan paling atas terlebih dahulu, khan? (Jawab aja iya, dech ^^)
Stack memiliki 2 operasi dasar, yaitu:
  1. Operasi push, untuk menambahkan elemen (pada urutan teratas tentunya).
  2. Operasi pop, untuk mengambil elemen dan menghapusnya dari stack.


Berikut adalah contoh implementasi Stack dengan mengunakan Array dalam C:
01#include<stdio.h>
02#define MAX 50
03 
04typedef int data_Type;
05typedef struct
06{
07 data_Type data[MAX];
08 int TOS;
09}STACK;
10 
11data_Type item[MAX], temp, x;
12int pilih, i, n;
13char lagi='y';
14 
15void inisialisasi(STACK *s)
16{
17 s->TOS = 0;
18}
19 
20int full(STACK *s)
21{
22 return (s->TOS == n);
23}
24 
25int empty(STACK *s)
26{
27 return (s->TOS == 0);
28}
29 
30void push(data_Type x, STACK *s)
31{
32 if(full(s))
33 puts("Stack is Full!");
34 else
35 {
36 s->data[s->TOS] = x;
37 (s->TOS)++;
38 }
39}
40 
41data_Type pop(STACK *s)
42{
43 data_Type tampung;
44 if(empty(s))
45 puts("Stack is Empty!");
46 else
47 {
48 (s->TOS)--;
49 tampung = s->data[s->TOS];
50 }
51 return tampung;
52}
53 
54void tampil(STACK *s)
55{
56 for(i=s->TOS-1; i>=0; i--)
57 {
58 printf("%d  ", s->data[i]);
59 }
60 puts("");
61}
62 
63main()
64{
65 STACK s;
66 inisialisasi(&s);
67 
68 printf("Masukkan jumlah tumpukan : ");
69 scanf("%d", &n);
70 
71 while((lagi == 'y') || (lagi == 'Y'))
72 {
73 puts("MENU");
74 puts("1. Push");
75 puts("2. Pop");
76 printf("What do you want?: ");
77 scanf("%d", &pilih);
78 
79 switch(pilih)
80 {
81 case 1:
82 printf("Enter data: ");
83 scanf("%d", &x);
84 push(x, &s);
85 break;
86 case 2:
87 pop(&s);
88 break;
89 default :
90 puts("Invalid Input!");
91 break;
92 }
93 tampil(&s);
94 fflush(stdin);
95 printf("Try again [y/t]? ");
96 scanf("%c", &lagi);
97 puts("");
98 }
99}
Sekian dulu tulisan singkat saya. Mudah-mudahan bermanfaat bagi yang sedang memulai belajar C/C++ ;)

sumber

0 komentar:

Posting Komentar

You can replace this text by going to "Layout" and then "Page Elements" section. Edit " About "