Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void tukar_posisi_mobil(int posisi_1, int posisi_2){
- //inisialisasi posisi pertama
- mobil_posisi = mobil_depan;
- if(posisi_1 == 1){
- mobil_simpan = mobil_posisi;
- }
- else{
- for(int x = 1; x<posisi_1; x++){
- mobil_simpan = mobil_posisi;
- mobil_posisi = mobil_posisi->next;
- }
- }
- mobil_tukar = mobil_posisi;
- temporary = new data_mobil;
- temporary->next = mobil_posisi->next;
- temporary->prev = mobil_posisi->prev;
- //inisialisasi Posisi kedua
- mobil_posisi = mobil_depan;
- if(posisi_2 == 1)
- mobil_bantu = mobil_posisi;
- else{
- for(int x = 1; x<posisi_2; x++){
- mobil_bantu = mobil_posisi;
- mobil_posisi = mobil_posisi->next;
- }
- }
- //penukaran
- if(posisi_2 == posisi_1-1 || posisi_2 == posisi_1+1){
- if(posisi_1 == 1){
- mobil_simpan->next = mobil_posisi->next;
- ((posisi_2 == banyak_mobil) ? mobil_belakang = mobil_simpan : mobil_posisi->next->prev = mobil_simpan);
- mobil_posisi->next = mobil_simpan;
- mobil_simpan->prev = mobil_posisi;
- mobil_depan = mobil_posisi;
- }
- else if(posisi_2 == 1){
- mobil_bantu->next = mobil_tukar->next;
- ((posisi_1 == banyak_mobil) ? mobil_belakang = mobil_bantu : mobil_tukar->next->prev = mobil_bantu);
- mobil_tukar->next = mobil_bantu;
- mobil_bantu->prev = mobil_tukar;
- mobil_depan = mobil_tukar;
- }
- else if(posisi_2 > posisi_1){
- mobil_tukar->next = mobil_posisi->next;
- ((posisi_2 == banyak_mobil) ? mobil_belakang = mobil_tukar : mobil_posisi->next->prev = mobil_tukar);
- mobil_posisi->next = mobil_tukar;
- mobil_tukar->prev = mobil_posisi;
- mobil_simpan->next = mobil_posisi;
- mobil_posisi->prev = mobil_simpan;
- }
- else{
- mobil_posisi->next = mobil_tukar->next;
- ((posisi_1 == banyak_mobil) ? mobil_belakang = mobil_posisi : mobil_tukar->next->prev = mobil_posisi);
- mobil_tukar->next = mobil_posisi;
- mobil_posisi->prev = mobil_tukar;
- mobil_bantu->next = mobil_tukar;
- mobil_tukar->next = mobil_bantu;
- }
- }
- else{
- if(posisi_2 == 1){
- mobil_tukar->next = mobil_bantu->next;
- mobil_bantu->next->prev = mobil_tukar;
- mobil_tukar->prev = NULL;
- mobil_depan = mobil_tukar;
- }
- if(posisi_1 == 1){
- mobil_bantu->next = mobil_simpan;
- mobil_simpan->prev = mobil_bantu;
- mobil_simpan->next = mobil_posisi->next;
- ((posisi_2 == banyak_mobil) ? mobil_belakang = mobil_simpan : mobil_posisi->next->prev = mobil_simpan);
- mobil_posisi->next = temporary->next;
- mobil_posisi->prev = NULL;
- mobil_depan = mobil_posisi;
- }
- if(posisi_1 != 1){
- mobil_tukar->next = mobil_posisi->next;
- ((posisi_2 == banyak_mobil) ? mobil_belakang = mobil_tukar : mobil_posisi->next->prev = mobil_tukar);
- mobil_bantu->next = mobil_tukar;
- mobil_tukar->prev = mobil_bantu;
- mobil_posisi->next = temporary->next;
- mobil_simpan->next = mobil_posisi;
- mobil_posisi->prev = mobil_simpan;
- }
- }
- }
- void bubble_sort_mobil_by_name(){
- mobil_posisi = mobil_depan;
- int i = 1, j, huruf1, huruf2;
- int a = 0;
- while(mobil_posisi != NULL){
- mobil_bantu = mobil_posisi->next;
- j = i+1;
- while(mobil_bantu != NULL){
- if(mobil_posisi->nama_mobil[0] > mobil_bantu->nama_mobil[0]){
- tukar_posisi_mobil(i, j);
- }
- else if(mobil_posisi->nama_mobil[0] == mobil_bantu->nama_mobil[0]){
- int arr = 0;
- while(mobil_posisi->nama_mobil[arr] != '\0'){
- huruf1 = int(mobil_posisi->nama_mobil[arr]);
- huruf2 = int(mobil_bantu->nama_mobil[arr]);
- if(huruf1 < 97)
- huruf1 = huruf1 + 32;
- if(huruf2 < 97)
- huruf2 = huruf2 + 32;
- if(huruf1 > huruf2){
- tukar_posisi_mobil(i, j);
- break;
- }
- if(huruf1 < huruf2)
- break;
- arr++;
- }
- }
- j++;
- mobil_bantu = mobil_bantu->next;
- }
- temporary = mobil_depan;
- a++;
- cout<<"\n\nLiterasi ke-"<<a<<" : ";
- while(temporary != NULL){
- cout<<temporary->nama_mobil<<" ";
- temporary = temporary->next;
- }
- i++;
- mobil_posisi = mobil_posisi->next;
- }
- }
- void bubble_sort_mobil_by_id(){
- mobil_posisi = mobil_depan;
- int i = 1, j;
- int a = 0;
- while(mobil_posisi != NULL){
- mobil_bantu = mobil_posisi->next;
- j = i+1;
- while(mobil_bantu != NULL){
- if(mobil_posisi->id_mobil > mobil_bantu->id_mobil)
- tukar_posisi_mobil(i, j);
- j++;
- mobil_bantu = mobil_bantu->next;
- }
- temporary = mobil_depan;
- a++;
- cout<<"\n\nLiterasi ke-"<<a<<" : ";
- while(temporary != NULL){
- cout<<temporary->id_mobil<<" ";
- temporary = temporary->next;
- }
- i++;
- mobil_posisi = mobil_posisi->next;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement