Laporan Struktur Data Modul 11 – Stack dengan Array

 

TUJUAN

Mahasiswa mampu menerapkan konsep stack dengan array

Percobaan 1: Basic Stack

 

Salin dan jalankan coding berikut ini kemudian beri komentar pada setiap baris coding.

#define MAX 5

main()

{

    int tinggi_badan[MAX], indeks;




    for(indeks=0;indeks<MAX;indeks++)

    {

        printf("Masukkan tinggi mahasiswa ke-%d : ",indeks+1);

        scanf("%d",&tinggi_badan[indeks]);

    }




    for (indeks=MAX-1;indeks>=0;indeks--)

    {

        printf("Tinggi mahasiswa ke-%d adalah %d\n",indeks+1,tinggi_badan[indeks]);

    }

}

Dari percobaan yang telah dilakukan, jawab pertanyaan berikut ini:

  1. Tampilkan hasil program setelah dijalankan

1

 

  1. Gambarkan urutan stack hasil dalam bentuk kotak-kotak array dari data yang telah diinputkan
150
140
130
120
110

 

  1. Pada indeks array berapa data yang pertama kali diinputkan muncul?
    Terakhir
  2. Pada indeks array berapa data yang terakhir kali diinputkan muncul?
    Pertama
  3. Konsep apa yang digunakan pada stack ini (FILO/FIFO)?
    FILO
  4. Modifikasi program tersebut sehingga bisa menampilkan data stack dalam array untuk tipe data char (Nama Mahasiswa)
#define MAX 5

main()

{

    char nama[MAX][999];

int indeks;




    for(indeks=0;indeks<MAX;indeks++)

    {

        printf("Masukkan nama mahasiswa ke-%d : ",indeks+1);

        gets(nama[indeks]);

    }




    for (indeks=MAX-1;indeks>=0;indeks--)

    {

        printf("Nama ke-%d adalah %s\n",indeks+1,nama[indeks]);

    }

}

 

2

Latihan 1: Top dan Push dan Pop

 

  1. Modifikasi program percobaan 1 sehingga bisa menampilkan informasi Top [10].
    1
#define MAX 5

main()

{

    int tinggi_badan[MAX], indeks;




    for(indeks=0;indeks<MAX;indeks++)

    {

        printf("Masukkan tinggi mahasiswa ke-%d : ",indeks+1);

        scanf("%d",&tinggi_badan[indeks]);

    }




    printf("\nTop = %d\n",indeks);

    for (indeks=MAX-1;indeks>=0;indeks--)

    {

        printf("Tinggi mahasiswa ke-%d adalah %d\n",indeks+1,tinggi_badan[indeks]);

    }







}

 

 

 

  1. Tambahkan fungsi Push pada program percobaan 1. Kemudian, buatlah coding untuk perintah tersebut sehingga fungsi Push bisa bekerja sesuai teorinya. Fungsi Push berfungsi untuk menambah data tinggi badan baru pada indeks Top+1 [20].
    2
#define MAX 5

#include<stdio.h>

#include<string.h>

main()

{

    int tinggi_badan[MAX],temp, indeks;

    char q[2];




    for(indeks=0;indeks<MAX;indeks++)

    {

        printf("Masukkan tinggi mahasiswa ke-%d : ",indeks+1);

        scanf("%d",&tinggi_badan[indeks]); fflush(stdin);

    }




    printf("\nTop = %d\n",indeks);

    for (temp=MAX-1;temp>=0;temp--)

    {

        printf("Tinggi mahasiswa ke-%d adalah %d\n",temp+1,tinggi_badan[temp]);

    }

    printf("Push data pada stack? (y/n) :");gets(q);

    if (strcmp(q,"y")==0)

    {

        indeks=indeks+1;

        printf("\nMasukkan tinggi mahasiswa ke-%d : ",indeks);

        scanf("%d",&tinggi_badan[indeks]);







        printf("\n\nTop = %d\n",indeks);

        printf("Setelah dilakukan push maka data stack terbaru adalah : \n");

        for (temp=indeks-1;temp>=0;temp--)

        {

            printf("Tinggi mahasiswa ke-%d adalah %d\n",temp+1,tinggi_badan[temp]);

        }

    }

    else

    {

        exit(0);

    }

}


 

  1. Tambahkan fungsi Pop pada program percobaan 1. Kemudian, buatlah coding untuk perintah tersebut sehingga fungsi Pop bisa bekerja sesuai teorinya. Fungsi Pop berfungsi mengosongkan data tinggi badan pada indeks Top [20].
    3
#define MAX 5

#include<stdio.h>

#include<string.h>

main()

{

    int tinggi_badan[MAX],temp, indeks;

    char q[2];




    for(indeks=0;indeks<MAX;indeks++)

    {

        printf("Masukkan tinggi mahasiswa ke-%d : ",indeks+1);

        scanf("%d",&tinggi_badan[indeks]); fflush(stdin);

    }




    printf("\nTop = %d\n",indeks);

    for (temp=MAX-1;temp>=0;temp--)

    {

        printf("Tinggi mahasiswa ke-%d adalah %d\n",temp+1,tinggi_badan[temp]);

    }

    printf("Pop data pada stack? (y/n) :");gets(q);

    if (strcmp(q,"y")==0)

    {

        temp=indeks-1;

        tinggi_badan[indeks-1]=0;




        printf("\n\nTop = %d\n",temp);

        while(temp >0)

        {

            printf("Tinggi mahasiswa ke-%d adalah %d\n",temp,tinggi_badan[temp-1]);

            temp=temp-1;

        }

    }

    else

    {

        exit(0);

    }
















}

 

 

 

  1. Tambahkan fungsi notifikasi IsFull ketika Push dilakukan pada Array yang sudah penuh [20]
    4
  1. Tambahkan fungsi notifikasi IsEmpty ketika Pop dilakukan pada Array yang sudah kosong [20]

    5

  2. Tambahkan fungsi Clear untuk mengosongkan semua isi array [10].

6



#define MAX 2

#include<stdio.h>

#include<string.h>

int tinggi_badan[MAX], indeks,temp;

main()

{




    for(indeks=0;indeks<MAX;indeks++)

    {

        printf("Masukkan tinggi mahasiswa ke-%d : ",indeks+1);

        scanf("%d",&tinggi_badan[indeks]);

    }

    system("cls");

    menu();







}




menu()

{

    int x;

    printf("\n");

    puts("1. Tampilkan Data");

    puts("2. Push");

    puts("3. Pop");

    puts("4. Top");

    puts("5. Clear");

    puts("0. Exit");

    printf("Enter your choice : ");

    scanf("%d",&x);

    if (x==0)

    {

        system("cls");

        printf("Bye. \n\n");

        exit(0);

    }

    else if (x==1)

    {

        show();

    }

    else if (x==2)

    {

        push();

    }

    else if (x==3)

    {

        pop();

    }

    else if (x==4)

    {

        top();

    }

    else if (x==5)

    {

        clear();

    }

    else

    {

        system("cls");

        printf("Njirr salah inputan vroh\n\n");

        system("pause");

        fflush(stdin);

        menu();

    }




}










show()

{

    system("cls");

    for (temp=indeks-1;temp>=0;temp--)

    {

        printf("Tinggi mahasiswa ke-%d adalah %d\n",temp+1,tinggi_badan[temp]);

    }

    menu();

}




push()

{

    system("cls");

    if(indeks==MAX)

    {

        printf("Stack directory sudah penuh. Tidak dapat push data.\n");

        system("pause");

        system("cls");

        menu();




    }

    else

    {

        indeks=indeks+1;

        printf("Masukkan tinggi mahasiswa ke-%d : ",indeks);

        scanf("%d",&tinggi_badan[indeks-1]);

        system("cls");

        menu();




    }

}




pop()

{

    system("cls");

    if(indeks==0)

    {

        printf("Stack directory sudah kosong. Tidak dapat pop data.\n");

        system("pause");

        system("cls");

        menu();




    }

    else

    {

        indeks=indeks-1;

        //printf("%d - %d\n\n",indeks,tinggi_badan[indeks-1]);

        printf("Data telah di pop.\n\n");

        system("pause");

        system("cls");

        menu();

    }

}




top()

{

    system("cls");

    printf("\nTop = %d\n",indeks);

    menu();

}




clear()

{

    for(temp=0;temp<MAX;temp++)

    {

        tinggi_badan[temp]=0;

    }

    system("cls");

    printf("Data telah di clear\n\n");

    system("pause");

    system("cls");

    indeks=0;

    menu();

}
Share Button

By Rinaldo Jonathan

Admin of this site. Artis papan PCB. #zoneRinaldo #Controllerism Studio Demon, Stage Angel, Sleepy Developer, Smoke free. Kalkud SHS 2012, PCR G15.

1 comment

Leave a Reply

Verified by ExactMetrics