Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- #include <algorithm>
- using namespace std;
- struct mobil{
- int jumlah_antrian;//untuk kepala saja
- char nama[30];
- char plat[30];
- void print_info(){
- cout<<nama<<" \t "<<plat<<endl;
- };
- mobil *next;
- };
- mobil *kepala, *ekor;
- void buat_queue(){
- kepala = new mobil();
- kepala->jumlah_antrian = 0;
- }
- bool queueIsEMpety(){
- return (kepala->jumlah_antrian == 0);
- };
- void enque(mobil *data){
- if(queueIsEMpety()){
- kepala -> next = ekor = data;
- }else{
- ekor->next = data;
- ekor = data;
- }
- kepala->jumlah_antrian++;
- }
- mobil * deque(){
- mobil *hasil = kepala;
- kepala = kepala->next;
- kepala->jumlah_antrian--;
- return hasil;
- }
- void baca(){
- mobil *bantu = kepala ->next;
- int i = 0;
- while(bantu != NULL){
- cout<< ++i << ". ";bantu->print_info();
- bantu = bantu->next;
- }
- }
- void sorting(){
- //create copy of data;
- int jumlahData = kepala->jumlah_antrian;
- mobil *data[jumlahData];
- mobil *bantu = kepala;
- for(int i = 0; i<jumlahData; i++ ){
- data[i] = bantu->next;
- bantu = bantu->next;
- }
- // sort with bubble sort
- for(int i = 0 ; i< jumlahData; i++){
- for(int j = 0 ; j < jumlahData -1 ; j++){
- if(strcmp(data[j]->nama,data[j+1]->nama)> 0 )
- swap(data[j],data[j+1]);
- }
- }
- //print
- for(int i = 0; i<jumlahData; i++ ){
- cout<< i +1 <<". ";data[i]->print_info();
- }
- }
- void cari(char target[30]){
- mobil *bantu = kepala;
- bool found;
- while((bantu= bantu->next) != NULL)
- if(strcmp(target,bantu->nama)==0){
- found = true;
- break;
- }
- if(found)
- bantu->print_info();
- else
- cout<<target<<" tidak ada dalam antrian"<<endl;
- }
- void input(){
- int num;
- mobil *tmp = new mobil();
- cout<<"Nama mobil : ";cin>>tmp->nama;
- cout<<"Nomor plat : ";cin>>tmp->plat;
- enque(tmp);
- }
- int main(){
- buat_queue();
- int menu;
- char yn = 'y';
- do{
- cout<<"Menu"<<endl;
- cout<<"1. Input antrian Mobil "<<endl;
- cout<<"2. Layani antrian pertama "<<endl;
- cout<<"3. Lihat Antrian "<<endl;
- cout<<"4. Cari antrian (nama mobil) "<<endl;
- cout<<"5. sorting (mobil ascending)"<<endl;
- cout<<"Masukan pilihan : ";cin>>menu;
- switch(menu){
- case 1 :
- input();
- cout<<"kembali ke menu utama ? <y/n>";cin>>yn;
- break;
- case 2 :
- cout<<"sukses layani antrian pertama! "<<endl;
- deque()->print_info();
- cout<<"kembali ke menu utama ? <y/n>";cin>>yn;
- break;
- case 3:
- if(!queueIsEMpety()) baca(); else cout<<"antrian masih kosong "<<endl;
- cout<<"kembali ke menu utama ? <y/n>";cin>>yn;
- break;
- case 4:
- char nama[30];
- cout<<"masukan nama mobil yang dicari :";cin>>nama;
- cari(nama);
- cout<<"kembali ke menu utama ? <y/n>";cin>>yn;
- break;
- case 5:
- sorting();
- cout<<"kembali ke menu utama ? <y/n>";cin>>yn;
- break;
- }
- }while(yn == 'y');
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement