193030

SAA VIII. Zadacha 3

Oct 27th, 2020
791
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Задача VIII.3:
  3.     Използвайки функцията Find от Задача VIII.2, да се разработи рекурсивна
  4.     процедура
  5.     void Print_Without_Dups(point P)
  6.     която извежда на екрана без повторения елементите на линеен
  7.     едносвързан списък P. Например списъкът <2, 4, 3, 2, 5, 6, 5, 1>, изведен на
  8.     екрана, трябва да изглежда <4, 3, 2, 6, 5, 1>.
  9. */
  10.  
  11. #include <iostream>
  12. #include <bits/stdc++.h>
  13.  
  14. struct Node
  15. {
  16.     int data;
  17.     struct Node* next;
  18. } *first = NULL, *last = NULL;
  19. using namespace std;
  20.  
  21. void addNumbers(int x)
  22. {
  23.     if(first == NULL)
  24.     {
  25.         first = new  Node;
  26.         first->data = x;
  27.         first->next = NULL;
  28.         last = first;
  29.     }
  30.     else
  31.     {
  32.         Node *t = new Node;
  33.         t->data = x;
  34.         t->next = NULL;
  35.         last->next = t;
  36.         last = t;
  37.     }
  38.  
  39. }
  40.  
  41.  
  42.  
  43. void displayList(struct Node *p) // recursive
  44. {
  45.     if(p)
  46.     {
  47.         cout << p->data << " ";
  48.         displayList(p->next);
  49.     }
  50.  
  51. }
  52.  
  53. bool Find(int x, struct  Node*p)
  54. {
  55.     if(p)
  56.     {
  57.         if(p->data == x)
  58.          return true;
  59.         else
  60.          Find(x,p->next);
  61.     }
  62.     else
  63.         return false;
  64.  
  65. }
  66.  
  67.  
  68. void Print_Without_Dups(struct Node* p)
  69. {
  70.     if(p)
  71.     {
  72.         auto res = Find(p->data, p->next);
  73.         if(res == false)
  74.         {
  75.  
  76.            cout << p->data << " ";
  77.         }
  78.         Print_Without_Dups(p->next);
  79.     }
  80. }
  81.  
  82.  
  83. int main()
  84. {
  85.     //2, 4, 3, 2, 5, 6, 5, 1
  86.     addNumbers(2);
  87.     addNumbers(4);
  88.     addNumbers(3);
  89.     addNumbers(2);
  90.     addNumbers(5);
  91.     addNumbers(6);
  92.     addNumbers(5);
  93.     addNumbers(1);
  94.     cout << endl;
  95.     int res = Find(7,first->next);
  96.     Print_Without_Dups(first);
  97.  
  98. }
  99.  
RAW Paste Data