
Blog information
Category: Kuliah
Posted By: AglaBridgeMedia
Post date: 13 Nov 2020
Keywords: stack, program stack, stack dengan bahasa c, stack struktur data, struktur data stack
Views: 5167
Contoh Program Stack Menggunakan Bahasa C - Studi Kasus Data Mahasiswa
Assalamualaikum Wr Wb
Kegiatan menumpuk/menyusun buku merupakan kegiatan yang sering kita dilakukan. Buku yang tersusun rapi akan memudahkan kita untuk memindahkan atau menambah buku yang lain. Beralih ke kegiatan yang lebih modern, ketika kita mengakses halaman website tertentu menggunakan web browser, biasanya ada tombol Back untuk kembali pada history halaman sebelumnya. Ketika kita mengetik di halaman word processor seperti Ms. Word atau Notepad, ada fitur yang namanya Undo. Fitur Undo ini berguna jika kita ingin mengembalikan hasil ketikan kita ke keadaan sebelumnya.
Dari beberapa contoh dan ilustrasi di atas, sering kali kita lakukan, namun kita belum tahu bagaimana proses yang ada sebenarnya. Di dalam Ilmu Komputer, proses tersebut dikenal dengan sebutan Stack atau tumpukan. Dengan adanya Stack ini, kita semakin dimudahkan dalam mengorganisasi atau memanajemen data kita. Stack merupakan struktur data yang dipakai untuk menyimpan sekumpulan data. Stack bersifat LIFO (Last In First Out), yang artinya data yang terakhir masuk, akan menjadi yang paling awal untuk dipindah atau dihapus atau diambil. Ilustrasi dari Stack dapat dilihat pada gambar berikut.
| |
| |
| |
| |
| 4 |
Jika ditambahkan data baru, misal 2, maka akan menjadi seperti gambar berikut.
| |
| |
| |
| 2 |
| 4 |
Jika dihapus, maka data 2 akan hilang, dan Stack akan menjadi seperti pada gambar pertama. Jadi, semua aktifitas penambahan dan penghapusan data selalu dimulai dari atas.
Pada Stack dikenal beberapa perintah untuk memanipulasi datanya, seperti Push, Pop, IsEmpty, Peek, Print/Display. Push untuk menambah data, Pop untuk menghapus data, IsEmpty untuk mengecek apakah Stack kosong atau terisi, Peek untuk mengecek nilai Top dari Stack, Print/Display untuk melihat isi dari Stack. Untuk lebih jelasnya, berikut saya berikan contoh programnya menggunakan bahasa C.
#include#include #include #define MAX_STACK_SIZE 5 //definisikan maksimum stack yang bisa ditampung typedef int boolean; #define TRUE 1 //definisikan true bernilai 1 #define FALSE 0 //definisikan false bernilai 0 struct arrayStack { //struct arrayStack int nim[MAX_STACK_SIZE]; char nama[30][MAX_STACK_SIZE]; int top; }; typedef struct arrayStack arrayStack; // mendefinisikan tipe arrayStack dari struct arrayStack //Fungsi yang ada di stack void push(arrayStack *stack, int nim, char nama[30]); // menambahkan nim dan nama ke dalam stack int pop(arrayStack *stack);// menghapus Top dari stack int peek(arrayStack *stack);// mengecek top of stack. boolean isEmpty(arrayStack *stack); // isEmpty akan mencari tahu apakah stack kosong atau tidak void display(arrayStack *stack); // menampilkan data stack int main() { int nim, pilihan; char nama[30]; arrayStack stack; // variabel stack dengan tipe arrayStack yg sudah didefinisikan di atas sebelumnya arrayStack *stackptr = &stack; //pointer stack stack.top = -1; // nilai awal top -1, yg berarti stack dalam keadaan kosong awal: system("clear"); while(1) { printf("Pilih menu yang kamu inginkan\n"); printf("1. Push \n2. Pop \n3. Peek \n4. Display \n5. Exit\n"); printf("Pilihan kamu:\n"); scanf("%d", &pilihan); switch(pilihan) { case 1: printf("Masukkan nim: "); scanf("%d", &nim); printf("Masukkan nama: "); scanf("%s", nama); //goto awal; push(stackptr, nim, nama); break; case 2: //goto awal; printf("Data yang dihapus adalah nim: %d\n", pop(stackptr)); break; case 3: //goto awal; printf("ToS adalah nim: %d\n", peek(stackptr)); break; case 4: //goto awal; display(stackptr); break; case 5: exit(0); break; default: goto awal; printf("Input Salah!\n"); } } return EXIT_SUCCESS; } void push(arrayStack *stack, int n, char m[]) { if(stack->top == MAX_STACK_SIZE - 1) { printf("Warning: Stack sudah penuh, tidak bisa diisi lagi'\n"); return; } else { int x; x = ++stack->top; stack->nim[x] = n; //tambahkan nim ke stack strcpy(stack->nama[x], m); //copy nilai variabel parameter m ke stack->nama } } int pop(arrayStack *stack) { if (isEmpty(stack)) { // cek apakah stack kosong atau tidak printf("Stack kosong\n"); //jika return true, maka berikan info kalau stack kosong return NULL; } else { int temp, temp2; int x; x = stack->top--; temp = stack->nim[x]; //jika tidak kosong, hapus data nim temp2 = stack->nama[x]; //jika tidak kosong, hapus data nama return temp; //berikan info data nim yang dihapus } } int peek(arrayStack *stack) { if (isEmpty(stack)) { //cek apakah stack kosong atau tidak printf("Stack kosong\n"); //jika return true, maka berikan info kalau stack kosong return NULL; } else { return stack->nim[stack->top]; //jika return false, berarti tidak kosong, tampilkan top dari nimnya } } int isEmpty(arrayStack *stack) { if (stack->top == -1){ //jika stack kosong return true, jika tidak return false return TRUE; } else{ return FALSE; } } void display(arrayStack *stack) { if (stack->top == -1){ printf("Stack masih kosong\n"); } else{ int i = stack->top; //inisialisasi variabel i dengan top dari stack for (; i >= 0; --i){ //loop dengan mengurangkan 1, sampai pada dasar stack printf("nim: %d, nama: %s\t", stack->nim[i], stack->nama[i]); printf("\n"); } } }
Ketika kode program di atas dijalankan, akan menghasilkan output seperti berikut.
Saya akan mencoba memasukkan tiga buah data mahasiswa, yaitu nim dan nama menggunakan menu nomor 1, yaitu Push.
Kemudian saya tampilkan datanya dengan memilih menu 4, maka akan tampil seperti gambar berikut.
Nah dari gambar tersebut dapat dilihat bahwa data yang pertama dimasukkan akan menjadi data dengan posisi paling bawah, dan data terakhir akan berada pada posisi teratas atau Top. Jika diberikan aksi Pop maka data teratas akan hilang, dan data teratas atau Top yang baru adalah baris data di bawahnya, seperti pada gambar berikut.
Nah mudah bukan? silakan teman-teman pelajari lagi atau utak atik kode program di atas agar lebih memahami dan lancar dalam meng coding. Tetap sehat, tetap semangat, tetap jaga jarak di masa pandemi covid-19 ini. Semoga wabah ini segera berakhir. Aamiin..
Wassalamualaikum Wr Wb
blog comments powered by Disqus
Popular Posts
- SIngle Linked List dan Contoh Penerapan dalam Bahasa C
- RingkasIn, Aplikasi Untuk Meringkas Teks Otomatis Secara Online Gratis
- Contoh Program Java Menggunakan Konsep OOP
- Contoh Program Stack Menggunakan Bahasa C - Studi Kasus Data Mahasiswa
- Contoh Program Menghitung Faktorial Dengan Bahasa C