Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct node
- {
- int data;
- node* next;
- };
- ////////////////////////////////////////////////
- bool empty_list(node* top)
- {
- return top == NULL;
- }
- //////////////////////////////////////////////
- void create_list(node*& top, int n)
- {
- int i;
- node* p;
- top = new node;
- top = NULL;
- for (i = 0; i < n; i++)
- {
- p = new node;
- cout << " enter p->data=";
- cin >> p->data;
- p->next = top;
- top = p;
- }
- }
- //////////////////////////////////////////////////
- void pop(node*& top, int& data) // get data from list
- {
- node* p;
- if (!empty_list(top))
- {
- data = top->data;
- p = top->next;
- delete top;
- top = p;
- }
- }
- //////////////////////////////////////////
- int pop1(node*& top) // get data from list
- {
- int data;
- node* p;
- if (top)
- {
- data = top->data;
- p = top->next;
- delete top;
- top = p;
- }
- return data;
- }
- /////////////////////////////////////////
- void push(node*& top, int data) // put data to list
- {
- node* p;
- p = new node;
- p->data = data;
- p->next = top;
- top = p;
- }
- //////////////////////////////////////////
- void create_list_push(node*& top, int n)
- {
- int i, data;
- top = NULL;
- for (i = 0; i < n; i++)
- {
- cout << " enter data=";
- cin >> data;
- push(top, data);
- }
- }
- /////////////////////////////////////////
- void show_list(node* top)
- {
- node* p;
- p = top;
- while (p)
- {
- cout << p->data << " ";
- p = p->next;
- }
- cout << endl;
- }
- //////////////////////////////////////////////
- node* previous(node* top, node* p) // pointer p define
- // task: find previous pointer
- {
- node* pr, * q;
- q = top;
- pr = NULL;
- while (q != p && q)
- {
- pr = q;
- q = q->next;
- }
- if (q == p) return pr;
- return NULL;
- }
- node* find_address(node* top, int x)
- {
- node* p;
- p = top;
- while (p && (p->data) != x)
- p = p->next;
- return p;
- }
- /////////////////////////////////////////////////
- void delete_element(node*& top, node* p)
- {
- node* r; int x;
- if (p == top)
- pop(top, x);
- else
- {
- r = previous(top, p);
- r->next = p->next;
- delete p;
- }
- }
- bool is_member(node* top, int data)
- {
- return find_address(top, data);
- }
- void copy_set(node* top1, node*& top2)
- {
- node* p = top1;
- top2 = NULL;
- while (p)
- {
- push(top2, p->data);
- p = p->next;
- }
- }
- void order_set(node* top)
- {
- int r;
- node* p = top;
- node* q;
- while (p->next)
- {
- q = p->next;
- while (q)
- {
- if ((p->data) > (q->data));
- r = p->data;
- p->data = q->data;
- q->data = r;
- q = q->next;
- p = p->next;
- }
- }
- }
- node* obeedinenie(node* top1, node*top2,node*& top3)
- {
- top3 = NULL;
- node* p = top2;
- while (p)
- {
- if (is_member(top1, p->data))
- push(top3, p->data);
- p = p->next;
- }
- return top3;
- }
- node* subtrection_sets(node* top1, node* top2)
- {
- node* top3 = NULL;
- node* p = top1;
- while (p)
- {
- if (!is_member(top2, p->data))
- push(top3, p->data);
- p = p->next;
- }
- return top3;
- }
- void create_set(node * top1, node * top2, node * &top3)
- {
- top3 = NULL;
- copy_set(top1, top3);
- node* p = top2;
- while (p)
- {
- if (!is_member(top3, p->data))
- {
- push(top3, p->data);
- p = p->next;
- }
- }
- }
- int main()
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement