MATERI STACK C++


STACK C++

STACK ATAU TUMPUKAN PADA C++

Pengertian Stack
     Stack atau tumpukan adalah salah satu struktur data di dalam pemrograman. Stack merupakan suatu struktur data yang seolah-olah terlihat seperti data yang tersusun secara "menumpuk", dimana ada data yang terletak di atas data yang lainnya.STACK adalah salah satu list linear dalam struktur data yang digunakan untuk menyimpan dan mengambil data dengan konsep LIFO (Last In First Out). Dimana dalam stack ini kumpulan data yang masuk diletakkan di atas data yang lain. Dan berdasar konsep LIFO maka data yang terakhir kali disimpan dalam stack akan menjadi data yang pertama kali diambil. Dalam prosesnya, untuk memasukkan sebuah data ke dalam stack atau dengan kata lain ke bagian atas dari sebuah tumpukan digunakan perintah push. Dan untuk memindahkan data dari tempat tersebut digunakan perintah pop. Sedangkan dalam penyajiannya, stack bisa memakai array atau linked list.

Pada gambar diatas, jika kita ingin mengambil sesuatu dari tumpukan maka kita harus mengambilnya dari tumpukan yang paling atas dahulu. Misalkan jika kita mengambil yang A terlebih dahulu maka  yang B akan jatuh.
Operasi Utama pada Stack
Operasi push yaitu operasi menambahkan elemen pada urutan terakhir(paling atas).
Operasi pop yaitu operasi mengambil sebuah elemen data pada urutasn terakhir dan menghapus elem
en tersebut dari stack.
Operasi Tambahan pada Stack
Clear : untuk mengosongkan stack.
IsEmpty : untuk memeriksa apakah stack kosong.
IsFull : untuk memeriksa apakah satck sudah penuh.
Retrieve : untuk mendapatkan nilai dari item teratas.
Peek : untuk melihat element teratas dari stack
Jenis-Jenis Stack
1. Single Stack
   Single dapat di presentasikan menggunakan array satu dimensi. Kondisi stack di tentukan oleh posisi atau isi top. Proses pada single satck yaitu :
Awal (inisialisasi)
PUSH (Insert,Masuk,Simpan,Tulis)
POP(Delete,Keluar,Ambil,Baca/Hapus)
2. Double Stack
    Double stack disebut juga stack ganda prinsip proses dari double stack yaitu LIFO baik dalam single stack maupun untuk double stack.
Proses pada Double Stack :
AWAL (Inisialisasi)
PUSH 1 (Push untuk stack 1
POP 1 (pop untukstack 1)
PUSH 2 (Push untuk stack 2)
POP 2(Pop untuk stack 2)
Contoh Program
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define max 5
struct tumpukan{
int atas; //untuk mencacah indeks dari stack
int data[max+1];
}t;
void createEmpty();
int IsEmpty();
int IsFull();
void push(int x);
void pop();
main()
{
int lagi;
int input;
int pilih;
createEmpty();
pilih = 0;
while (pilih != 5){
system("cls");
puts("=====================================");
puts(" MENU UTAMA");
puts("=====================================");
puts("1. Cek kondisi Stack");
puts("2. Tambah data");
puts("3. Keluarkan isi stack");
puts("4. Kosongkan stack");
puts("5. Keluar");
printf("Pilihan: ");
scanf("%d",&pilih);
switch(pilih){
case 1: if (IsEmpty() == 1)
puts("Stack masih kosong");
else if ((IsEmpty() == 0) && (IsFull() == 0))
puts("Stack sudah terisi, tapi belum penuh");
else
puts("Stack sudah penuh");
getch();
break;
case 2: if (IsFull() == 1)
puts("Stack sudah penuh.");
else
{
printf("Masukkan data: ");
scanf("%d",&input);
push(input);
printf("%d",t.atas);
printf("%d",IsFull());
printf("%d",IsEmpty());
}
break;
case 3: while (IsEmpty() == 0)
{
printf("%d \n",t.data[t.atas]);
pop();
}
getch();
break;
case 4: createEmpty();
puts("Stack sudah kosong. Top = 0");
getch();
break;
case 5: puts("Byeee");
getch();
break;
}
}
}
//DEKLARASI OPERASI-OPERASI DASAR STACK
void createEmpty(){
t.atas = 0;
}
int IsEmpty(){
if (t.atas == 0)
return 1;
else
return 0;
}
int IsFull(){
if (t.atas == max)
return 1;
else
return 0;
}
void push(int x){
t.atas = t.atas + 1;
t.data[t.atas] = x;
}
void pop(){
t.atas = t.atas - 1;
}

Keterangan Program
Pada program diatas adalah program yang dapat menambah,mengedit, dan menghapus atau format data pada stack dalam program tersebut.
Referensi: 

https://mdteckno.blogspot.com/2015/06/definisistack-stack-merupakan-suatu.html
https://zoneblog123.blogspot.com/2018/04/pengertian-stack-beserta-jenis-dan.html

Komentar

Posting Komentar

Postingan populer dari blog ini

Searching (sequential search dan binarry search)

Materi Array Struct C++