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
good job gan
BalasHapuselemen solder uap