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.

Pada Artikel ini saya akan memberikan contoh implementasi Stack menggunakan Array dalam bahasa C di bawah ini :

Berikut adalah contoh implementasi Stack dengan mengunakan Array dalam C:

01 #include<stdio.h>
02 #define MAX 50
03
04 typedef int data_Type;
05 typedef struct
06 {
07  data_Type data[MAX];
08  int TOS;
09 }STACK;
10
11 data_Type item[MAX], temp, x;
12 int pilih, i, n;
13 char lagi='y';
14
15 void inisialisasi(STACK *s)
16 {
17  s->TOS = 0;
18 }
19
20 int full(STACK *s)
21 {
22  return (s->TOS == n);
23 }
24
25 int empty(STACK *s)
26 {
27  return (s->TOS == 0);
28 }
29
30 void 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
41 data_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
54 void 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
63 main()
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++ ;)

Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: