Blog information

  • Category: Kuliah

  • Posted By: AglaBridgeMedia

  • Post date: 15 Nov 2022

  • Keywords: stack, struktur data dan algoritma, stack studi kasus data mahasiswa, stack bahasa c, stack menggunakan bahasa c

  • Views: 83

Latihan Membuat Program Stack Sederhana Data Mahasiswa

Pada kesempatan kali ini kita akan membahas salah satu opsi jawaban dari latihan pada pertemuan 9 mata kuliah struktur data dan algoritma TA 2022/2023 yang dapat dilihat di sini. Pada soal latihan tersebut diminta untuk membuat program stack yang menampung data mahasiswa, yaitu NIM, Nama, Prodi dan juga IPK. Misalkan:

NIM: 1111

Nama: Budi

Prodi: IlKom

IPK: 3.66

Dengan menggunakan stack, kita dapat memanfaatkan beberapa perintah seperti push, isEmpty, isFull, tampil, dan juga peak. Fungsi push untuk menambahkan data ke dalam stack, sedangkan isEmpty dipakai untuk mengecek apakah stack berada dalam kondisi kosong atau tidak, hal ini dimaksudkan untuk menentukan aksi pada saat akan dilakukan penghapusan data. Artinya jika stack tersebut kosong, maka tidak dapat dilakukan penghapusan data, sebaliknya, jika stack ada isinya, maka dapat dilakukan penghapusan data. Kemudian isFull dipakai untuk mengecek apakah stack dalam posisi penuh atau tidak. Jika stack penuh, maka tidak dapat dilakukan penambahan data lagi, sebaliknya, jika stack belum penuh, maka masih dapat dilakukan penambahan data. Fungsi tampil atau print dipakai untuk melihat data yang berada pada stack, sedangkan peak dipakai untuk melihat data yang berada paling atas.

Untuk penyelesaiannya, dapat menggunakan contoh kode program di bawah ini.

#include 
#include 
#include 
#define max 5 // ukuran maksimal dari stack

typedef struct{
    int top, data[max+1];
    char nim[10][max+1], nama[30][max+1], prodi[20][max+1]; //menampung karakter nim, nama, prodi mahasiswa
    float ipk[max+1]; // menampung nilai ipk
} stack;

stack tumpukan;

void Kosongkan();
int isFull();
int isEmpty();
void push(int data, char nim[10], char nama[30], char prodi[20], float ipk);
void pop();
void tampil();
int peak();

int main()
{
    Kosongkan();
    
    // push(3); // 3
    // push(5); // 5,3
    // push(7); // 7,5,3
    // push(9); // 9,7,5,3
    // push(1); // 1,9,7,5,3
    // pop(); // 9,7,5,3
    // pop(); // 7,5,3
    // Konsep Stack --> LIFO (Last In First Out)
    push(3, "111", "Aji", "IlKom", 3.44);
    push(5, "112", "Budi", "PBI", 3.77);
    pop();
    peak();
    tampil();
    
    // menampilkan status stack
    if(isFull() == 1){
        printf("Stack Penuh\n");
    } else{
        printf("Stack Belum Penuh\n");
    }
    
    if(isEmpty() == 1){
        printf("Stack Kosong\n");
    } else{
        printf("Stack Tidak Kosong\n");
    }
}

void Kosongkan(){
    tumpukan.top = 0;
}

int isFull(){
    if(tumpukan.top == max){
        return 1;
    } else{
        return 0;
    }
}

int isEmpty(){
    if(tumpukan.top == 0){
        return 1;
    } else{
        return 0;
    }
}

void push(int data, char nim[10], char nama[30], char prodi[20], float ipk){
    if(isFull() == 0){
        tumpukan.top = tumpukan.top+1;
        tumpukan.data[tumpukan.top] = data;
        strcpy(tumpukan.nim[tumpukan.top], nim);
        strcpy(tumpukan.nama[tumpukan.top], nama);
        strcpy(tumpukan.prodi[tumpukan.top], prodi);
        tumpukan.ipk[tumpukan.top] = ipk;
    } else{
        printf("Stack Sudah Penuh.\n");
    }
}

// 1 ==> true
// 0 ==> false

void pop(){
    if(isEmpty() == 0){ // jika isEmpty salah/false == tidak kosong
        tumpukan.top = tumpukan.top-1;
    } else{ // jika tidak, maka kosong (isEmpty == 1)
        printf("Info Pop Stack Masih Kosong.\n");
    }
}

void tampil(){
    if(isEmpty() == 0){
        printf("Data Stack:\n");
        // tampilkan data stack, dengan cara melakukan looping data dari index terbesar menuju index terkecil
        for(int a = tumpukan.top; a > 0; a--){
            printf("No. %d -> NIM: %s, Nama: %s, Prodi: %s, IPK: %0.2f \n", tumpukan.data[a], tumpukan.nim[a], tumpukan.nama[a], tumpukan.prodi[a], tumpukan.ipk[a]);
            // top = a = 5 ==> menampilkan nilai/data pada index ke a, karena 5 > 0, maka 5-1
            // a = 4 ==> menampilkan nilai/data pada index ke a, karena 4 > 0, maka 4-1
            // a = 3 ==> menampilkan nilai/data pada index ke a, karena 3 > 0, maka 3-1
            // a = 2 ==> menampilkan nilai/data pada index ke a, karena 2 > 0, maka 2-1
            // a = 1 ==> menampilkan nilai/data pada index ke a, karena 1 > 0, maka 1-1
            // a = 0 ==> menampilkan nilai/data pada index ke a, karena 0 > 0 ==> false,
            // maka loop berhenti
        }
    } else{
        printf("Stack Kosong!\n");
    }
}

int peak(){
    if(isEmpty() != 1){
        printf("Nilai Top: %d --> NIM: %s, Nama: %s, Prodi: %s, IPK: %0.2f\n",tumpukan.data[tumpukan.top], tumpukan.nim[tumpukan.top], tumpukan.nama[tumpukan.top], tumpukan.prodi[tumpukan.top], tumpukan.ipk[tumpukan.top]);
    } else{
        printf("Stack Kosong!\n");
    }
}

Pada kode program di atas sudah disematkan penjelasan setiap barisnya. Kode program di atas menggunakan bahasa pemrograman C, jika ingin menggunakan bahasa yang lain, dapat disesuaikan algoritmanya. Kemudian jika kode program dijalankan akan menghasilkan tampilan sebagai berikut.

Untuk menjalankan program di atas, kalian dapat menggunakan compiler kesayangan masing-masing, seperti CodeBlock IDE, DevC++, OnlineGDB atau yang lainnya. Untuk pembahasan dalam bentuk video dapat disimak pada video berikut ini.


Demikian artikel kali ini terkait laithan membuat program stack sederhana dengan studi kasus penyimpanan data mahasiswa, semoga bermanfaat.






blog comments powered by Disqus