Linked List Menggunakan Algoritma Stack dengan C++(Muh Akbar Tamrin)

22:43 Pemrograman Web 0 Comments


video


Mengenal Stack Pada C++

Stack dapat diartikan sebagai tumpukan dari benda atau data yang seolah-olah diletakkan di atas data yang lain dimana data yang pertama kali masuk akan terakhir. Secara sederhana sebuah stack bisa digambarkan sebagai tumpukan buku yang disimpan dengan cara ditumpuk keatas. Dimana buku yang pertama kali disimpan atau ditumpuk ada di paling bawah dan yang selanjutnya ditumpuk diatasnya. Dan ketika kita melakukan pengambilan buku ototmatis buku yang terkahir ditumpuk atau disimpan terakhir akan mejadi yang pertama diambil, istilah ini kemudian disebut FILO (First In Last Out) dan bertambah atau berkurangnya data melalui satu ujung yang sama yaitu ujung atas tumpukan (Top of Stack).


Ada 2 operasi dasar dari stack yang dapat dilakukan, yaitu :

1.                 Operasi push yaitu operasi menambahkan elemen pada urutan terakhir (paling atas).
2.                 Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dan menghapus elemen tersebut dari stack.
Selain operasi dasar stack (push dan pop), ada lagi operasi lain yang dapat terjadi dalam stack yaitu :

1.                 Proses deklarasi yaitu proses pendeklarasian stack.
2.                 Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan pemberian nilai untuk top.
3.                 Proses cek kosong yaitu proses pemeriksaan apakah stack dalam keadaan kosong.
4.                 Proses cek penuh yaitu proses pemeriksaan apakah stack telah penuh.

Operasi-operasi stack secara lengkap adalah sebagai berikut :
Pendeklarasian stack dengan array
Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori. Karena stack dapat direpresentasikan dalam 2 cara, maka pendeklarasian stack pun ada 2 yaitu:
Suatu stack memiliki beberapa bagian yaitu

1.                 top yang menunjuk posisi data terakhir (top)
2.                 elemen yang berisi data yang ada dalam stack. Bagian ini lah yang berbentuk array. Deklarasi stack dengan array:
struct stack
{
int elemen[10]; //elemen int top;
};
Inisialisasi
Inisialisasi stack adalah proses pembuatan suatu stack kosong. Proses inisialisasi untuk stack yang menggunakan array adalah dengan mengisi nilai field top dengan 0 (nol) jika elemen pertama diawali dengan nomor 1. Kalau elemen pertama array dimulai dengan 0 maka top diisi dengan nilai -1.
p->top=-1 
Operasi Cek Kosong Stack
Operasi ini digunakan untuk memeriksa apakah stack dalam keadaan kosong. Operasi ini penting dilakukan dalam proses pop. Ketika suatu stack dalam keadaan kosong, maka proses
pop tidak bisa dilakukan. Operasi ini dilakukan hanya dengan memeriksa field top. Jika top top bernilai -1, maka berarti stack dalam keadaan empty (kosong).
if (p->top==-1)
{
cout<<"STACK kosong";
return -1;

Operasi Cek Penuh
Operasi ini berguna untuk memeriksa keadaan stack apakah sudah penuh atau belum. Operasi ini akan memberikan nilai true (1) jika field top sama dengan size-1.
if(p->top==size-1)
cout<<"STACK penuh "; 

Operasi Push
Operasi ini berguna untuk menambah suatu elemen data baru pada stack dan disimpan pada posisi top yang akan mengakibatkan posisi top akan berubah. Langkah operasi ini adalah :

·                     Periksa apakah stack penuh. Jika tidak penuh maka proses push dilaksanakan dan jika stack penuh, maka proses push digagalkan.
·                     Proses push-nya sendiri adalah dengan menambah field top dengan 1, kemudian elemen pada posisi top diisi dengan elemen data baru. if(p->top==size-1)
cout<<"STACK penuh ";
else
p->elemen[++p->top]=value;
Operasi Pop
Operasi ini berguna untuk mengambil elemen terakhir (top) dan kemudian menghapus elemen tersebut sehingga posisi top akan berpindah. Langkah operasi pop pada stack yang menggunakan array adalah terlebih dahulu memeriksa apakah stack sedang keadaan kosong, jika tidak kosong maka data diambil pada posisi yang ditunjuk oleh posisi top, kemudian posisi top – 1.
if (p->top==-1)
{
   cout<<"STACK kosong";
   return -1;
}
else
    return p->elemen[p->top--]; 

Pengertian STACK

Secara sederhana stack atau tumpukan bisa diartikan sebagai kumpulan data yang seolah-olah diletakkan di atas data yang lain. STACK adalah salah satu list linear dalam struktur data yang digunakan untuk menyimpan dan mengambil data dengan konsep LIFO (Last In First Out). Satu hal yang perlu diingat bahwa kita bisa menambah (menyisipkan)data dan mengambil (menghapus) data melalui ujung yang sama, yang disebut sebagai ujung atas stack.

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 PADA STACK
Ada 2 operasi dasar yang bisa dilaksanakan pada sebuah stack, yaitu operasi menyisipkan data(push) dan operasi menghapus data(pop).

==>Operasi Push
prosedur ini terlebih dahulu akan menaikkan posisi TOP satu level ke atas. Misalkan kondisi stack masih kosong (TOP = 0), lalu prosedur push akan menaikkan posisi TOP satu level ke atas, yakni ke posisi 1 (TOP = 1), baru setelah itu data dimasukkan ke dalam array pada indeks ke-1 (yakni indeks dimana TOP berada).

Berikut adalah deklarasi prosedur push dalam Bahasa C:
void push(int x)
{
tumpukan.TOP = tumpukan.TOP + 1;
tumpukan.data[tumpukan.TOP] = x;
}



Perintah push digunakan untuk memasukkan data ke dalam stack. Untuk lebih jelasnya perhatikan ilustrasi berikut ini. Misalkan kita mempunyai data-data 3, 25 dan 9 dalam stack dengan posisi 3 paling bawah dan 9 paling atas. Dan kita akan memasukkan data 34 ke dalam stack tersebut. Tentu saja data 34 akan diletakkan di atas data 9.


==>Operasi Pop
Operasi Pop adalah operasi untuk menghapus elemen yang terletak pada posisi paling atas dari sebuah stack. Prosedur ini berfungsi untuk mengeluarkan/ menghapus nilai terakhir (yang berada pada posisi paling atas) dari stack, dengan cara menurunkan nilai TOP satu level ke bawah.
Misalkan TOP berada pada indeks ke-5, maka ketika akan mengeluarkan/ menghapus
data pada posisi paling atas (pada posisi TOP), prosedur ini akan menurunkan posisi TOP
ke indeks array ke-4. Berikut deklarasi prosedur pop dalam Bahasa C:

void pop()
{
tumpukan.TOP = tumpukan.TOP - 1;
}






Source code
#include <cstdlib>
#include <iostream>
using namespace std;
class Stack{
public:
Stack(){
jum = 5;
last = 0;
}

void push(int data){
if(jum > last){
a[last] = data;
last = last +1;
}
}

int pop(){
if(last > 0){
int temp=a[last-1];
a[last-1]=0;
last=last-1;
return temp;
}
}

void print(){
for(int i=0;i<last;i++){
cout<<a[i]<<"";
}
}

private:
int a[5];
int jum;
int last;
};

int main()
{
Stack x;
x.push(2);
x.push(4);
x.push(5);
x.push(7);
x.push(9);
x.print();
cout<<endl;

x.pop();
x.print();
cout<<endl;

x.pop();
x.print();
cout<<endl;

x.pop();
x.pop();
x.pop();
x.print();
cout<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}

Link pada akun Github :

0 komentar: