Advertisement
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 listIsEmpty(node * head1)
- {
- return head1 == NULL;
- }
- bool compInfo(node * p1, node * p2)
- {
- return p1->info == p2->info;
- }
- node* taskA(node * &head1, node * &head2)
- {
- node * q1, *q2, *head3= new node,*q3,*temp;
- setHead(head1, q1);
- setHead(head2, q2);
- if (!nodeIsNull(head1) && !nodeIsNull(head2))
- {
- if (q1->info > q2->info)//
- {
- head3->info = q2->info;
- moove(q2);
- }
- else
- {
- head3->info = q1->info;
- moove(q1);
- }
- setHead(head3, q3);
- setHead(head3, temp);
- while (!nodeIsNull(q1) && !nodeIsNull(q2))
- {
- while (!nodeIsNull(q2) && q1->info > q2->info)
- {
- temp = q3;
- createElem(q3, q2->info);
- temp->next = q3;
- moove(q2);
- }
- while (!nodeIsNull(q1) && q1->info <= q2->info)
- {
- temp = q3;
- createElem(q3, q1->info);
- temp->next = q3;
- moove(q1);
- }
- }
- while (!nodeIsNull(q1))//дозаписываем
- {
- temp = q3;
- createElem(q3, q1->info);
- temp->next = q3;
- moove(q1);
- }
- while (!nodeIsNull(q2))//дозаписываем
- {
- temp = q3;
- createElem(q3, q2->info);
- temp->next = q3;
- moove(q2);
- }
- return head3;
- }
- else
- {
- if (!nodeIsNull(head1))
- return head1;
- else if (!nodeIsNull(head2))
- return head2;
- else return NULL;
- }
- }
- node* taskB(node * &head1, node * &head2)
- {
- node * q1, *q2, *q3, *temp, *head;
- setHead(head1, q1);
- setHead(head2, q2);
- if (!nodeIsNull(head1) && !nodeIsNull(head2))
- {
- if (q1->info > q2->info)
- {
- q3 = q2;
- moove(q2);
- }
- else
- {
- q3 = q1;
- moove(q1);
- }
- head = q3;
- while (!nodeIsNull(q1) && !nodeIsNull(q2))
- {
- while (!nodeIsNull(q2) && q1->info > q2->info)
- {
- q3->next = q2;
- q3 = q2;
- moove(q2);
- }
- while (!nodeIsNull(q1) && q1->info <= q2->info)
- {
- q3->next = q1;
- q3 = q1;
- moove(q1);
- }
- }
- while (!nodeIsNull(q1))//дозаписываем
- {
- q3->next = q1;
- q3 = q1;
- moove(q1);
- }
- while (!nodeIsNull(q2))//дозаписываем
- {
- q3->next = q2;
- q3 = q2;
- moove(q2);
- }
- return head;
- }
- else
- {
- if (!nodeIsNull(head1))
- return head1;
- else if (!nodeIsNull(head2))
- return head2;
- else return NULL;
- }
- }
- int main()
- {
- ifstream f("Text.txt");
- node * head1, *head3;
- createListFromFile(head1, f);
- showList(head1);
- ifstream g("Text1.txt");
- node * head2;
- createListFromFile(head2, g);
- showList(head2);
- showList(taskB(head1, head2));
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement