Advertisement
oke_google

DLLNC Bubble Sort ID and Name

May 8th, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.62 KB | None | 0 0
  1. void tukar_posisi_mobil(int posisi_1, int posisi_2){
  2.     //inisialisasi posisi pertama
  3.     mobil_posisi = mobil_depan;
  4.     if(posisi_1 == 1){
  5.         mobil_simpan = mobil_posisi;
  6.     }
  7.     else{
  8.         for(int x = 1; x<posisi_1; x++){
  9.             mobil_simpan = mobil_posisi;
  10.             mobil_posisi = mobil_posisi->next;
  11.         }
  12.     }
  13.  
  14.     mobil_tukar = mobil_posisi;
  15.  
  16.     temporary = new data_mobil;
  17.     temporary->next = mobil_posisi->next;
  18.     temporary->prev = mobil_posisi->prev;
  19.  
  20.     //inisialisasi Posisi kedua
  21.     mobil_posisi = mobil_depan;
  22.     if(posisi_2 == 1)
  23.         mobil_bantu = mobil_posisi;
  24.     else{
  25.         for(int x = 1; x<posisi_2; x++){
  26.             mobil_bantu = mobil_posisi;
  27.             mobil_posisi = mobil_posisi->next;
  28.         }
  29.     }
  30.  
  31.  
  32.     //penukaran
  33.     if(posisi_2 == posisi_1-1 || posisi_2 == posisi_1+1){
  34.         if(posisi_1 == 1){
  35.             mobil_simpan->next = mobil_posisi->next;
  36.             ((posisi_2 == banyak_mobil) ? mobil_belakang = mobil_simpan : mobil_posisi->next->prev = mobil_simpan);
  37.  
  38.             mobil_posisi->next = mobil_simpan;
  39.             mobil_simpan->prev = mobil_posisi;
  40.  
  41.             mobil_depan = mobil_posisi;
  42.         }
  43.         else if(posisi_2 == 1){
  44.             mobil_bantu->next = mobil_tukar->next;
  45.             ((posisi_1 == banyak_mobil) ? mobil_belakang = mobil_bantu : mobil_tukar->next->prev = mobil_bantu);
  46.  
  47.             mobil_tukar->next = mobil_bantu;
  48.             mobil_bantu->prev = mobil_tukar;
  49.  
  50.             mobil_depan = mobil_tukar;
  51.         }
  52.         else if(posisi_2 > posisi_1){
  53.             mobil_tukar->next = mobil_posisi->next;
  54.             ((posisi_2 == banyak_mobil) ? mobil_belakang = mobil_tukar : mobil_posisi->next->prev = mobil_tukar);
  55.  
  56.             mobil_posisi->next = mobil_tukar;
  57.             mobil_tukar->prev = mobil_posisi;
  58.  
  59.             mobil_simpan->next = mobil_posisi;
  60.             mobil_posisi->prev = mobil_simpan;
  61.         }
  62.         else{
  63.             mobil_posisi->next = mobil_tukar->next;
  64.             ((posisi_1 == banyak_mobil) ? mobil_belakang = mobil_posisi : mobil_tukar->next->prev = mobil_posisi);
  65.  
  66.             mobil_tukar->next = mobil_posisi;
  67.             mobil_posisi->prev = mobil_tukar;
  68.  
  69.             mobil_bantu->next = mobil_tukar;
  70.             mobil_tukar->next = mobil_bantu;
  71.         }
  72.     }
  73.  
  74.     else{
  75.         if(posisi_2 == 1){
  76.             mobil_tukar->next = mobil_bantu->next;
  77.             mobil_bantu->next->prev = mobil_tukar;
  78.             mobil_tukar->prev = NULL;
  79.  
  80.             mobil_depan = mobil_tukar;
  81.         }
  82.         if(posisi_1 == 1){
  83.             mobil_bantu->next = mobil_simpan;
  84.             mobil_simpan->prev = mobil_bantu;
  85.  
  86.             mobil_simpan->next = mobil_posisi->next;
  87.  
  88.             ((posisi_2 == banyak_mobil) ? mobil_belakang = mobil_simpan : mobil_posisi->next->prev = mobil_simpan);
  89.  
  90.             mobil_posisi->next = temporary->next;
  91.             mobil_posisi->prev = NULL;
  92.  
  93.             mobil_depan = mobil_posisi;
  94.         }
  95.         if(posisi_1 != 1){
  96.             mobil_tukar->next = mobil_posisi->next;
  97.             ((posisi_2 == banyak_mobil) ? mobil_belakang = mobil_tukar : mobil_posisi->next->prev = mobil_tukar);
  98.             mobil_bantu->next = mobil_tukar;
  99.             mobil_tukar->prev = mobil_bantu;
  100.  
  101.             mobil_posisi->next = temporary->next;
  102.             mobil_simpan->next = mobil_posisi;
  103.             mobil_posisi->prev = mobil_simpan;
  104.         }
  105.     }
  106. }
  107.  
  108. void bubble_sort_mobil_by_name(){
  109.     mobil_posisi = mobil_depan;
  110.     int i = 1, j, huruf1, huruf2;
  111.     int a = 0;
  112.  
  113.     while(mobil_posisi != NULL){
  114.         mobil_bantu = mobil_posisi->next;
  115.         j = i+1;
  116.         while(mobil_bantu != NULL){
  117.             if(mobil_posisi->nama_mobil[0] > mobil_bantu->nama_mobil[0]){
  118.                 tukar_posisi_mobil(i, j);
  119.             }
  120.             else if(mobil_posisi->nama_mobil[0] == mobil_bantu->nama_mobil[0]){
  121.                 int arr = 0;
  122.                 while(mobil_posisi->nama_mobil[arr] != '\0'){
  123.  
  124.                     huruf1 = int(mobil_posisi->nama_mobil[arr]);
  125.                     huruf2 = int(mobil_bantu->nama_mobil[arr]);
  126.  
  127.                     if(huruf1 < 97)
  128.                         huruf1 = huruf1 + 32;
  129.                     if(huruf2 < 97)
  130.                         huruf2 = huruf2 + 32;
  131.  
  132.                     if(huruf1 > huruf2){
  133.                         tukar_posisi_mobil(i, j);
  134.                         break;
  135.                     }
  136.  
  137.                     if(huruf1 < huruf2)
  138.                         break;
  139.                     arr++;
  140.                 }
  141.             }
  142.             j++;
  143.             mobil_bantu = mobil_bantu->next;
  144.         }
  145.         temporary = mobil_depan;
  146.         a++;
  147.         cout<<"\n\nLiterasi ke-"<<a<<" : ";
  148.         while(temporary != NULL){
  149.             cout<<temporary->nama_mobil<<" ";
  150.             temporary = temporary->next;
  151.         }
  152.         i++;
  153.         mobil_posisi = mobil_posisi->next;
  154.     }
  155. }
  156.  
  157. void bubble_sort_mobil_by_id(){
  158.     mobil_posisi = mobil_depan;
  159.     int i = 1, j;
  160.     int a = 0;
  161.     while(mobil_posisi != NULL){
  162.         mobil_bantu = mobil_posisi->next;
  163.         j = i+1;
  164.  
  165.         while(mobil_bantu != NULL){
  166.             if(mobil_posisi->id_mobil > mobil_bantu->id_mobil)
  167.                 tukar_posisi_mobil(i, j);
  168.             j++;
  169.             mobil_bantu = mobil_bantu->next;
  170.         }
  171.         temporary = mobil_depan;
  172.         a++;
  173.         cout<<"\n\nLiterasi ke-"<<a<<" : ";
  174.         while(temporary != NULL){
  175.             cout<<temporary->id_mobil<<" ";
  176.             temporary = temporary->next;
  177.         }
  178.         i++;
  179.         mobil_posisi = mobil_posisi->next;
  180.     }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement