Advertisement
BSIT_21

Linked List (Adlaon/Amalin)

Jul 30th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. struct Node
  7. {
  8.     string name;
  9.     int grade;
  10.     Node *next;
  11. };
  12.  
  13. void append(Node **head_ref, string new_name, int new_grade);
  14. void equalGrade(Node *node, int grade);
  15. void greaterThanGrade(Node *node, int grade);
  16. void lessThanGrade(Node *node, int grade);
  17. void printList(Node *node);
  18.  
  19. int main()
  20. {
  21.     Node *head = NULL;
  22.     string name = " ";
  23.     int grade = 0;
  24.     bool valid = false;
  25.     char entry = ' ';
  26.     bool quit = false;
  27.     char choice = ' ';
  28.     int gradeCheck = 0;
  29.    
  30.     while(!quit)
  31.     {
  32.         cout << "Enter name: ";
  33.         getline(cin, name);
  34.        
  35.         valid = false;
  36.         while(!valid)
  37.         {
  38.             cout << "Enter grade: ";
  39.             cin >> grade;
  40.             if(cin.good() && grade > 0) valid = true;
  41.             else
  42.             {
  43.                 cout << "Invalid grade!" << endl;
  44.                 cin.clear();
  45.                 cin.ignore();
  46.             }
  47.         }
  48.         append(&head, name, grade);
  49.        
  50.         valid = false;
  51.         while(!valid)
  52.         {
  53.             cout << "Another entry(Y/N)? ";
  54.             cin >> entry;
  55.             if(toupper(entry) == 'N')
  56.             {
  57.                 valid = true;
  58.                 quit = true;
  59.             }
  60.             else if (toupper(entry) == 'Y')
  61.             {
  62.                 valid = true;
  63.                 cin.clear();
  64.                 cin.ignore();  
  65.             }
  66.             else
  67.             {
  68.                 cin.clear();
  69.                 cin.ignore();
  70.             }
  71.             cout << "\n";
  72.         }
  73.     }
  74.    
  75.     while(true)
  76.     {
  77.         cout << "Criteria for displaying the list:\n";
  78.         cout << "A. Grade =\n";
  79.         cout << "B. Grade >\n";
  80.         cout << "C. Grade <\n";
  81.         cout << "D. All\n";
  82.        
  83.         valid = false;
  84.         while(!valid)
  85.         {
  86.             cout << "Enter choice(A-D): ";
  87.             cin >> choice;
  88.            
  89.             if(toupper(choice) == 'A' || toupper(choice) == 'B' || toupper(choice) == 'C')
  90.             {
  91.                 valid = false;
  92.                 while(!valid)
  93.                 {
  94.                     cout << "Enter grade: ";
  95.                     cin >> gradeCheck;
  96.                     if(cin.good() && gradeCheck > 0)
  97.                     {
  98.                         cout << "\n";
  99.                         valid = true;
  100.                     }
  101.                     else
  102.                     {
  103.                         cout << "Invalid grade!" << endl;
  104.                         cin.clear();
  105.                         cin.ignore();
  106.                     }
  107.                 }
  108.             }
  109.             else if(toupper(choice) == 'D') valid = true;
  110.             else
  111.             {
  112.                 cin.clear();
  113.                 cin.ignore();
  114.             }
  115.         }
  116.        
  117.         switch(toupper(choice))
  118.         {
  119.             case 'A':
  120.                 equalGrade(head, gradeCheck);
  121.                 break;
  122.            
  123.             case 'B':
  124.                 greaterThanGrade(head, gradeCheck);
  125.                 break;
  126.                
  127.             case 'C':
  128.                 lessThanGrade(head, gradeCheck);
  129.                 break;
  130.                
  131.             case 'D':
  132.                 printList(head);
  133.                 break;
  134.                
  135.             default:
  136.                 cout << "Invalid input!\n";
  137.         }
  138.     }
  139.    
  140.     return 0;
  141. }
  142.  
  143. void append(Node **head_ref, string new_name, int new_grade)
  144. {
  145.     Node *new_node = new Node();
  146.     Node *last = *head_ref;
  147.    
  148.     new_node->name = new_name;
  149.     new_node->grade = new_grade;
  150.    
  151.     new_node->next = NULL;
  152.    
  153.     if(*head_ref == NULL)
  154.     {
  155.         *head_ref = new_node;
  156.         return;
  157.     }
  158.    
  159.     while(last->next != NULL) last = last->next;
  160.    
  161.     last->next = new_node;
  162.     return;
  163. }
  164.  
  165. void equalGrade(Node *node, int grade)
  166. {
  167.     while(node != NULL)
  168.     {
  169.         if(grade == node->grade)
  170.         {
  171.             cout << "Name: " << node->name << endl;
  172.             cout << "Grade: " << node->grade << endl;
  173.             cout << "\n";
  174.         }
  175.         node = node->next;
  176.     }
  177. }
  178.  
  179. void greaterThanGrade(Node *node, int grade)
  180. {
  181.     while(node != NULL)
  182.     {
  183.         if(grade < node->grade)
  184.         {
  185.             cout << "Name: " << node->name << endl;
  186.             cout << "Grade: " << node->grade << endl;
  187.             cout << "\n";
  188.         }
  189.         node = node->next;
  190.     }
  191. }
  192.  
  193. void lessThanGrade(Node *node, int grade)
  194. {
  195.     while(node != NULL)
  196.     {
  197.         if(grade > node->grade)
  198.         {
  199.             cout << "Name: " << node->name << endl;
  200.             cout << "Grade: " << node->grade << endl;
  201.             cout << "\n";
  202.         }
  203.         node = node->next;
  204.     }
  205. }
  206.  
  207. void printList(Node *node)
  208. {
  209.     while(node != NULL)
  210.     {
  211.         cout << "Name: " << node->name << endl;
  212.         cout << "Grade: " << node->grade << endl;
  213.         cout << "\n";
  214.         node = node->next;
  215.     }
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement