Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Задача VIII.3:
- Използвайки функцията Find от Задача VIII.2, да се разработи рекурсивна
- процедура
- void Print_Without_Dups(point P)
- която извежда на екрана без повторения елементите на линеен
- едносвързан списък P. Например списъкът <2, 4, 3, 2, 5, 6, 5, 1>, изведен на
- екрана, трябва да изглежда <4, 3, 2, 6, 5, 1>.
- */
- #include <iostream>
- #include <bits/stdc++.h>
- struct Node
- {
- int data;
- struct Node* next;
- } *first = NULL, *last = NULL;
- using namespace std;
- void addNumbers(int x)
- {
- if(first == NULL)
- {
- first = new Node;
- first->data = x;
- first->next = NULL;
- last = first;
- }
- else
- {
- Node *t = new Node;
- t->data = x;
- t->next = NULL;
- last->next = t;
- last = t;
- }
- }
- void displayList(struct Node *p) // recursive
- {
- if(p)
- {
- cout << p->data << " ";
- displayList(p->next);
- }
- }
- bool Find(int x, struct Node*p)
- {
- if(p)
- {
- if(p->data == x)
- return true;
- else
- Find(x,p->next);
- }
- else
- return false;
- }
- void Print_Without_Dups(struct Node* p)
- {
- if(p)
- {
- auto res = Find(p->data, p->next);
- if(res == false)
- {
- cout << p->data << " ";
- }
- Print_Without_Dups(p->next);
- }
- }
- int main()
- {
- //2, 4, 3, 2, 5, 6, 5, 1
- addNumbers(2);
- addNumbers(4);
- addNumbers(3);
- addNumbers(2);
- addNumbers(5);
- addNumbers(6);
- addNumbers(5);
- addNumbers(1);
- cout << endl;
- int res = Find(7,first->next);
- Print_Without_Dups(first);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement