Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct node
- {
- int info;
- node * next;
- };
- void setNull(node * & p)
- {
- p = NULL;
- }
- void createElem(node * & p, int y)
- {
- p = new node;
- p->info = y;
- p->next = NULL;
- }
- void addFirst(node * & head1, node * p)//добавление в начало
- {
- p->next = head1;
- head1 = p;
- }
- void createListFromFile(node * & head1, ifstream & f)
- {
- node * q;
- int x;
- setNull(head1);
- while (f >> x)
- {
- createElem(q, x);
- addFirst(head1, q);
- }
- }
- void setHead(node * head1, node * & p)
- {
- p = head1;
- }
- bool nodeIsNull(node * p)
- {
- return p == NULL;
- }
- void showNode(node * p)
- {
- cout << p->info << ' ';
- }
- void moove(node * & p)
- {
- p = p->next;
- }
- void showList(node * head)
- {
- node * q;
- setHead(head, q);
- while (!nodeIsNull(q))
- {
- showNode(q);
- moove(q);
- }
- cout << endl;
- }
- bool compInfo(node * p1, node * p2)
- {
- return p1->info == p2->info;
- }
- void Del(node * &q, node * &temp)
- {
- temp->next = q->next;
- }
- void K(node* &head1)
- {
- node * q1, *q2, *temp;
- setHead(head1, q1);
- if (!nodeIsNull(head1))
- if (!nodeIsNull(head1->next))
- {
- while (!nodeIsNull(q1->next))
- {
- q2 = q1->next;
- temp = q1;
- while (!nodeIsNull(q2))
- {
- if (compInfo(q1, q2))
- {
- Del(q2, temp);
- q2 = temp->next;
- }
- else
- {
- temp = q2;
- moove(q2);
- }
- }
- if (!nodeIsNull(q1->next))
- moove(q1);
- }
- }
- }
- node* taskA(node * head1, node * head2)
- {
- node * q1,* head3,*q3;
- setNull(head3);
- setHead(head1, q1);
- if (!nodeIsNull(q1))
- {
- while (!nodeIsNull(q1->next))
- {
- createElem(q3, q1->info);
- addFirst(head3, q3);
- moove(q1);
- }
- }
- setHead(head2, q1);
- while (!nodeIsNull(q1))
- {
- createElem(q3, q1->info);
- addFirst(head3, q3);
- moove(q1);
- }
- K(head3);
- return head3;
- }
- node* taskB(node * head1, node * head2)
- {
- node * q1, *q2,*p, *head3=new node;
- K(head1);
- K(head2);
- setHead(head1, q1);
- setNull(head3);
- while (!nodeIsNull(q1))
- {
- setHead(head2, q2);
- while (!nodeIsNull(q2) && !compInfo(q1, q2))
- moove(q2);
- if (!nodeIsNull(q2))
- {
- createElem(p, q2->info);
- addFirst(head3, p);
- }
- moove(q1);
- }
- return head3;
- }
- node* taskC(node * head1, node * head2)
- {
- node * q1, *q2, *p, *head3 = new node;
- K(head1);
- K(head2);
- setHead(head1, q1);
- setNull(head3);
- while (!nodeIsNull(q1))
- {
- setHead(head2, q2);
- while (!nodeIsNull(q2) && !compInfo(q1, q2))
- moove(q2);
- if (nodeIsNull(q2))
- {
- createElem(p, q1->info);
- addFirst(head3, p);
- }
- moove(q1);
- }
- return head3;
- }
- node* taskD(node * head1, node * head2)
- {
- node * q1, *q2, *p, *head3 = new node;
- K(head1);
- K(head2);
- setHead(head1, q1);
- setNull(head3);
- while (!nodeIsNull(q1))
- {
- setHead(head2, q2);
- while (!nodeIsNull(q2) && !compInfo(q1, q2))
- moove(q2);
- if (nodeIsNull(q2))
- {
- createElem(p, q1->info);
- addFirst(head3, p);
- }
- moove(q1);
- }
- setHead(head2, q2);
- while (!nodeIsNull(q2))
- {
- setHead(head1, q1);
- while (!nodeIsNull(q1) && !compInfo(q1, q2))
- moove(q1);
- if (nodeIsNull(q1))
- {
- createElem(p, q2->info);
- addFirst(head3, p);
- }
- moove(q2);
- }
- return head3;
- }
- int main()
- {
- ifstream f("Text.txt");
- node * head1;
- createListFromFile(head1, f);
- showList(head1);
- ifstream g("Text1.txt");
- node * head2;
- createListFromFile(head2, g);
- showList(head2);
- //showList(taskB(head1, head2));
- showList(taskD(head1, head2));
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment