LAPORAN PRAKTIKUM IV STACK Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data Dibimbing oleh Bapak Utomo Pujianto
Oleh : Anidia Wulan Sari
(150533601651)
Dimas Galih Ramadhan
(150533600571)
S1 PTI’15 OFF A
UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA Maret 2016
MODUL IV STACK 1. TUJUAN 1. Memahami terminologi yang terkait dengan struktur data stack. 2. Memahami operasi-operasi yang ada dalam stack. 3. Dapat mengidentifikasi permasalahan-permasalahan pemrograman yang harus diselesaikan dengan menggunakan stack, sekaligus menyelesaikannya.
2. DASAR TEORI 1. Pengertian Stack Stack merupakan sebuah kumpulan data yang diletakkan di atas data lainya, seperti sebuah tumpukan. Dengan demikian, stack merupakan salah satu struktur data yang menerapkan prinsip LIFO (Last In First Out). Dimana elemen yang terakhir disimpan dalam stack, menjadi elemen yang pertama diambil. Untuk meletakkan sebuah elemen pada bagian atas dari stack, maka dilakukan operasi push. Sedangkan untuk memindahkan sebuah elemen dari tempat atas tersebut dalam sebuah stack, maka dilakukan operasi pop.
2. Operasi Dasar Pada Stack
Create Merupakan operator yang berfungsi untuk membuat sebuah stack kosong.
IsEmpty
Merupakan operator yang berfungsi untuk menentukan apakah suatu stack merupakan stack kosong. Tanda bahwa sebuah stack kosong adalah Top bernilai kurang dari nol (-1).
IsFull Merupakan operator yang digunakan untuk memeriksa apakah stack yang ada sudah penuh. Stack akan penuh jika puncak stack terletak tepat dibawah jumlah maksimum yang dapat ditampung stack (Top = MAX_STACK-1).
Push Merupakan operator yang berfungsi untuk menambahkan satu elemen ke dalam stack dan tidak dapat dilakukan jika stack dalam keadaan penuh.
Pop Merupakan operator yang berfungsi untuk mengeluarkan satu elemen teratas dari dalam stack dengan syarat stack tidak dalam kondisi kosong.
Clear Fungsi yang digunakan untuk mengosongkan stack dengan cara mengeset Top dengan -1. Jika Top bernilai kurang dari nol maka stack dianggap kosong.
Retrieve Fungsi yang digunakan untuk melihat nilai yang berada pada posisi tumpukan teratas.
3. Pointer Sebagai Penunjuk Stack Selain menggunakan indeks, untuk menunjuk sebuah Top atau posisi teratas dari stack, dapat juga digunakan pointer sebagai berikut.
Membuat Stack Dengan Pointer
Proses Push
Proses Pop
4. Representasi Proses Stack Stack adalah salah satu dari contoh struktur data yang terdiri dari satu collection, yang juga menerapkan prinsip LIFO. Bila stack tersebut menggunakan array satu dimensi, maka stack tersebut dapat diilustrasikan sebagai berikut :
Pada gambar 4.2 diatas diilustrasikan ada sebuah indeks array yang masih kosong pada awal pembuatan stcak dimana n[10], variabel Top berada pada -1 yang menunjukkan indeks masih dalam keadaan kosong.
Pada gambar 4.3 adalah keadaan ketika stack sudah diisi data. Pada kondisi ini data pertama yang diinputkan adalah S[0]=11, data kedua S[1]=7, data ketiga S[2]=15, data keempat S[23]=23. Kondisi Top sudah berubah menjadi data yang terakhir diinputkan (data keempat) sehingga Top[3] X=23. Variabel Top digunakan sebagai indeks untuk menunjuk nomor elemen array yang berisi nilai stack yang berada paling kanan atau Top, yang ditunjukan dengan angka 3. Variabel X bertipe integer digunakan sebagai perantara, dimana data yang akan disimpan kedalam stack harus berasal dari X. Demikian juga data yang baru diambil dari dalam stack harus diterima terlebih dahulu oleh variabel X, kemudian baru diberikan ke variabel lain untuk diolah. Oleh karena itu, jika ada instruksi PUSH, maka data baru (yang diambil dari isi variabel X) akan disimpan dalam elemen S[4] sehingga indeks Top harus diarahkan ke posisi no.4. Artinya, Top maju terlebih dahulu satu langkah ke S[4], kemudian baru mengisi nilai pada S[4]. Sedangkan jika ada instruksi Pop, maka yang akan diambil adalah isi dari S[3] dan datanya akan disimpan terlebih dahulu dalam variabel X, kemudian indeks Top menjadi mundur satu langkah sehingga akan menunjuk S[2].
5. Double Stack Double Stack atau Stack Ganda adalah dua stack yang berada dalam satu array. Satu array digunakan untuk dua stack dimana dasar Stack1 berada pada sisi indeks yang terkecil dan dasar Stack2 berada pada sisi indeks yang terbesar. Sama halnya dengan Single Stack, Double Stack juga menerapkan prinsip LIFO (Last in Firt Out).
Pada gambar 4.4 diatas adalah ilustrasi indeks array pada double stack. Padastack 1 kondisi data pertama yang diinputkan adalah S[0], data kedua S[1], data ketiga S[2] dan Top=data input terakhir S[2]. Sedangkan pada stack 2 data pertama adalah S[9], data kedua S[8], data ketiga S[7], data keempat S[6] dan Top=data input terakhir S[6].
6. Operasi Dasar Pada Double Stack
Inisialisasi Proses awal adalah proses menyiapkan indeks petunjuk stack untuk pertama kali. Pada tahap ini ditetapkan Top1=-1 (sama seperti single stack) dan Top2=banyak jumlah data.
Is Empty Sama dengan single stack, yaitu proses pengecekan stack dalam kondisi kosong
Is Full Sama dengan single stack, yaitu proses pengecekan stack dalam kondisi kosong
Push (Stack1 dan Stack2) Proses mengisi data pada stack1 maupun 2
Pop (Stack1 dan Stack2) Proses mengambil data pada stack1 maupun 2
3. Latihan Praktikum Latihan Praktikum 1 Pemrograman C++ Nama Program
: Single Stack
Bahasa Pemrogramam
: C++
Compiler
: MinGW Developer Studio
Script program
:
#include
#include <stdio.h> #include #include <windows.h> #define maxstack 4 using namespace std; struct STACK { //Membuat jenis data abstrak 'STACK' int top; float data[4]; }; float dta; struct STACK stackbaru; void inisialisasi() { stackbaru.top=-1; } bool isfull() { if(stackbaru.top==maxstack) return true; else return false; } bool isempty() { if(stackbaru.top==1) return true; else return false; } void push(float dta) { if(isfull()==true) { puts("Maaf, stack penuh"); getch(); } else { stackbaru.top++; stackbaru.data[stackbaru.top]=dta; } }
void pop() { if(isempty()==true) { cout<<"Data telah kosong!"; getch(); } else { cout<<"Data yang terambil "<<stackbaru.data[stackbaru.top]<<endl; stackbaru.top--; getch(); } }
adalah
void print() { for(int i=0;i<=stackbaru.top;i++) {cout<<stackbaru.data[i]<<" ";} } void clear() { stackbaru.top=-1; } int main() { inisialisasi(); char menu; char uulang; do{ system("cls"); printf("\t ---------------------\n"); printf("\t | STACK |\n"); printf("\t ---------------------\n"); printf("\n\ --> Menu STACK :\n\n"); puts("1. push stack"); puts("2. pop stack"); puts("3. cetak"); puts("4. bersihkan stack"); puts("5. exit"); cout<<"Menu pilihan anda: "; cin>>menu; if(menu=='2') { pop(); uulang='y'; } else if(menu=='1') {
data
ke:
cout<<"data yang akan disimpan di stack: "; cin>>dta; push(dta); uulang='y'; } else if(menu=='3') { print(); cout<<"\nUlang?(y/t) "; cin>>uulang; } else if(menu=='4') { clear(); cout<<"\nUlang?(y/t) "; cin>>uulang; } else if(menu=='5') { exit(0); } } while(uulang=='Y' || uulang=='y'); }
Output Program
:
Algoritma 1. 2. 3. 4.
: Mulai. Membaca file header. Membaca fungsi struct STACK. Membaca tipe data integer top, float data yang berisikan array dengan
elemen berjumlah 4 (float data [4]). 5. Membaca tipe data float dta. 6. Membaca fungsi struct STACK stackbaru. 7. Membaca fungsi inisialisasi. 8. Membaca fungsi bool isfull. 9. Membaca fungsi bool isempty. 10. Membaca fungsi push(float dta) 11. Membaca fungsi pop. 12. Membaca fungsi print ( untuk mencetak data ). 13. Membaca fungsi clear (untuk menghapus/ mengosongkan data). 14. Membaca fungsi utama. 15. Pemanggilan fungsi inisialisasi. 16. Membaca tipe data charr menu dan uulang. 17. Membaca pemanggilan percabangan do-while, yand didalamnya terdapat pilihan menu dengan menggunakan perulangan if else. 18. Jika 1 maka pemanggilan fungsi pop dan uulang berfungsi. 19. Jika 2 maka fungsi push dan uulang, serta inputan data yang akan disimpan. 20. Jika 3 maka fungsi print dan uulang. 21. Jika 4 maka fungsi clear dan uulang. 22. Jika 5 maka fungsi exit (keluar). 23. Cetak hasil. 24. Selesai.
Diskripsi
: Pada program ini menggunakan 4 file header. Penggunaan logika Boolean
pada fungsi pop dan push harus benar , jika tidak maka program saat dijalankan akan error(outputnya tidak akan keluar dengan benar/ sesuai dengan yang ditargetkan). Penulisan fungsi pop dan push perlu diperhatikan. Untuk menjalankan setiap menu yang disediakan menggunakan percabangan do- while dengan perulangan if else. Menu 1 apabila memilih pop maka fungsi pop akan berfungsi mulai menjalankan logika Boolean yang ada pada deklarasi fungsi pop. Jika benar maka data telah kosong jika salah maka data yang terambil diambl dengan pembacaan fungsi stackbaru.data[stackbaru.top]. Menu 2 apabila memilih menu push, maka fungsi push akan berfungsi, jika logika Boolean benar maka stack,
penuh
jika
tidak
maka
akan
berfungsi
“stackbaru.top++;
stackbaru.data[stackbaru.top]=dta;”.
Latihan Praktikum 2 Pemrograman C++ Nama Program
: Double Stack
Bahasa Pemrogramam
: C++
Compiler
: MinGW Developer Studio
Script program
:
#include <stdio.h> #include #include <stdlib.h> #define MAX 10 #define true 1 #define false 0 char stack[MAX]; int top1, top2; void init(void); void push(char data, int nomorstack); char pop(int nomorstack); void clear(int nomorstack); int full(void); int empty(int nomorstack); void baca(); int main() { char data; int pilih, nomorstack; init(); do{ system("cls"); printf("Contoh program double stack"); printf("\n1. Push"); printf("\n2. Pop"); printf("\n3. Clear"); printf("\n4. Cetak Data"); printf("\n5. Selesai"); printf("\nPilihan anda: "); scanf("%i", &pilih); switch(pilih){ case 1: printf("Push\n"); printf("Masukkan datanya:\n");
scanf("%s", &data); printf("Mau dimasukkan ke stack berapa? 1 atau 2? \n"); scanf("%i", &nomorstack); push(data, nomorstack); break; case 2: printf("Pop\n"); printf("Masukkan nomor stack\n"); scanf("%i", &nomorstack); printf("\nData yang akan dikeluarkan adalah %s", &data); pop(nomorstack); getch(); break; case 3: printf("Clear\n"); printf("Nomor stack
yang
akan
dikosongkan\n"); scanf("%s", &nomorstack); clear(nomorstack); break; case 4: printf("Cetak Data:\n\n"); baca(); break; case 5: printf("Exit"); break; default: printf("Pilihan
yang
ada"); break; } } while(pilih!=5); getch(); } void init() { top1=-1; top2=MAX+1; } void push(char data, int nomorstack)
anda
masukkan
tidak
{ if(full()!=true) { switch(nomorstack) { case 1: top1++; stack[top1]=data; break; case 2: top2--; stack[top2]=data; break; default: printf("\nNomor stack salah"); break; } } else printf("\nStack penuh"); getch(); } char pop(int nomorstack) { char data; if(empty(nomorstack)!=true) { switch(nomorstack) { case 1: data=stack[top1]; top1--; return data; break; case 2: data=stack[top2]; top2++; return data; break; default: printf("\nNomor stack salah"); break; } } else printf("\nStack masih kosong"); getch(); return 0;
} int full(void) { if(top2-top1==1){ return true; } else return false; } int empty(int nomorstack) { switch(nomorstack) { case 1: if(top1==0) return true; else return false; break; case 2: if(top2==MAX+1) return true; else return false; break; } } void clear(int nomorstack) { switch(nomorstack) { case 1: top1=1; break; case 2: top2=MAX; break; default: printf("Nomor stack salah"); break; } } void baca() { int i; printf("Cetak isi stack pertama:\n");
for(i=0;i<=top1;i++) { printf("%c", stack[i]); printf("\n"); } printf("Cetak isi stack kedua:\n"); for(i=MAX; i>=top2; i--) { printf("%c",stack[i]); printf("\n"); } getch(); }
Output Program
:
Algoritma
:
1. Mulai. 2. Membaca file header. 3. Membaca fungsi utama. 4. Membaca fungsi push 5. Membaca fungsi pop. 6. Membaca fungsi clear 7. Membaca fungsi print ( untuk mencetak data ). 8. Menampilkan Menu program double stack 9. Membaca tipe data charr menu dan uulang. 10. Membaca pemanggilan percabangan do-while, yand didalamnya terdapat pilihan menu dengan menggunakan perulangan if else. 11. Jika 1 maka fungsi push dan uulang, serta inputan data yang akan disimpan. 12. Jika 2 maka pemanggilan fungsi pop dan uulang berfungsi. 13. Jika 3 maka fungsi clear dan uulang. 14. Jika 4 maka fungsi print dan uulang. 15. Jika 5 maka fungsi exit (keluar). 16. Cetak hasil. 17. Selesai.
Diskripsi
: Pada program ini menggunakan 3 file header. Penggunaan logika pada
fungsi pop dan push harus benar , jika tidak maka program saat dijalankan akan error(outputnya tidak akan keluar dengan benar/ sesuai dengan yang ditargetkan). Penulisan fungsi pop dan push perlu diperhatikan. Untuk menjalankan setiap menu yang disediakan menggunakan percabangan Menu 2 apabila memilih pop maka fungsi pop akan berfungsi mulai menjalankan logika yang ada pada deklarasi fungsi pop. Menu 1 apabila memilih menu push, maka fungsi push akan berfungsi, jika logika benar .
Latihan Praktikum 3 Pemrograman C++ Nama Program
: Program pembalik kata dengan stack
Bahasa Pemrogramam
: C++
Compiler
: MinGW Developer Studio
Script program
:
#include <stdio.h> #include #include
#include <string.h> #include <stdlib.h> #define MAX 75 #define true 1 #define false 0 char stack[MAX]; int top; void init(void); int full(void); int empty(void); char pop(void); void clear(void); void push(char info); main() { char pilih; char kal[75]; int k,p; printf("-*PROGRAM
MEMBALIK
KATA
DENGAN
STACK
-*-\n\n"); init(); do { printf(" ======================\n"); printf(" || MENU PILIHAN ||\n"); printf(" ======================\n"); printf(" ||[1] Masukan Kata ||\n"); printf(" ||[2] Balik Kata ||\n"); printf(" ||[3] Selesai ||\n"); printf(" ======================\n"); printf(" Pilihan: "); scanf("%s",&pilih); system("cls"); switch(pilih) { case '1': printf("\nMasukkan data: "); scanf("%s",&kal); p=strlen(kal); for(k=0;k<=p;k++) push(kal[k]); printf("\nKata yang masuk: "); for(k=0;k<=p;k++) printf("%c", stack[k]); printf("\n"); break; case '2': if(empty()!=true) { printf("\nKata setelah dibalik: ");
for(k=top;k>=0;k--) printf("%c", pop()); printf("\n"); } else printf("\nStack kosong!!\n"); break; case '3': break; default: printf("\nPilihan anda salah!!\n"); } printf("\n"); } while(pilih!='3'); } void init(void) { top=0; } void push(char info) { if(full()!=true) { top++; stack[top]=info; } else printf("\nStack overlow...\n"); } char pop(void) { char info; if(empty()!=true) { info=stack[top]; top--; return(info); } else printf("\nStack underflow...\n"); } int full(void) { if(top==MAX) return(true); else return(false);
} int empty(void) { if(top==0) return(true); else return(false); }
Output Program
:
Algoritma
:
1. Mulai. 2. Membaca file header. 3. Membaca tipe data char stack[max] . 4. Membaca fungsi utama 5. Mencetak Menu dari program membalik kata denagn stack 6. Membaca pemanggilan percabangan 7. Jika 1 maka masuk pada case 1 masukkan kata 8. Jika 2 maka masuk pada case 2 balik kata 9. Jika 3 maka exit (keluar). 10. Cetak hasil. 11. Selesai.
Diskripsi
: Program diatas merupaka program yang berfungsi membalikkan kalimat
dengan memanfaatkan fungsi- fungsi dalam stack. Penggunaan fungsi operasioperasi dasar dari stack , kemudia penggunaan tipe data char stack[MAX] yang
berfungsi menampung kalimat yang akan dibalik sebanyak 75 elemen yang tersedia. Kemudian Penggunaan fungsi perulangan for yang digunakan untuk membalikkan kata , yaitu : for(k=0;k<=p;k++) printf("%c", stack[k]);
4. Tugas Rumah Tugas Rumah Pemrograman C++ Nama Program
: Program Penyimpanan Data Mahasiswa
Bahasa Pemrogramam
: C++
Compiler
: MinGW Developer Studio
Script program
:
#include #include <windows.h> #include using namespace std;
struct
mahasiswa{char
data_nilai;}; void tmbh_mhs(); void push(mahasiswa); void init(); bool isFull(); bool isEmpty(); void sorting(int); void baca_mhs(); mahasiswa pop(); void baca_sorting();
nim[50];
char
nama[50];int
int flag = -1; const int MAX = 10; mahasiswa db_mhs[MAX]; int main() { system("cls"); char inputan; cout << "\t+++++++++++++ Program stack mahasiswa ++++++++ +++++\n"; cout << endl << endl; cout << "\tJumlah stack : " << flag+1 << "
Batas
Maksimum : " << MAX; cout << endl << endl; cout
<<
"\t+------------------
MENU
UTAMA
-----------------+\n"; cout
<<
"\t|
NO
|
PILIHAN
|\n"; cout
<<
"\t+----
+-------------------------------------------+\n"; cout << "\t| 1
|
Tambahkan data mahasiswa (Push Stack)
|\n"; cout << "\t| 2
|
Tampilkan data mahasiswa (Pop stack)
|\n"; cout << "\t| 3
|
Tampilkan data dan sorting (Pop
sorting) |\n"; cout
<<
+-------------------------------------------+\n"; cout << "\tPilih menu : ";cin >> inputan; switch(inputan) { case '1' : tmbh_mhs(); break; case '2' : baca_mhs(); break; case '3' : baca_sorting(); break; }
"\t+----
} void push(mahasiswa mhs) { flag++; db_mhs[flag] = mhs; cout << db_mhs[flag].nim; } void tmbh_mhs() { int ipt; mahasiswa mhs; system("cls"); cout << "\t+++++++++++++Tambah Mahasiswa Menu (Push Menu) +++++++++++++\n"; cout << endl << endl; cout
<<
"\tMasukkan
jumlah
data
:
";cin
>>
ipt;cout<<endl; for(int i = 0;i < ipt;i++)
{
if(!isFull()) { cout << "\tMahasiswa ke : " << i+1 << endl; cout << "\tMasukkan NIM : ";cin >> mhs.nim; cout << "\tMasukkan Nama : ";cin >> mhs.nama; cout
<<
"\tMasukkan
Nilai
:
";cin
>>
mhs.data_nilai; push(mhs); cout << "\tData telah di push " << endl << endl; } else { cout << "\tData penuh."<<endl; break; } } system("pause"); system("cls"); main(); } bool isEmpty() { if(flag == -1) return true; else return false; } bool isFull() { if(flag == MAX-1) return true; else return false;
} mahasiswa pop() { return db_mhs[flag--]; }
void baca_mhs() { int ipt; mahasiswa mhs; system("cls"); cout << "\t+++++++++++++Baca Mahasiswa Menu (Pop menu)+++ ++++++++++\n"; cout << endl << endl; if(isEmpty())
{
cout << "Data kosong\n"; system("pause"); main(); } cout << "\tMasukkan jumlah data yang dikeluarkan : ";cin >> ipt;cout<<endl; if(ipt <= flag+1) { cout
<<
"\t+---------------+----------------
+-----------------+\n"; cout << "\t| Nim Mahasiswa | Nama Mahasiswa | Nilai Mahasiswa |\n"; cout
<<
"\t+---------------+----------------
+-----------------+\n"; for(int i = 0;i < ipt;i++)
{
if(!isEmpty()) { mhs = pop(); cout << "\t " << mhs.nim << " \t\t mhs.nama << " \t\t
" <<
" << mhs.data_nilai << endl << endl; cout << "\t Data telah di pop " << endl <<
endl; cout "\t----------------------------------------------------\n"; } else { cout << "\tData kosong."<<endl; break; }
<<
} } else { cout << "Data tidak sebanyak itu\n"; } system("pause"); main(); } void sorting(int jml) { int j; int temp; char temp_i[2][50]; for(int i=0; i<jml; i++) { temp = db_mhs[i].data_nilai; strcpy(temp_i[0],db_mhs[i].nim); strcpy(temp_i[1],db_mhs[i].nama); j = i-1; while (db_mhs[j].data_nilai>temp && j>=0) { db_mhs[j+1].data_nilai = db_mhs[j].data_nilai; strcpy(db_mhs[j+1].nama,db_mhs[j].nama); strcpy(db_mhs[j+1].nim,db_mhs[j].nim); j--; } db_mhs[j+1].data_nilai = temp; strcpy(db_mhs[j+1].nim,temp_i[0]); strcpy(db_mhs[j+1].nama,temp_i[1]); } } void baca_sorting() { int ipt; mahasiswa mhs; system("cls"); cout << "\t+++++++++++++Baca Mahasiswa Sorting Menu (Pop menu)+++++++++++++\n"; cout << endl << endl; if(isEmpty())
{
cout << "Data kosong\n"; system("pause"); main(); }
cout << "\tMasukkan jumlah data yang dikeluarkan : ";cin >> ipt;cout<<endl; if(ipt <= flag+1) { cout << "Sebelum sorting : \n\n"; cout
<<
"\t+---------------+----------------
+-----------------+\n"; cout << "\t| Nim Mahasiswa | Nama Mahasiswa | Nilai Mahasiswa |\n"; cout
<<
"\t+---------------+----------------
+-----------------+\n"; for(int i = ipt;i >= 0;i--)
{
if(!isEmpty()) { mhs = db_mhs[i]; cout << "\t " << mhs.nim << " \t\t mhs.nama << " \t\t
" <<
" << mhs.data_nilai << endl << endl; cout << "\t Data tidak di pop " << endl <<
endl; cout
<<
"\t----------------------------------------------------\n"; } else { cout << "\tData kosong."<<endl; break; } } sorting(ipt); cout << "Sesudah Sorting : \n\n"; cout
<<
"\t+---------------+----------------
+-----------------+\n"; cout << "\t| Nim Mahasiswa | Nama Mahasiswa | Nilai Mahasiswa |\n"; cout
<<
"\t+---------------+----------------
+-----------------+\n"; for(int i = 0;i < ipt;i++)
{
if(!isEmpty()) { mhs = pop(); cout << "\t " << mhs.nim << " \t\t mhs.nama << " \t\t
" << mhs.data_nilai << endl << endl;
" <<
cout << "\t Data telah di pop " << endl << endl; cout "\t----------------------------------------------------\n"; } else { cout << "\tData kosong."<<endl; break; } } } else { cout << "Data tidak sebanyak itu\n"; } system("pause"); main(); }
Output Program
:
<<
Algoritma Program
:
1. Mulai program 2. Menampilkan Menu Utama 3. Apabila memasukkan inputan 1 maka akan masuk pada Menu Push Stack 4. Pada menu ini diminta inputan jumlah data 5. Memasukkan NIM 6. Memasukkan Nama 7. Memasukkan Nilai 8. Tekan keyboard untuk kembali ke Menu Utama 9. Apabila memasukkan inputan 2 maka akan masuk pada Menu Pop Stack 10. Pada menu ini diminta memasukkan inputan Jumlah data yang dikeluarkan 11. Tekan keyboard untuk kembali ke Menu Utama 12. Apabila memasukkan inputan 3 maka akan masuk pada Menu delete barang 13. Pada menu ini ini diminta memasukkan inputan Jumlah data yang dikeluarkan 14. Menampilkan data sebelum sorting 15. Menampilkan data setelah sorting 16. Tekan keyboard untuk kembali ke manu 17. Selesai Penjelasan Program : Program ini kita menggunakan header iostream, windows.h, dan conio.h. untuk header iostream digunakan untuk menampilkan fungsi cout dan cin, windows digunakan
untuk memberikan warna, sedangkan conio.h digunakan untuk menampilkan fungsi getch dan clscr. Dalam program ini kita membuat sebuah program stack mahasiswa, dengan jumlah stack 0 dan batas maksimumnya 10. Pada program ini akan disajikan pilihan menu yaitu (1) Tambahkan data mahasiswa (Push Stack), pilihan (2) Tampilkan data mahasiswa (Pop Stack), pilihan (3) Tampilkan data dan sorting (Pop Sorting). Pada menu pilihan (1) diminta inputan jumlah data dengan rincian inputan yang dimasukkan adalah NIM, Nama, dan Nilai. Untuk pilihan (2) diminta inputan jumlah data yang dikeluarkan yaitu data telah di pop. Untuk pilihan (3) diminta inputan jumlah data yang dikeluarkan, setelah itu program akan menampilkan data sebelum di sorting dan data sesudah di sorting.
KESIMPULAN 1. Stack merupakan sebuah kumpulan data yang diletakkan di atas data lainya, seperti sebuah tumpukan. 2. Untuk meletakkan sebuah elemen pada bagian atas dari stack, maka dilakukan operasi push. Sedangkan untuk memindahkan sebuah elemen dari tempat atas tersebut dalam sebuah stack, maka dilakukan operasi pop.
DAFTAR RUJUKAN 1. Tim Asisten Dosen. 2014. Modul II, Sorting. Malang: Unversitas Negeri Malang. 2. Tim Asisten Dosen. 2014. Modul III, Searching. Malang: Unversitas Negeri Malang. 3. Tim Asisten Dosen. 2014. Modul IV, Stack. Malang: Unversitas Negeri Malang. 4. Kadir, Abdul. 2012. Buku Pintar C++ Untuk Pemula. Yogyakarta: MediaKom. 5. Shalahuddin , M. dan Rosa A. S.2009 . Belajar Bahasa Pemrograman dengan Bahasa C++ dan Java Karya.Bandung : Informatika.