Sunday, March 24, 2013

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++ ;)
Judul: Stack Using Array; Ditulis oleh Unknown; Rating Blog: 5 dari 5

0 komentar:

Post a Comment