Minggu, 11 Juni 2017

Modul 8 - Stack ( Tumpukan )

Stack


Tujuan Praktikum :

1.Mahasiswa dapat memahami konsep stack pada bahasa c/c++
2.Mahasiswa dapat menerapkan konsep stack dalam mengorganisir data
3.Mahasiswa mampu menerapkan stack kedalam program


Dasar Teori :

Stack bisa diartikan sebagai suatu kumpulan data yang seolah-olah diletakan diatas data yang lain. Satu hal yang perlu diingat bahwa kita bisa menambahkan (menyisipkan) data dan mengambil (menghapus) data melalui ujung yang sama, yang disebut sebagai ujung atas stack (top of stack). Stack mempunyai sifat LIFO (Last In First Out) yang terahkir masuk adalah yang pertama keluar.

Untuk menjelaskan pengertian diatas, kita ambil contoh sebagai berikut. Misalkan kita mempunyai 2 buah kotak yang ditumpuk, sehingga kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian tumpukan 2 kotak tadi, ditambah kotak ke-tiga, ke-empat, ke-lima dan seterusnya, maka akan diperoleh sebuah tumpukan kotak yang terdiri dari N kotak.

Secara sederhana, sebuah stack bisa diilustrasikan seperti  ini:

Dari gambar diatas,bisa dilihat bahwa kotak B terletak diatas kotak A dan ada dibawah kotak C. Kotak D terletak diatas kotak C, kotak E terletak diatas kotak D dan seterusnya sampai kotak terakhir. Dari gambar diatas menunjukkan bahwa dalam stack hanya bisa menambah atau mengambil sebuah kotak lewat satu ujung, yaitu bagian atas, dan yang menjadi ujungnya adalah kotak F. Jadi jika ada kotak lain yang akan disisipkan, maka kotak tersebut akan dletakkan diatas kotak F, dan jika ada kotak yang akan diambil, maka kotak F yang pertama akan diambil.


Operasi Stack

Dalam program c++ ada 2 cara penerapan prinsip stack ini yakni dengan array dan linked list . operasi-operasi dalam stack :
  1. Push : untuk menambahkan item pada tumpukan paling atas
  2. Pop : untuk mengambil item paling atas
  3. Clear : untuk mengosongkan stack
  4. Empty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
  5. Full : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

Praktikum 8.1
Syntaxnya :

#include <iostream.h> // lan-balon.blogspot.co.id
#include <conio.h>
#define max 10

struct tumpukan //struktur tumpukan
{
int atas;
int data[max];
}T;

void awal() //awal untuk menentukan nilai awal
{
T.atas =- 1;
}

int kosong() //kosong untuk melanjutkan pengisian tumpukan
{
if (T.atas == -1)
return 1;
else
return 0;
}

int penuh() //penuh untuk memberhentikan tumpukan
{
if (T.atas == max-1)
return 1;
else
return 0;
}

void input (int data) //input untuk memasukan data
{
if (kosong () == 1) //pemilihan jika data masih kosong
{
T.atas++;
T.data [T.atas] = data;
cout << "Data " << T.data[T.atas] <<" masuk ke stack\n";
}
else
if (penuh () == 0) //pemilihan jika data masih penuh
{
T.atas++;
T.data [T.atas] = data;
cout << "Data " << T.data [T.atas] << " masuk ke stack\n";
}
}

void hapus() //hapus untuk menghapus data paling atas
{
if (kosong() == 0) //mengambil data paling atas
{
cout << "Data teratas sudah terambil\n";
T.atas--;
}
else //menampilkan jika data kosong
cout << "Data kosong\n";
}

void tampil() //parameter menampilkan isi data
{
if (kosong() == 0) //pemilihan menampilkan isi data
{
for (int i = T.atas; i >= 0; i--)
{
cout << "\nTumpukan ke "<< i + 1 << "=" << T.data[i];
}

}
else //jika salah maka menampilkan tumpukan kosong
cout << "Tumpukan kosong\n";
}

void bersih() //parameter memebersihkan semua data
{
T.atas =- 1;
cout << "Tumpukan kosong!\n";
}

main(void)
{
int pil, data;
awal();
do //perulangan do - while
{
cout << "\n1. Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukan pilihan : ";
cin >> pil;

switch (pil) //pemilihan perintah
{
case 1:
cout << "Masukan data = "; cin >> data;
input (data);
break;

case 2:
hapus();
break;

case 3:
tampil();
break;

case 4:
bersih();
break;

case 5:
cout << "Terimakasih, tekan enter untuk keluar";
}
getch();
}
while (pil != 5);

}
    Hasil Runningnya :




    Penjelasannya :

    Program ini di buat menggunakan konsep stack yaitu dimana suatu kumpulan data yang seolah-olah diletakan diatas data yang lain, Didalam struct terdapat 2 buah variabel / anggota yaitu int atas untuk menyatakan variabel atas, dan variabel array int data[max] dengan nilai tetap 10 angka (#define max 10)Cara kerja program. Untuk inputan data, angka yang akan dimasukan 2 buah angka yaitu 23 dan 44. Kita akan memasukan angka 1 yang kemudian akan masuk ke variabel pil dimana akan dilakukan penyeleksian switch - case, jika angka benar akan memasukan kembali angka untuk inputan nilai, nilai tersebut akan masuk ke void input (). 



    Praktikum 8.2

    Syntaxnya :


    #include <iostream.h> // lan-balon.blogspot.co.id
    #include <conio.h>
    #include <string.h>

    struct tumpukan //struktur tumpukan
    {
    char data[15][100], max[15];
    int i, j;
    } stack;

    void push() //push untuk mengisi data
    {
    stack.i++;
    cout << "Masukan Data : ";
    cin >> stack.max;
    strcpy (stack.data[stack.i], stack.max); //perintah mennyalin data char panjang menggunakan fungsi string
    }

    void pop() //pop untuk menggambil data
    {
    if (stack.i > 0)
    {
    cout << "Data yang Terambil : " << stack.data[stack.i] << endl; //data akan terambil paling atas
    stack.i--; stack.j--;
    }
    else
    cout << "Tak ada Data yang Terambil" << endl; //jika tidak ada data
    }

    void view (int n) //print untuk menampilkan data
    {
    if (stack.j > 0) //menampilkan isi data menggunakan perulangan for
    {
    for (int e = n; e >= 1; e--)
    {
    cout << stack.data[e] << endl;
    }
    }
    else
    cout << "Tak Ada Data Tersimpan" << endl; //jika tidak ada data
    }

    void clear() //clear untuk menghapusdata
    {
    stack.j = 0; stack.i = 0; //perintah untuk menghapus keseluruhan data
    }

    main (void)
    {
    int n, pilih;
    ayo:
    cout << "Contoh Program Stack (Tumpukan)\n";
    stack.data[n];
    stack.i = 0;
    stack.j = 0;
    balik: //fungsi goto

    cout << "\n1. Push\n2. Pop\n3. View\n4. Clear\n5. Quit\n";
    cout << "\nPilih : "; cin >> pilih;
    cout << "\n";
    if (pilih == 1) //pemilihan pilihan menggunakan if
    {
    if (stack.j < n)
    {
    stack.j++; push();
    }
    else
    {
    cout << "Tumpukan Penuh" << endl;
    getch();
    }
    goto balik;
    }
    else
    if (pilih == 2)
    {
    pop (); getch(); goto balik;
    }
    else
    if (pilih == 3)
    {
    view (stack.i); getch(); goto balik;
    }
    else
    if (pilih == 4)
    {
    clear(); getch(); goto balik;
    }
    else
    if (pilih == 5)
    {
    getch(); goto ayo;
    }
    else
    {
    cout << "Input Anda Masukan Salah !!!";
    getch(); goto ayo;
    }
    }
      Hasil Runningnya :




      Penjelasannya :

      Program ini di Buat hampir sama dengan Latihan 8.1 ..

      Share this

      0 Comment to "Modul 8 - Stack ( Tumpukan )"

      Posting Komentar