Advertisement
Wan_ich1

linked list

May 14th, 2019
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. struct merk
  7. {
  8.     string namaMerk;
  9.     int stock;
  10. };
  11.  
  12. struct data
  13. {
  14.     string namaBarang;
  15.     string deskripsiBarang;
  16.     int harga;
  17.     merk merkBarang;
  18.     data *next;
  19.     data *prev;
  20. };
  21.  
  22. data *bantu,*bantu1,*baru,*awal=NULL,*akhir=NULL;
  23. int total=0;
  24. int input;
  25.  
  26. void inputData();
  27. void showData();
  28. void deleteData();
  29.  
  30. int main()
  31. {
  32.     char prompt;
  33.     int pil;
  34.  
  35.  
  36.     do
  37.     {
  38.         system("cls");
  39.         cout << "Total data = " << total << endl;
  40.         cout << "\nPilihan!!!" << endl;
  41.         cout << "1. Input data" << endl;
  42.         cout << "2. show data" << endl;
  43.         cout << "3. Delete data" << endl;
  44.         cout << "4. Done" << endl;
  45.  
  46.         cout << "\n\nMasukkan pilihan = ";
  47.         cin >> pil;
  48.  
  49.         switch(pil)
  50.         {
  51.         case 1:
  52.             {
  53.                 do
  54.                 {
  55.                     inputData();
  56.                     cout << "ingin input lagi? (y/n)";
  57.                     cin >> prompt;
  58.                 }while (prompt=='y');
  59.                 system("pause");
  60.                 break;
  61.             }
  62.         case 2:
  63.             {
  64.                 showData();
  65.                 system("pause");
  66.                 break;
  67.             }
  68.         case 3:
  69.             {
  70.                 deleteData();
  71.                 system("pause");
  72.                 break;
  73.             }
  74.         }
  75.     }while (pil<4);
  76.  
  77.     return 0;
  78. }
  79.  
  80. void inputData()
  81. {
  82.     baru=new data;
  83.     cout << "\nMasukkan nama barang = ";
  84.     cin >> baru->namaBarang;
  85.     cout << "Masukkan deskripsi barang = ";
  86.     cin >> baru->deskripsiBarang;
  87.     cout << "Masukkan merk barang = ";
  88.     cin >> baru->merkBarang.namaMerk;
  89.     cout << "Masukkan jumlah barang yang tersedia = ";
  90.     cin >> baru->merkBarang.stock;
  91.     cout << "Masukkan harga barang = ";
  92.     cin >> baru->harga;
  93.     baru->next=baru->prev=NULL;
  94.  
  95.     cout << "Tambahkan pada data index ke = ";
  96.     cin >> input;
  97.  
  98.     if (awal==NULL)
  99.     {
  100.         awal=akhir=baru;
  101.     }
  102.     else
  103.     {
  104.         if (input<=0)
  105.         {
  106.             baru->next=awal;
  107.             awal->prev=baru;
  108.             awal=baru;
  109.         }
  110.         else if(input>=total)
  111.         {
  112.             akhir->next=baru;
  113.             baru->prev=akhir;
  114.             akhir=baru;
  115.         }
  116.         else
  117.         {
  118.             bantu=awal;
  119.             for(int i=0;i<input-1;i++)
  120.             {
  121.                 bantu=bantu->next;
  122.             }
  123.             baru->next=bantu->next;
  124.             bantu->next->prev=baru;
  125.             baru->prev=bantu;
  126.             bantu->next=baru;
  127.         }
  128.     }
  129.     total++;
  130. }
  131.  
  132. void showData()
  133. {
  134.     baru=awal;
  135.     while(baru!=NULL)
  136.     {
  137.         cout << "\nNama barang = " << baru->namaBarang;
  138.         cout << "\nDeskripsi barang = " << baru->deskripsiBarang;
  139.         cout << "\nMerk barang = " << baru->merkBarang.namaMerk;
  140.         cout << "\nJumlah barang yang tersedia = " << baru->merkBarang.stock;
  141.         cout << "\nHarga barang = " << baru->harga << endl;
  142.         cout << endl;
  143.         baru=baru->next;
  144.     }
  145. }
  146.  
  147. void deleteData()
  148. {
  149.         if (total>0)
  150.         {
  151.             if (awal==akhir || total==1)
  152.             {
  153.                 delete awal;
  154.                 awal=akhir=NULL;
  155.             }
  156.             else
  157.             {
  158.                 cout << "\nHapus index ke = ";
  159.                 cin >> input;
  160.  
  161.                 if (input<=1)
  162.                 {
  163.                     bantu=awal->next;
  164.                     bantu->prev=NULL;
  165.                     delete awal;
  166.                     awal=bantu;
  167.                 }
  168.                 else if(total>=total-1)
  169.                 {
  170.                     bantu=akhir->prev;
  171.                     bantu->next=NULL;
  172.                     delete akhir;
  173.                     akhir=bantu;
  174.                 }
  175.                 else
  176.                 {
  177.                     bantu=awal;
  178.                     for(int i=0;i<input-1;++i)
  179.                     {
  180.                         bantu=bantu->next;
  181.                     }
  182.                     bantu1=bantu->next->next;
  183.                     delete bantu->next;
  184.                     bantu->next=bantu1;
  185.                     bantu1->prev=bantu;
  186.                 }
  187.             }
  188.             cout << "\nData telah di hapus" << endl;
  189.             total--;
  190.         }
  191.         else
  192.         {
  193.             cerr << "\nMaaf data masih kosong!!" << endl;;
  194.         }
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement