Anda di halaman 1dari 6

Praktikum 4

Stack
NIM/Nama : P04/ Ikhwan Ash Shafa Arrafi
Setelah mengikuti praktikum ini, mahasiswa diharapkan dapat:
 Menggambarkan konsep stack pada memory
 Membuat struktur data stack dalam bahasa C
 Melakukan operasi pada stack
 Mengaplikasikan stack pada program

1. Kerjakan soal berikut dengan membaca soal dengan cermat.

Dengan memanfaatkan kode-kode deklarasi tipe struktur dan prosedur/fungsi pada stack
yang tercantum di slide, jalankan perintah-perintah berikut pada main().

Salin kode program di sini.


#include <stdio.h>

#define MAX 10

typedef int item;

typedef struct{
item data[MAX];
int top;
} Stack;

int isEmpty(Stack S)
{
return (S.top == -1);
}

int isFull(Stack S)
{
return (S.top == MAX-1);
}

void create(Stack *S)


{

~1~
(*S).top = -1;
}

void push(Stack *S, item x)


{
if (!isFull(*S)){
(*S).top++;
(*S).data[(*S).top] = x;
} else
printf("Stack penuh, Push gagal.\n");
}

void pop(Stack *S)


{
if (!isEmpty(*S))
(*S).top--;
else
printf("Stack kosong, Pop gagal.\n");
}

item getTop(Stack S)
{
return (S.data[S.top]);
}

int main(){
Stack S;

create(&S);
pop(&S);
push(&S, 4);
push(&S, 5);
printf("%d\n",getTop(S));
pop(&S);
printf("%d\n",getTop(S));
pop(&S);
push(&S, 10);
}
Jalankan program, tampilkan hasil running, dan jelaskan jalannya program di sini.

~2~
1. Program Membuat Stack baru bernama S.
2. Program mencoba melakukan Pop pada stack, pop gagal karena stack masih kosong.
3. Program melakukan push pada stack berupa angka 4.
4. Program melakukan push pada stack berupa angka 5.
5. Program melakukan getTop untuk dengan hasil memunculkan angka 5 sebagai elemen
paling atas pada stack.
6. Program melakukan Pop pada stack, yang kemudian saat dilakukan getTop kembali akan
memunculkan angka 4 karena 5 yang sebelumnya menjadi topstack telah di Pop.
7. Program melakuan Pop pada stack, yang kemudian membuat stack menjadi kosong.
8. Program Melakukan Push pada stack berupa angka 10
9. Selesai
Gambarkan ilustrasi perubahan data pada stack S seiring dijalankannya operasi-operasi di
atas.

2. Melanjutkan kode program dari soal nomor 1, buatlah prosedur untuk mencetak semua isi
stack mulai dari top sampai indeks terbawah. Tulis prosedur yang Anda buat di sini.
void getAll(Stack S){
int i;
if(S.top==-1){
printf("\nStack kosong!!!");
}else{
printf("\nIsi Stack..\n");
for(i=S.top;i>=0;i--){
printf("%d\n",S.data[i]);
}
Pada main(), buatlah kode untuk mengisi stack dengan 5 bilangan (bebas), kemudian panggil
prosedur yang telah Anda buat sebelumnya untuk menampilkan seluruh isi stack ke layar.
Salin kode program di sini.
int main(){
Stack S;
int angka,i;
create(&S);

for(i=0;i<5;i++){
printf("Masukkan Isi Elemen Dengan Angka:\n");
scanf("%d",&angka);
push(&S, angka);

~3~
}
getAll(S);
}
Jalankan program, tampilkan hasil running, dan jelaskan jalannya program di sini.

1. Program akan meminta input berupa integer untuk kemudian digunakan untuk push ke
stack
2. Program memunculkan hasil untuk menampilkan seluruh elemen stack yang telah di
definisikan melalui prosedur getAll.

3. Modifikasi kode program yang telah Anda buat sampai nomor 2 di atas sehingga dapat
menyimpan data bertipe selain integer (boleh mengganti integer menjadi float, char, atau
char[]/string, terserah Anda). Jelaskan di bagian mana saja kode program harus diubah!
Ada pada bagian typedef (Deklarasi tipe data bentukan)
Buatlah program yang dapat menampilkan menu operasi-operasi pada stack seperti contoh
di bawah dan menjalankan operasi sesuai menu yang dipilih. Untuk operasi yang
memerlukan masukan, seperti PUSH, minta pengguna memasukkan data yang akan di-PUSH
setelah pengguna memilih operasi PUSH.
MENU STACK
[1] PUSH
[2] POP
[3] GETTOP
[4] TAMPIL SEMUA
[5] KELUAR
Salin kode program di sini.
int main()
{
int choice;
do
{
printf("\n MENU STACK \n");
printf("\n[1] PUSH\n");
printf("[2] POP\n");
printf("[3] GETTOP\n");
printf("[4] TAMPIL SEMUA\n");
printf("[5] KELUAR\n");
printf("\n Masukkan Pilihan :\n");
scanf("%d", &choice);
switch(choice){

~4~
case 1 :
isipush();
break;
case 2 :
pop(&S);
printf("Berhasil di hapus\n");
break;
case 3 :
printf("%d\n", S.data[S.top]);
break;
case 4 :
getAll(S);
break;}

} while(choice !=5);
printf("Program Exitted");
}
Jalankan program, tampilkan hasil running, dan jelaskan jalannya program di sini.

Program akan memunculkan pilihan yang akan menghasilkan fungsi dasar dari mengolah
stack, untuk push akan memunculkan kembali pilihan menu setelah elemen stack di
inputkan.

Kesimpulan
Apa saja yang Anda pelajari dari praktikum hari ini?
Memahami cara kerja stack dan fungsi cara pengolahan nya mulai dari push,pop,getTop, dan
Memunculkan semua elemen dengan memanfaatkan getTop itu sendiri.

~5~
Pengumpulan tugas praktikum:
Simpan laporan praktikum ini dengan nama P04_NIM.docx di folder yang sama dengan folder
tempat kode program. Namai folder dengan P04_NIM, kemudian zip. Upload ke http://learning-
if.polibatam.ac.id.

~6~

Anda mungkin juga menyukai