Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //6. Організувати два списки, заповнити їх впорядкованими за зростанням числами і зробити функцію злиття цих списків.
- #include <iostream>
- using namespace std;
- class List
- {
- private:
- int size;
- struct Item
- {
- int value;
- Item *next, *prev;
- } *first, *last;
- public:
- List()
- {
- size = 0;
- first = 0;
- last = 0;
- }
- void add(int value)
- {
- if (size < 1)
- {
- size = 1;
- first = new Item;
- first->value = value;
- first->prev = 0;
- first->next = 0;
- last = first;
- }
- else
- {
- Item *newItem = new Item;
- newItem->value = value;
- newItem->prev = last;
- newItem->next = 0;
- last->next = newItem;
- last = newItem;
- size++;
- }
- }
- int *getArray()
- {
- Item *current = first;
- int *result = new int[size];
- for (int i = 0; i < size; i++)
- {
- result[i] = current->value;
- current = current->next;
- }
- return result;
- }
- };
- void merge(int arr1[], int size1, int arr2[], int size2, int result[])
- {
- int i = 0, j = 0, k = 0;
- while (i < size2 && j < size1)
- {
- if (arr1[i] <= arr2[j])
- {
- result[k] = arr1[i];
- i++;
- }
- else
- {
- result[k] = arr2[j];
- j++;
- }
- k++;
- }
- if (i < size2)
- {
- for (int p = i; p < size2; p++)
- {
- result[k] = arr1[p];
- k++;
- }
- }
- else
- {
- for (int p = j; p < size1; p++)
- {
- result[k] = arr2[p];
- k++;
- }
- }
- }
- int main()
- {
- int arr1size;
- cout << "Enter array 1 size: ";
- cin >> arr1size;
- List arr1;
- for (int i = 0; i < arr1size; i++)
- {
- int value;
- cout << "arr1[" << i << "]: ";
- cin >> value;
- arr1.add(value);
- }
- int arr2size;
- cout << "Enter array 2 size: ";
- cin >> arr2size;
- List arr2;
- for (int i = 0; i < arr2size; i++)
- {
- int value;
- cout << "arr2[" << i << "]: ";
- cin >> value;
- arr2.add(value);
- }
- int *result = new int[arr1size + arr2size];
- merge(arr1.getArray(), arr1size, arr2.getArray(), arr2size, result);
- cout << "result = { ";
- for (int i = 0; i < arr1size + arr2size; i++)
- {
- cout << result[i] << " ";
- }
- cout << "}" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement