Advertisement
Hilmyhim

Searching and sorting with linked list

Jun 4th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. struct data_barang {
  7.     int harga;
  8.     string namabarang;
  9.     string kode;
  10. };
  11. struct node {
  12.     int index,Urutan;
  13.     data_barang data;
  14.     node *next;
  15. };
  16.  
  17. node *baru,*awal=NULL,*akhir=NULL,*bantu,*bantu2;
  18.  
  19. int indeks=-1;
  20.  
  21. void buatNode(int Urutan,string namabarang,int harga,string kode){
  22.     indeks++;
  23.     baru = new node;
  24.     baru->next = NULL;
  25.     baru->index = indeks;
  26.     baru->Urutan = Urutan;
  27.     baru->data.namabarang = namabarang;
  28.     baru->data.harga = harga;
  29.     baru->data.kode = kode;
  30.  
  31.     if(awal==NULL){
  32.         awal=akhir=baru;
  33.     }else{
  34.         akhir->next = baru;
  35.         akhir=baru;
  36.     }
  37. }
  38.  
  39. void tambahData(){
  40.    int Urutan,harga;
  41.    string namabarang,kode;
  42.  
  43.     cout<<"--------------INVENTARIS TOKO ELEKTRONIK---------------"<<endl;
  44.     cout<<"Urutan       \t\t: "; cin>>Urutan;
  45.     cout<<"Nama Barang  \t\t: "; cin>>namabarang;
  46.     cout<<"Harga        \t\t: "; cin>>harga;
  47.     cout<<"Kode         \t\t: "; cin>>kode;
  48.     buatNode(Urutan,namabarang,harga,kode);
  49. }
  50.  
  51. void view(){
  52.     if(indeks!=-1){
  53.         bantu = awal;
  54.         for(int i=0;i<=indeks;i++){
  55.             cout << "DATA INVENTARIS TOKO : " << endl;
  56.             cout<<"Urutan       \t\t: "<<bantu->Urutan<<endl;
  57.             cout<<"Nama Barang  \t\t: "<<bantu->data.namabarang<<endl;
  58.             cout<<"Harga        \t\t: "<<bantu->data.harga<<endl;
  59.             cout<<"Kode         \t\t: "<<bantu->data.kode<<endl;
  60.             bantu=bantu->next;
  61.         }
  62.     }
  63. }
  64.  
  65. void view(int cari)
  66. {
  67.       if(indeks!=-1){
  68.         bantu = awal;
  69.         for(int i=0;i<=indeks;i++){
  70.                 if(cari == bantu->Urutan)
  71.                 {
  72.                     cout << "DATA INVENTARIS TOKO : " << endl;
  73.                     cout<<"Urutan       \t\t: "<<bantu->Urutan<<endl;
  74.                     cout<<"Nama Barang  \t\t: "<<bantu->data.namabarang<<endl;
  75.                     cout<<"Harga        \t\t: "<<bantu->data.harga<<endl;
  76.                     cout<<"Kode         \t\t: "<<bantu->data.kode<<endl;
  77.                 }
  78.             bantu=bantu->next;
  79.         }
  80.          system("pause");
  81.     }
  82.  
  83. }
  84.  
  85. void urutkanMenaik(){
  86.     node *tmp;
  87.     bantu = awal;
  88.     for(int i=0;i<indeks;i++){
  89.         bantu=bantu2=awal;
  90.         while(bantu->next!=NULL){
  91.             if(bantu->Urutan > bantu->next->Urutan){
  92.                 tmp = bantu->next;
  93.                 bantu->next = bantu->next->next;
  94.                 tmp->next = bantu;
  95.                 if(bantu==awal){
  96.                     awal=bantu2=tmp;
  97.                 }else{
  98.                     bantu2->next=tmp;
  99.                 }
  100.                 bantu=tmp;
  101.             }
  102.             bantu2 = bantu;
  103.             bantu = bantu->next;
  104.         }
  105.     }
  106. }
  107. node *cariTengah(node *awalNode,node *akhirNode){
  108.     if(awalNode == NULL){
  109.         return NULL;
  110.     }
  111.  
  112.     node *sekarang = awalNode;
  113.     node *depan = awalNode->next;
  114.  
  115.     while(depan!=akhirNode){
  116.         depan = depan->next;
  117.         if(depan!=akhirNode){
  118.             sekarang = sekarang->next;
  119.             depan = depan->next;
  120.         }
  121.     }
  122.     return sekarang;
  123. }
  124. bool cekUrutMenaik(){
  125.     if(indeks == -1 || indeks == 0){
  126.         return true;
  127.     }
  128.  
  129.     bantu = awal;
  130.     for(int i=0;i<indeks;i++){
  131.         if(bantu->Urutan> bantu->next->Urutan ){
  132.             return false;
  133.         }
  134.         bantu=bantu->next;
  135.     }
  136.     return true;
  137. }
  138.  
  139.  
  140. void cari(){
  141.         bantu = awal;
  142.         bantu2 = NULL;
  143.         int carikode;
  144.         cout << "Masukkan Urutan yang mau di cari : ";
  145.         cin >> carikode;
  146.         view(carikode);
  147. }
  148.  
  149.  
  150.     int main()
  151. {
  152.     int menu;
  153.     do{
  154.         system("cls");
  155.         view();
  156.         cout << "---------------------INVENTARIS TOKO ELEKTRONIK----------------------" <<endl;
  157.         cout << "Menu : " << endl;
  158.         cout << "1. Inputkan data" << endl;
  159.         cout << "2. Mengurutkan " << endl;
  160.         cout << "3. Pencarian" << endl;
  161.         cout << "4. Keluar" << endl;
  162.         cout << "Masukkan menu :";
  163.         cin >> menu;
  164.  
  165.         if(menu == 1){
  166.             tambahData();
  167.         }else if(menu == 2){
  168.             urutkanMenaik();
  169.         }else if(menu == 3){
  170.             cari();
  171.         }
  172.  
  173.     }while(menu !=4);
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement