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:
- Tampilkan hasil program setelah dijalankan
- Gambarkan urutan stack hasil dalam bentuk kotak-kotak array dari data yang telah diinputkan
150 |
140 |
130 |
120 |
110 |
- Pada indeks array berapa data yang pertama kali diinputkan muncul?
Terakhir - Pada indeks array berapa data yang terakhir kali diinputkan muncul?
Pertama - Konsep apa yang digunakan pada stack ini (FILO/FIFO)?
FILO - 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]); } }
Latihan 1: Top dan Push dan Pop
#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]); } }
- 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].
#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); } }
- 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].
#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); } }
- Tambahkan fungsi notifikasi IsEmpty ketika Pop dilakukan pada Array yang sudah kosong [20]
- Tambahkan fungsi Clear untuk mengosongkan semua isi array [10].
#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(); }
Incoming Terms
- Menampilkan Data Dari Urutan Terakhir Stack
1 comment