Anda di halaman 1dari 8

MODUL PRAKTIKUM PEMROGRAMAN II

STACK

TEKNIK ELEKTRO UIN SGD




• STACK
Stack adalah sekumpulan data yang organisasi atau strukturnya bersifat tumpukan. Stack
memiliki sistem kerja bahwa yang terakhir masuk adalah yang pertama keluar Last In Fist
Out. Stack diilustrasikan sebagai sebuah tumpukan dimana tumpukan terakhir dikenal
sebagai TOP. Implementasi stack dalam pemrograman ialah berupa tipe bentukan atau ADT
(Abstract Data Type) yang berisi variable top dan isi. Operasi yang berlangusng pada stack
baik penambahan dan penghapusahn data terjadi hanya pada satu ujung yaitu posisi top.

• Operasi pada Stack


1. Stack ADT (Abstract Data Type)

2. Procedure Create Stack

Stack yang baru saja dibuat belum berisi apa-apa. Angka -1 digunakan sebagai status bahwa stack
dalam keadaan kosong atau NULL.

3. Function Is Full

Fungsi isFull mengembalikan nilai True or False yang direpresentasikan dengan angka 1
dan 0. Fungsi isFull digunakan untuk mengetahui apakah tumpukan/isi pada stack sudah
penuh ataukah
belum. Lebih lanjutnya fungsi isFull juga digunakan dalam prosedur push, untuk mengetahui
apakah masih ada tempat kosong di dalam tumpukan stack.
4. Procedure Push

Prosedur push digunakan untuk menambahkan elemen baru ke dalam stack. Terdapat beberapa
kemungkinan ketika menambahkan elembaru ke dalam stack dengan prosedur push, yakni:
A. Keadaan dimana stack masih kosong
B. Keadaan dimana stack tidak kosong dan tidak penuh
C. Keadaan dimana stack telah terisi penuh

5. Fungsi Pop

Fungsi pop digunakan untuk mengeluarkan elemen teratas dalam sebuah tumpukan stack.
Fungsi pop akan berjalan bila stack tidak kosong, maka dari itu buatlah suatu percabangan
untuk mengetahui apakah stack kosong atau tidak. Jika stack dalam keadaan kosong maka
tidak dapat melakukan perintah atau fungsi pop.
6. Procedure Print Stack

Prosedur Print Stack digunakan untuk menampilkan isi stack yang telah kita buat.

7. Program Utama

TUGAS PRAKTIKUM:

1. Tulis ulang kode program di atas pada sub bab operasi stack dan jalankan hasilnya. Format nama
file latihan1_nama.c
2. Tulis ulang kode program berikut:
#include<stdio.h>
typedef struct{
int top; int
data[10];
}stack;
void createStack(stack *s){
(*s).top=-1;
}

int isFull (stack s){


int penuh =0;
if(s.top==9){
penuh=1;
}
return penuh;
}

void push(stack *s, int isi){ if((*s).top==-


1){
(*s).top=0;
(*s).data[(*s).top]=isi;
}
else{
if(isFull(*s)==0){
(*s).top++;
(*s).data[(*s).top]=isi;
}
else{
printf("stack is full\n");
}
}
}

void pop(stack *s){ if((*s).top!=-


1){
(*s).top--;
}
else{ printf("stack underflow\n");
}
}

void printstack(stack s){


int i; if(s.top!=-1){
for(i=s.top; i>=0; i--){
printf("%d\n",s.data[i]);
}
}
else{
printf("\tmajalah kosong\n\n");
}
}

int main(){ int


hapus,status,j,data2[10],i;
stack s;
createStack(&s);
system("cls");
push(&s,7); push(&s,3);
push(&s,9); push(&s,6);
printstack(s);
system("pause");

printf("\nnomor apa yang mau di hapus : ");


scanf("%d",&hapus);

i=s.top; j=0; status=0;


while(i>=0 && status==0){
if(hapus==s.data[i]){
status=1;
}
else{
data2[j]=s.data[i];
j++;
}
i--;
pop(&s);
}

for(i=j-1;i>=0;i--){
push(&s,data2[i]);
}

printstack(s);
system("pause");

return 0; }

Dan jalankan hasilnya. Format nama file latihan2_nama.c

3. Latihan 3 Modifikasi latihan sebelumnya dengan membuat program stack yang terdiri dari menu:
[1]. Push
[2]. Delete
[3]. Cetak Data
[4]. exit

Ketentuan:
a. Ketika user menginputkan angka selain dari menu, ataupun karakter. Maka akan ada
peringatan dari program bahwa pilihan tidak ada
b. Menu Push: Stack statis ini hanya dapat terisi 10 data saja. Pada menu pertama proses push,
user akan diminta untuk menginputkan banyaknya angka yang diinginkan. Apabila inputan
yang dimasukan melebihi tampungan dari stack yang adA yaitu melebihi 10. maka akan ada
peringatan kepada user bahwa angka yang dimasukan melebihi batas.

c. Menu Delete
• Ketika memilih menu delete, Apabila stack kosong maka akan ada peringatan bahwa stack
tersebut masih kosong
• Apabila stack sudah terisi, biasanya stack akan menghapus paling atas. Sekarang kalian
modifikasi jika user boleh menghapus data sesuai elemen yang diinginkan.

• Apabila user menginputkan elemen angka yang dihapus itu melebihi jumlah elemen yang
sudah terisi data, maka akan ada peringatan pada user bahwa inputan lebih dari jumlah
elemen yang ada/terisi.
Contoh:
-Stack dapat menampung hanya 10 data.
-User menginputkan data sebanyak 4 buah.
-Maka elemen stack yang terisi hanya 4 dan 6 kosong
-Ketika user memilih proses pop atau hapus. Lalu user menginputkan 5, maka akan ada
peringatan bahwa elemen yang dimasukkan melebihi elemen data yg sudah terisi.. karena
elemen yg sudah terisi hanya 4 (jumlah data: 4).

d. Menu Cetak Data

Untuk referensi disertakan pula file .exe untuk panduan tugas latihan 2:

Dokumen yang dikirimkan: source code file latihan 1,latihan 2, latihan 3. Beserta file .exe hasil compile
Di kompress menjadi zip/rar. Dikirim dengan format nama: Tugas 2_NIM_NAMA.zip Deadline:
hari Jumat, 24 Maret 2023 dikumpulkan di eknows

Anda mungkin juga menyukai