Advertisement
ChaeYuriya

Week 5 : SLL.cpp

Nov 3rd, 2024
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.39 KB | None | 0 0
  1. #include <iostream>
  2. #include "SLL.h"
  3.  
  4. void createNewList(List &L){
  5.     first(L) = NULL;
  6. }
  7.  
  8. void insertLast(List &L, address p){
  9.     address x;
  10.  
  11.     if (first(L) == NULL){
  12.         first(L) = p;
  13.     } else {
  14.         x = first(L);
  15.         while (next(x) != NULL){
  16.             x = next(x);
  17.         }
  18.         next(x) = p;
  19.     }
  20.  
  21. }
  22.  
  23. void deleteFirst(List &L, address &p){
  24.     if (first(L) == NULL){
  25.         cout << "List masakan kosong" << endl;
  26.     } else {
  27.         if (next(first(L)) == NULL){
  28.             p = first(L);
  29.             first(L) = NULL;
  30.         } else {
  31.             p = first(L);
  32.             first(L) = next(p);
  33.         }
  34.     }
  35. }
  36.  
  37. void deleteLast(List &L, address &p){
  38.     if (first(L) == NULL){
  39.         cout << "List masakan kosong" << endl;
  40.     } else {
  41.         if (next(first(L)) == NULL){
  42.             p = first(L);
  43.             first(L) = NULL;
  44.         } else {
  45.             address q;
  46.             p = first(L);
  47.             while (next(p) != NULL){
  48.                 q = p;
  49.                 p = next(p);
  50.             }
  51.             next(q) = NULL;
  52.         }
  53.     }
  54. }
  55.  
  56. void deleteAfter(List &L, address prec, address &p){
  57.     p = next(prec);
  58.     if (next(p) == NULL){
  59.         next(prec) = NULL;
  60.     } else {
  61.         next(prec) = next(p);
  62.         next(p) = NULL;
  63.     }
  64. }
  65.  
  66. bool isEmpty(List L){
  67.     address check = first(L);
  68.     if(check != NULL){
  69.         return false;
  70.     }
  71.     return true;
  72. }
  73.  
  74.  
  75. infotype newMasakan(int no,string nama){
  76.     infotype data;
  77.     data.nomor = no;
  78.     data.nama = nama;
  79.     data.sisaPorsi = S;
  80.     return data;
  81. }
  82.  
  83. address newElementList(infotype X){
  84.     address P = new ElmtMsk;
  85.     info(P) = X;
  86.     next(P) = NULL;
  87.     return P;
  88. }
  89.  
  90. void addNelementList(List &L,int N){
  91.     for(int x = 0;x<N;x++){
  92.         int id;
  93.         string nama;
  94.         cout <<"Masukan ID  makanan ke-"<<x+1<<" : ";
  95.         cin >> id;
  96.         cout <<"Masukan nama makanan ke-"<<x+1<<" : ";
  97.         cin >> nama;
  98.         infotype makanan = newMasakan(id,nama);
  99.         insertLast(L,newElementList(makanan));
  100.     }
  101.     cout<<"Data berhasil ditambahkan"<<endl;
  102. }
  103.  
  104.  
  105. void showAllFood(List L){
  106.     address p = first(L);
  107.     if(p == NULL){
  108.         cout << "Daftar makanan kosong" << endl;
  109.     }
  110.     cout << "Daftar Makanan : " << endl;
  111.     while(p!= NULL){
  112.         cout << info(p).nomor << "|" << info(p).nama << "|" << info(p).sisaPorsi << endl;
  113.         p = next(p);
  114.     }
  115.     cout<<endl;
  116. }
  117.  
  118. void showAvailableFood(List L){
  119.     address p = first(L);
  120.     if(p == NULL){
  121.         cout << "Daftar makanan kosong" << endl;
  122.     }
  123.     cout << "Daftar Makanan yang tersedia : " << endl;
  124.     while(p!= NULL){
  125.         if(info(p).sisaPorsi < 0){
  126.             continue;
  127.         }
  128.         cout << info(p).nomor << "|" << info(p).nama << "|" << info(p).sisaPorsi << endl;
  129.         p = next(p);
  130.     }
  131.     cout<<endl;
  132. }
  133.  
  134.  
  135. address findMinRemaining(List L){
  136.     address p = first(L);
  137.     address currentVal = p;
  138.     int minData = info(p).sisaPorsi;
  139.     while(p!= NULL){
  140.         if(info(p).sisaPorsi < minData){
  141.             currentVal = p;
  142.             minData = info(currentVal).sisaPorsi;
  143.         }
  144.         p = next(p);
  145.     }
  146.     return currentVal;
  147. }
  148.  
  149.  
  150. void showBestSeller(List L){
  151.     address p = first(L);
  152.     if(p != NULL){
  153.         address currentBestSeller = findMinRemaining(L);
  154.         cout<<"Makanan Best Seller saat ini : " << info(currentBestSeller).nama << endl;
  155.     }else{
  156.         cout<<"Data Makanan kosong" << endl;
  157.     }
  158. }
  159.  
  160.  
  161. void deleteAllSoldOut(List &L){
  162.     address p = first(L);
  163.     if(p == NULL){
  164.         return;
  165.     }
  166.     address last;
  167.     while(p!= NULL){
  168.         if(info(p).sisaPorsi == 0){
  169.             if(last != NULL){
  170.                 address nextP = next(p);
  171.                 next(last) = nextP;
  172.                 p = nextP;
  173.             }else{
  174.                 address nextP = next(p);
  175.                 first(L) = nextP;
  176.                 p = nextP;
  177.             }
  178.         }else{
  179.             last = p;
  180.             p = next(p);
  181.         }
  182.     }
  183. }
  184.  
  185.  
  186. void transaction(List &L,int no,int porsi){
  187.     address p = first(L);
  188.     if(p == NULL){
  189.         return;
  190.     }
  191.  
  192.     while(p!= NULL){
  193.         if(info(p).nomor == no){
  194.             info(p).sisaPorsi -= porsi;
  195.             if(info(p).sisaPorsi < 0){
  196.                 info(p).sisaPorsi = 0;
  197.             }
  198.             return;
  199.         }
  200.         p = next(p);
  201.     }
  202. }
  203.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement