Pengertian Stack atau Tumpukan
Pengertian Stack atau Tumpukan adalah suatu stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Stack (Tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“ TOP dan Penghapusan selalu dilakukan pada TOP.
Kata Pengantar
LATAR BLAKANG
TUJUAN
OPERASI-OPERASI/FUNGSI STACK
Segala
puji
bagi Allah SWT, atas limpahan rahmat
dan kasih sayangnya. Dan shalawat dan
salam
kepada nabi Muhammad SAW. Rasa syukur yang
mendalam ini muncul dari hari
sanubari yang
sangat mendalam, karena telah dapat membuat
makalah Struktur
Data ini tentang
Stack. Makalah
ini sangat dibutuhkan, karena dijadikan sebagai
panduan dalam
pembelajaran dan sebagai wujud
dalam pengembangan pembelajaran. Dalam
kesempatan ini, ucapan terima kasih kami aturkan
bagi penyusun makalah ini.
Disamping itu, kami
juga menyadari bahwa makalah ini tidak luput dari
sisi-sisi
kelemahannya. Oleh karena itu, kami
mengharapkan kritik dan saran demi
pencapaian
yang maksimal terhadap makalah ini.
LATAR BLAKANG
Sebagaimana
yang telah dijelaskan sepintas
dalam kata pengantar bahwa membuat
makalah Struktur Data ini tentang Stack.
Makalah ini sangat dibutuhkan, karena
dijadikan sebagai panduan dalam
pembelajaran dan sebagai wujud dalam
pengembangan pembelajaran.
TUJUAN
Dalam hal ini berusaha
menyelesaikan tugas
mata kuliah Struktur Data untuk membuat
makalah yang
membahas tentang Program
pengurutan nilai mahasiswa untuk
mempermudah
dosen-dosen untuk menginput
nilai mahasiswa
sebagaimana kita
menggunakan program Stack.
OPERASI-OPERASI/FUNGSI STACK
- Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
- Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
- Clear : digunakan untuk mengosongkan stack
- IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
- IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
INISIALISASI STACK
Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG.!
Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH!
Ilustrasi stack pada saat inisialisasi
Fungsi IsFull
Untuk memeriksa apakah stack sudah penuh?
Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full
Ilustrasi
Contoh rumus sederhaana stack
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
int main()
{
struct DataMhs
{
long int nim;
char nama[30];
int ipk;
char alamat[20];
};
int menu, i, j, BykMhs, inno=1, outno=1, y=10, yy=4 ;
DataMhs mahasiswa[50];
DataMhs temp;
cout<<"\t\t\t*****************************\n";
cout<<"\t\t\tNama KELOMPOK : KELOMPOK STACK\n";
cout<<"\t\t\tKELAS : 12.2A.07\n";
cout<<"\t\t\tJurusan : Teknik lnformatika \n";
cout<<"\t\t\t*****************************\n";
cout<<endl;
cout<<"Banyak mahasiswa : "; cin>>BykMhs;
//input data
cout<<" ------------------------------------------------------------------------\n";
gotoxy(1,wherey());cout<<" |";
gotoxy(4,wherey());cout<<"NO";
gotoxy(7,wherey());cout<<"|";
gotoxy(13,wherey());cout<<"NIM";
gotoxy(20,wherey());cout<<"|";
gotoxy(31,wherey());cout<<"NAMA";
gotoxy(45,wherey());cout<<"|";
gotoxy(51,wherey());cout<<"IPK";
gotoxy(59,wherey());cout<<"|";
gotoxy(64,wherey());cout<<"ALAMAT";
gotoxy(73,wherey());cout<<"|";
cout<<"\n ------------------------------------------------------------------------\n";
for(int a=0; a<BykMhs; a++)
{
gotoxy(wherex(),y++);{
gotoxy(1,y);cout<<" |",
gotoxy(7,y);cout<<"|",
gotoxy(20,y);cout<<"|",
gotoxy(45,y);cout<<"|",
gotoxy(59,y);cout<<"|",
gotoxy(73,y);cout<<"|";
gotoxy(4,y);cout<<inno++,
gotoxy(9,y),cin>>mahasiswa[a].nim,
gotoxy(22,y),gets(mahasiswa[a].nama),
gotoxy(50,y),cin>>mahasiswa[a].ipk,
gotoxy(61,y),gets(mahasiswa[a].alamat);}
}
cout<<" ------------------------------------------------------------------------\n";
//data sebelum urut
out:
clrscr();
cout<<"Data yang anda masukkan (belum urut)"<<endl;
cout<<" ------------------------------------------------------------------------\n";
gotoxy(1,wherey());cout<<" |";
gotoxy(4,wherey());cout<<"NO";
gotoxy(7,wherey());cout<<"|";
gotoxy(13,wherey());cout<<"NIM";
gotoxy(20,wherey());cout<<"|";
gotoxy(31,wherey());cout<<"NAMA";
gotoxy(45,wherey());cout<<"|";
gotoxy(51,wherey());cout<<"IPK";
gotoxy(59,wherey());cout<<"|";
gotoxy(64,wherey());cout<<"ALAMAT";
gotoxy(73,wherey());cout<<"|";
cout<<"\n ------------------------------------------------------------------------\n";
for(int b=0; b<BykMhs; b++)
{
gotoxy(wherex(),yy++);{
gotoxy(1,yy);cout<<" |",
gotoxy(7,yy);cout<<"|",
gotoxy(20,yy);cout<<"|",
gotoxy(45,yy);cout<<"|",
gotoxy(59,yy);cout<<"|",
gotoxy(73,yy);cout<<"|";
gotoxy(4,yy);cout<<outno++,
gotoxy(9,yy),cout<<mahasiswa[b].nim,
gotoxy(22,yy),cout<<mahasiswa[b].nama,
gotoxy(50,yy),cout<<mahasiswa[b].ipk,
gotoxy(61,yy),cout<<mahasiswa[b].alamat;}
}
cout<<"\n ------------------------------------------------------------------------\n";
//menampilkan menu pilihan untuk sorting
cout<<endl<<"Menu pilihan sorting : "<<endl;
cout<<"[1] Urut berdasarkan NIM"<<endl;
cout<<"[2] Urut berdasarkan IPK"<<endl;
cout<<"[3] Keluar"<<endl;
cout<<"Silahkan masukkan pilihan anda : "; cin>>menu;
//sorting
if(menu==1)
{
int no1=1;
clrscr();
//sorting (buble sort) berdasarkan nim
for(i=0; i<BykMhs-1; i++)
{
for(j=0; j<BykMhs-1-i; j++)
{
if(mahasiswa[j].nim>mahasiswa[j+1].nim)
{
//tukar nim
temp.nim=mahasiswa[j].nim;
mahasiswa[j].nim=mahasiswa[j+1].nim;
mahasiswa[j+1].nim=temp.nim;
//tukar nama
strcpy(temp.nama, mahasiswa[j].nama);
strcpy(mahasiswa[j].nama, mahasiswa[j+1].nama);
strcpy(mahasiswa[j+1].nama, temp.nama);
//tukar IPK
temp.ipk=mahasiswa[j].ipk;
mahasiswa[j].ipk=mahasiswa[j+1].ipk;
mahasiswa[j+1].ipk=temp.ipk;
//tukar alamat
strcpy(temp.alamat, mahasiswa[j].alamat);
strcpy(mahasiswa[j].alamat, mahasiswa[j+1].alamat);
strcpy(mahasiswa[j+1].alamat, temp.alamat);
}
}
}
//data setelah urut
cout<<"\nData telah urut dari NIM"<<endl;
cout<<"\n ------------------------------------------------------------------------\n";
gotoxy(1,wherey());cout<<" |";
gotoxy(4,wherey());cout<<"NO";
gotoxy(7,wherey());cout<<"|";
gotoxy(13,wherey());cout<<"NIM";
gotoxy(20,wherey());cout<<"|";
gotoxy(31,wherey());cout<<"NAMA";
gotoxy(45,wherey());cout<<"|";
gotoxy(51,wherey());cout<<"IPK";
gotoxy(59,wherey());cout<<"|";
gotoxy(64,wherey());cout<<"ALAMAT";
gotoxy(73,wherey());cout<<"|";
cout<<"\n ------------------------------------------------------------------------";
for(int c=0; c<BykMhs; c++)
{
gotoxy(wherex(),yy++);{
gotoxy(1,yy);cout<<" |",
gotoxy(7,yy);cout<<"|",
gotoxy(20,yy);cout<<"|",
gotoxy(45,yy);cout<<"|",
gotoxy(59,yy);cout<<"|",
gotoxy(73,yy);cout<<"|";
gotoxy(4,yy);cout<<no1++,
gotoxy(9,yy),cout<<mahasiswa[c].nim,
gotoxy(22,yy),cout<<mahasiswa[c].nama,
gotoxy(50,yy),cout<<mahasiswa[c].ipk,
gotoxy(61,yy),cout<<mahasiswa[c].alamat;}
}
cout<<"\n ------------------------------------------------------------------------\n";
getch();
goto out;
}else if(menu==2)
{
clrscr();
int noo=1;
//sorting (buble sort) berdasarkan nilai akhir
for(i=0; i<BykMhs-1; i++)
{
for(j=0; j<BykMhs-1-i; j++)
{
if(mahasiswa[j].ipk>mahasiswa[j+1].ipk)
{
//tukar nim
temp.nim=mahasiswa[j].nim;
mahasiswa[j].nim=mahasiswa[j+1].nim;
mahasiswa[j+1].nim=temp.nim;
//tukar nama
strcpy(temp.nama, mahasiswa[j].nama);
strcpy(mahasiswa[j].nama, mahasiswa[j+1].nama);
strcpy(mahasiswa[j+1].nama, temp.nama);
//tukar IPK
temp.ipk=mahasiswa[j].ipk;
mahasiswa[j].ipk=mahasiswa[j+1].ipk;
mahasiswa[j+1].ipk=temp.ipk;
//tukar alamat
strcpy(temp.alamat, mahasiswa[j].alamat);
strcpy(mahasiswa[j].alamat, mahasiswa[j+1].alamat);
strcpy(mahasiswa[j+1].alamat, temp.alamat);
}
}
}
//data setelah urut
cout<<"\nData telah urut dari IPK"<<endl;
cout<<"\n ------------------------------------------------------------------------\n";
gotoxy(1,wherey());cout<<" |";
gotoxy(4,wherey());cout<<"NO";
gotoxy(7,wherey());cout<<"|";
gotoxy(13,wherey());cout<<"NIM";
gotoxy(20,wherey());cout<<"|";
gotoxy(31,wherey());cout<<"NAMA";
gotoxy(45,wherey());cout<<"|";
gotoxy(51,wherey());cout<<"IPK";
gotoxy(59,wherey());cout<<"|";
gotoxy(64,wherey());cout<<"ALAMAT";
gotoxy(73,wherey());cout<<"|";
cout<<"\n ------------------------------------------------------------------------\n";
for(int c=0; c<BykMhs; c++)
{
gotoxy(wherex(),yy++);{
gotoxy(1,yy);cout<<" |",
gotoxy(7,yy);cout<<"|",
gotoxy(20,yy);cout<<"|",
gotoxy(45,yy);cout<<"|",
gotoxy(59,yy);cout<<"|",
gotoxy(73,yy);cout<<"|";
gotoxy(4,yy);cout<<noo++,
gotoxy(9,yy),cout<<mahasiswa[c].nim,
gotoxy(22,yy),cout<<mahasiswa[c].nama,
gotoxy(50,yy),cout<<mahasiswa[c].ipk,
gotoxy(61,yy),cout<<mahasiswa[c].alamat;}
}
cout<<"\n ------------------------------------------------------------------------\n";
getch();
goto out;
}
else if(menu==3)
{goto akhir;
}
else
{
cout<<"Menu yang anda masukkan tidak valid"<<endl;
getch();
}
akhir:
}
dan ini link youtube programnya
https://www.youtube.com/watch?v=_6LDwhDLF9c&feature=youtu.be
Komentar
Posting Komentar