Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.79 KB | None | 0 0
  1. // Povezane liste.cpp : Povezane liste
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. struct Node
  10. {
  11.     int value; // vrijednost
  12.     Node *next; // pokazivač na sljedeći Node
  13. };
  14.  
  15. void insertElementFront(Node *&head, int value);
  16. void insertElementEnd(Node *&head, int value);
  17. void displayList(Node *temp);
  18. int listLength(Node *temp);
  19. void searchElement(Node *temp, int value);
  20. void deleteElement(Node *&head, int value);
  21. void deleteHead(Node *&head);
  22. void deleteTail(Node *&head);
  23.  
  24. int main()
  25. {
  26.     Node *head = nullptr;
  27.     Node *tail = nullptr;
  28.     int izbor;
  29.     do {
  30.         system("cls");
  31.         cout << "1. Unos na pocetak\n2. Unos na kraj\n3. Prikaz\n4. Duljina liste\n";
  32.         cout << "5. Pretraga elementa\n6. Brisanje glave\n7. Brisanje repa\n8. Brisanje elementa\n";
  33.         cout << "\nUnesite izbor: ";
  34.         cin >> izbor;
  35.  
  36.         switch (izbor) {
  37.             int broj;
  38.         case 1:
  39.             cout << "\nUnesite broj: ";
  40.             cin >> broj;
  41.             insertElementFront(head, broj);
  42.             break;
  43.         case 2:
  44.             cout << "\nUnesite broj: ";
  45.             cin >> broj;
  46.             insertElementEnd(head, broj);
  47.             break;
  48.         case 3:
  49.             displayList(head);
  50.             break;
  51.         case 4:
  52.             listLength(head);
  53.             break;
  54.         case 5:
  55.             cout << "\nUnesite broj: ";
  56.             cin >> broj;
  57.             searchElement(head, broj);
  58.             break;
  59.         case 6:
  60.             deleteHead(head);
  61.             break;
  62.         case 7:
  63.             deleteTail(head);
  64.             break;
  65.         case 8:
  66.             cout << "\nUnesite broj: ";
  67.             cin >> broj;
  68.             deleteElement(head, broj);
  69.             break;
  70.         case 0:
  71.             break;
  72.         default:
  73.             cout << "Niste unijeli dobar izbor! " << endl;
  74.             break;
  75.         }
  76.     } while (izbor != 0);
  77.  
  78.     system("PAUSE");
  79.     return 0;
  80. }
  81.  
  82. void insertElementFront(Node *&head, int value)
  83. {
  84.     Node *temp = new Node;
  85.     temp->value = value;
  86.     temp->next = head;
  87.     head = temp;
  88. }
  89.  
  90. void displayList(Node *temp)
  91. {
  92.     if(temp == NULL)
  93.     {
  94.         cout << "Lista je prazna!" << endl;
  95.     }
  96.     else
  97.     {
  98.         while (temp != nullptr)
  99.         {
  100.             cout << temp->value << "\t";
  101.             temp = temp->next;
  102.         }
  103.         cout << endl;
  104.     }
  105.    
  106. }
  107.  
  108. int listLength(Node *temp)
  109. {
  110.     int count = 0;
  111.     if (temp == NULL)
  112.     {
  113.         cout << "Lista je prazna!" << endl;
  114.         return 0;
  115.     }
  116.     else
  117.     {
  118.         while (temp != NULL)
  119.         {
  120.             count++;
  121.             temp = temp->next;
  122.         }
  123.         return count;
  124.     }
  125. }
  126.  
  127. void insertElementEnd(Node *&head, int value)
  128. {
  129.     Node *n = new Node;
  130.     n->value = value;
  131.     n->next = nullptr;
  132.  
  133.     Node *temp = head;
  134.  
  135.     if (temp == nullptr)
  136.     {
  137.         temp = n;
  138.         head = temp;
  139.     }
  140.     else
  141.     {
  142.         temp = head;
  143.         while (temp->next != NULL)
  144.         {
  145.             temp = temp->next;
  146.         }
  147.         temp->next = n;
  148.     }
  149.    
  150. }
  151.  
  152. void searchElement(Node *temp, int value)
  153. {
  154.     int found = 0;
  155.     if (temp->value == value)
  156.     {
  157.         cout << "value: " << temp->value << " na adresi: " << temp << endl;
  158.         found++;
  159.     }
  160.     while (temp->next != nullptr)
  161.     {
  162.         temp = temp->next;
  163.         if (temp->value == value)
  164.         {
  165.             cout << "value: " << temp->value << " na adresi: " << temp << endl;
  166.             found++;
  167.         }
  168.     }
  169.     if (found == 0)
  170.     {
  171.         cout << "Element nije pronaden!" << endl;
  172.     }
  173.     else
  174.     {
  175.         cout << "Pronađeno je " << found << " elemenata." << endl;
  176.     }
  177. }
  178.  
  179. void deleteHead(Node *&head)
  180. {
  181.     Node *temp = head;
  182.  
  183.     if (temp != 0)
  184.     {
  185.         head = temp->next;
  186.         delete temp;
  187.     }
  188. }
  189.  
  190. void deleteElement(Node *&head, int value) //napravi sutra ;)
  191. {
  192.     Node *temp = head;
  193.    
  194.     if (temp != 0 && temp->value == value)
  195.     {
  196.         head = temp->next;
  197.         delete temp;
  198.     }
  199.     else
  200.     {
  201.         Node *prev = nullptr;
  202.         while (temp->next != nullptr && temp->value != value)
  203.         {
  204.             prev = temp;
  205.             temp = temp->next;
  206.         }
  207.         prev->next = temp->next;
  208.        
  209.         delete temp;
  210.     }
  211. }
  212.  
  213. void deleteTail(Node *&head)
  214. {
  215.     Node *temp = head;
  216.     if (head->next == nullptr)
  217.     {
  218.         head = nullptr;
  219.         delete temp;
  220.     }
  221.     else
  222.     {
  223.         Node *prev = nullptr;
  224.         while (temp->next != nullptr)
  225.         {
  226.             prev = temp;
  227.             temp = temp->next;
  228.         }
  229.         prev->next = nullptr;
  230.         delete temp;
  231.     }
  232. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement