Select Your Language

English French German Spain Italian Dutch

Russian Portuguese Japanese Korean Arabic Chinese Simplified
by : BTF

1.1.  Tujuan

1.1.1.      Praktikum dapat mengimplementasikan struktur data dengan stack.
1.1.2.      Praktikum dapat membuat program struktur data dengan stack.

1.2.  Alat dan Bahan.
1.2.1.      Satu  set komputer
1.2.2.      Program Bahasa C

1.3.  Dasar Teori
Secara sederhana, stack bisa diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang diletakkan di atas data yang yang lain. Satu hal yang perlu kita ingat adalah bahwa kita bisa menambah (menyisipkan) data, dan mengambil (menghapus data lewat ujung yang sama, yang disebut sebagai utung atas tumpukan (top of stack).
Untuk menjelaskan pengertian di atas kita ambil contoh sebagai berikut. Misalnya kita mempunyai dua buah kotakyang kita tumpuk, sehingga kotak kita letakkan di atas kotak yang lain. Jika kemudian tumpukan dua buah kota itu kita tambah dengan kotak ketiga, keempat dan seterusnya, maka kita peroleh tumpukan kotak, yang terdiri dari N kotak.
Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar 1.1. di bawah ini. Dari gambar ini kita bisamengatakan bahwa kotak B adata di atas kotak A dan ada di bawah kotak C. Gambar di bawah ini menujukkan bahwa dalam tumpukan kita hanya bisa menambah atau mengambil sebuah kotak lewat  sata ujung, yaitu ujung bagian atas. Dapat dilihat pula bahwa tumpukan merupakan kumpulan data yang sifatnya dinamis artinya kita bisa menambah dan mengambal data darinya.





Gambar 1.1. Stack yang terdiri dari 6 kotak

            Timbul  pertanyaan, ujung yang manakah yang kita anggap sebagai ujung atas tumpukan tersebut. Untuk menjawab pertanyaan ini kita harus menentukan ujung mana yang kita gunakan untuk mengambil atau menyisipkan data yang baru. Dengan pengambaran tumpukan seperti gambar 1.1. di atas, kita menganggap atau memilih bahwa kotak F adalah bagian atas dari tumpukan tersebut. Jika ada kotak lain yang akan disisipkan, maka ia akan diletakkan di atas kotak F, dan jika ada kotak yang akan diammbil, maka kotak F lah yang akan diambil pertama kali.
            Penggambaran tumpukan tidak harus seperti di atas. Kita bisa menggambar tumpukan dengan cara lain, seperti terlihat pada gambar 1.2. Untuk mempermudah pemahaman, dan seterusnya kita akan menggambarkan seperti tumpukan gambar 1.1.
            Dengan memperlihatkan ilustrasi-ilustrasi yang disebutkan maka kita bisa melihat bahwa tumpukan merupakan suatu list yang mempunyai watak “masuk terakhir keluar pertama” (last in first out – LIFO).







           

Gambar 1.2. Cara lain penggambaran Stack
1.3.1.      Stack dengan array
Operasi/fungsi pada stack
v  Push : digunakan untuk menambah item pada stack  pada tumpukan paling atas
v  Pop : digunakan untuk mengambil item pada stack  pada tumpukan paling atas
v  Clear : digunakan untuk mengosongkan stack
v  IsEmpty : fungsi yang digunakan untuk mengecek  apakah stack sudah kosong
v  IsFull : fungsi yang digunakan untuk mengecek  apakah stack sudah penuh

Inisialisasi stack
§  Definisikan Stack dengan menggunakan struct
Contoh: typedef  struct STACK{ int top;
           Char data[10][10]; };
§  Definisikan MAX_STACKuntuk maksimum isi stack
Contoh: #define MAX_STACK 10//hati-hati mulai dari 0 jadi 0-9
§  Buatlah variable array data sebagai implementasi stack secara nyata
Contoh: STACKtumpuk;
§  Pada mulanya isi top dengan 1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG!
§  Top adaah suatu variable penanda dalam STACK yang menunjukkan elemen teratas stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH!

Ilustrasi stack saat inisialisasi

MAX STACK
9
 8
7

Void inisialisasi()
{
       Tumpuk.top=-1
}
6
5
4
3
2
1

Top = -1
0

Fungsi isfull
Ø  Untuk memeriksa apakah stack sudah penuh?
Ø 

Int isfull()
{
       If (tumpuk.top==max_stack-1)
           Return 1;
       Else
           Return 0;
}
Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK 1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full.

                Fungsi isempty
·         Untuk memeriksa apakah stack masih kosong?
·         Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong!



Int isempty()
{
       If (tumpuk.top==-1)
           Return 1;
       Else
           Return 0;
}










                Fungsi push
ü  Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack
ü  Tambah satu (increment) nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan indeks top of stack setelah ditambah satu (diincrement)



Void push ()
{
         Tumpuk.top++;
          Strcpy (tumpuk.data [tumpuk.top],d);
}








                Fungsi pop
o   Untuk mengambil elemen teratas dari stack.
o   Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nnilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack sehingga jumlah elemen stack berkurang



Void pop ()
{
         Printf (“elemen terakhir stack telah dihapus, yaitu %s\n”, tumpuk.data[tumpuk.top]);
         Tumpuk.top--;
}








Fungsi print
*      Untuk menampilkan semua elemen-elemen stack
*      Dengan cara looping semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang kecil!







Void tampilstack ()
{
         For( int i=tumpuk.top; i>=0; i--)
        {   printf(“Data : %s\n”, tumpuk.data[i]);  }
}








Langkah Percobaan Stack Dengan Array
Buatlah program stack dengan array menggunakan Bahasa C  untuk masukan data, Hapus data, Me-reset Stack,  dan Tampil isi Stack. Data-data yang tersedia adalah sebagai berikut :
NAMA
Astari
Ayu
Attin
Dessy
Kartini
Nita

Struktur datanya adalah sebagai berikut :
            Char dt[10];
            Printf(“Nama : “); scanf(“%s”, &dt);

Tampilan menu utama program setelah di-run adalah sebagai berikut :

                        Pilihan Proses
[1] Masukan data
[2] Hapus data
[3] Tampil Isi Stack
 [4] Mereset Stack
[5] Keluar
Masukkan kode pilihan (1 … 5)




[1] Masukan data
            Jika lakukan pilihan 1, berarti kita akan masukan data stack, silakan masukan nama anda :
      Nama   =


[2] Hapus data
            Pilihan 2, adalah prosedur hapus data, setelah selesai melakukan prosedur ini munculkan pesan “'Elemen terakhir Stack sudah dihapus”.

[3] Tampil isi data
            Pilihan 3, adalah prosedur untuk menampilkan semua record yang telah kita masukkan, dengan tampilan sebagai berikut :
Data : Nita
Data : Kartini
Data : Dessy
Data : Attin
Data : Ayu
Data : Astari

[4] Me-reset Stack
Pilihan 4, adalah prosedur Me-reset Stack, berarti semua record yang telah dimasukkan akan dihapus, setelah selesai melakukan prosedur ini munculkan pesan ''Stack sudah dihapus”.

[5] Keluar
            Pilhan 5, adalah prosedur untuk keluar dari program stack array, kembali ke program Bahasa C.


Listing Program Stack Array


#include <stdio.h>
#include <conio.h>
#include <string.h>
void inisialisasi();
void push();
void pop();
void clear();
#define MAX_STACK 10
typedef struct STACK
{ int top;
  char data[10][10];};

STACK tumpuk;

void inisialisasi()
{ tumpuk.top= -1;}

int IsFull()
{ if(tumpuk.top== MAX_STACK-1) return 1; else return 0;}

int IsEmpty()
{ if(tumpuk.top== -1) return 1; else return 0;}

void Push(char d[10])
{ tumpuk.top++;
strcpy(tumpuk.data[tumpuk.top],d); }

void Pop()
{ printf("Elemen terakhir stack sudah dihapus, yaitu : %s\n",tumpuk.data[tumpuk.top]);
tumpuk.top--; }

void Clear()
{ tumpuk.top=-1; }

void TampilStack()
{
   for(int i=tumpuk.top;i>=0;i--)
   { printf("Data : %s\n",tumpuk.data[i]); }
}

int main()
{
   int pil;
   inisialisasi();
   char dt[10];
do{
    clrscr();
    printf("PILIHAN PROSES\n");
    printf("[1] Masukan Data\n");
    printf("[2] Hapus Data\n");
    printf("[3] Tampil Isi Stack\n");
    printf("[4] Mereset Stack\n");
    printf("[5] Keluar\n");
    printf("Masukan kode pilihan (1 ... 5) : "); scanf("%d",&pil);

switch(pil)
{
   case 1: if(IsFull() != 1)
   { printf("Nama = ");scanf("%s",dt);
   Push(dt); }
   else
    printf("\nSudah penuh, push gagal!\n");
   break;

   case 2: if(IsEmpty() != 1)
   Pop();
   else
   printf("\nMasih kosong!\n");
   break;

   case 3: if(IsEmpty() != 1)
   TampilStack();
   else
   printf("\nStack kosong!\n");
   break;

   case 4: Clear();
   printf("\nStack sudah di hapus!\n");
   break;
   }
  getch();
  } while(pil!= 5);
getch();
}


Hasil Program Stack Array

Jika program tersebut di atas dijalankan (di run) maka akan muncul tampilan menu utama sebagai berikut :
Pilihan Proses
[1] Masukan data
[2] Hapus data
[3] Tampil isi stack
 [4] Me-reset Stack
[5] Keluar
Masukkan kode pilihan {1 … 5)
Ketik angka 1 untuk pilihan [1] Masukan data, maka silakan masukan nama anda
Nama   =

Kemudian kita masukan berturut-turut sebanyak enam record, seperti di bawah ini :
Nama   = Astari
Nama   = Ayu
Nama   = Attin
Nama   = Dessy
Nama   = Kartini
Nama   = Nita

Tekan enter, kemudian ketik 1 untuk memasukan record yang baru
Untuk menampilkan atau melihat isi stack yang  telah dimasukkan ketik 3,  [3] Tampil isi Stack, maka akan tampak pada layar :
­

Tekan enter untuk kembali ke menu utama

Ketik angka 2, untuk pilihan [2] Hapus data, pada layar komputer akan tampak pesan “'Elemen terakhir Stack sudah dihapus yaitu : Nita”.
Untuk menampilkan atau melihat isi stack setelah dihapus ketik 3,  [3] Tampil isi Stack, maka akan tampak pada layar :

Record yang teakhir kita masukkan telah dihapus, sehingga record hanya tersisa sebanyak 5 record. Tekan enter untuk kembali ke menu utama.

Ketik angka 4 untuk pilihan [4] Me-reset Stack, pada layar komputer akan tampak pesan
”Stack sudah dihapus”, berarti, semua data yang dimasukkan telah dihapus (di-reset) .
Untuk menampilkan atau melihat isi stack setalah d-reset  ketik 3,  [3] Tampil isi Stack, maka akan tampak pada layar :

Data yang ditampilkan kosong karena, sebelumnya telah di-reset, untuk melanjutkan ke menu utama tekan tombol enter.

Ketik angka 5 untuk pilihan [5]  Keluar, komputer akan menghentikan jalanya program dan kembali ke program Bahasa C.


1 komentar to "STRUKTUR DATA DENGAN STACK"

Posting Komentar