|
Misol 6. Berilgan ikkita bog'langan ro'yxatdan har bir Node da kattaroq element bilan yangi bog'langan ro'yxat yaratish
|
səhifə | 3/3 | tarix | 27.01.2023 | ölçüsü | 31,7 Kb. | | #81161 |
| 15-Laboratoriya mashg’uloti Bog\'langan ro\'yxat. Ikkala bog\'langa
Misol 6. Berilgan ikkita bog'langan ro'yxatdan har bir Node da kattaroq element bilan yangi bog'langan ro'yxat yaratish
Bir xil o'lchamdagi ikkita bog'langan ro'yxatni hisobga olgan holda, ushbu bog'langan ro'yxatlar yordamida yangi bog'langan ro'yxatni yaratish vazifasi qo'yilgan. Shart shundaki, ikkala bog'langan ro'yxat orasidagi kattaroq elementlar yangi ro'yxatiga qo'shiladi.
// Yangi bog'langan ro'yxatni yaratish uchun C ++ dasturi
// berilgan ikkita bog'langan ro'yxatdan
// bilan bir xil o'lchamdagi
// har bir Node dagi ikkitasi orasidagi katta element
#include
using namespace std;
// Node ning ifodalanishistruct Node {
int data;
Node* next;
};
// Bog'langan ro'yxatga nodeni kiritish funktsiyasi
void insert(Node** root, int item)
{
Node *ptr, *temp;
temp = new Node;
temp->data = item;
temp->next = NULL;
if (*root == NULL)
*root = temp;
else {
ptr = *root;
while (ptr->next != NULL)
ptr = ptr->next;
ptr->next = temp;
}
}
// Yangi bog'langan ro'yxatni qaytaradigan funktsiya
Node* newList(Node* root1, Node* root2)
{
Node *ptr1 = root1, *ptr2 = root2, *ptr;
Node *root = NULL, *temp;
while (ptr1 != NULL) {
temp = new Node;
temp->next = NULL;
// Katta nodeni taqqoslaymiz
if (ptr1->data < ptr2->data)
temp->data = ptr2->data;
else
temp->data = ptr1->data;
if (root == NULL)
root = temp;
else {
ptr = root;
while (ptr->next != NULL)
ptr = ptr->next;
ptr->next = temp;
}
ptr1 = ptr1->next;
ptr2 = ptr2->next;
}
return root;
}
void display(Node* root)
{
while (root != NULL) {
cout << root->data << "->";
root = root->next;
}
cout << endl;
}
// Driver code
int main()
{
Node *root1 = NULL, *root2 = NULL, *root = NULL;
// Birinchi bog'langan ro'yxat
insert(&root1, 5);
insert(&root1, 2);
insert(&root1, 3);
insert(&root1, 8);
cout << " Birinchi ro'yxat:";
display(root1);
// Ikkinchi bog'langan ro'yxat
insert(&root2, 1);
insert(&root2, 7);
insert(&root2, 4);
insert(&root2, 5);
cout << " Ikkinchi ro'yxat:";
display(root2);
root = newList(root1, root2);
cout << " Yangi ro'yxat:";
display(root);
return 0;
}
Natija:
Kirish: list1 = 5-> 2-> 3-> 8
list2 = 1-> 7-> 4-> 5
Chiqish: Yangi ro'yxat = 5-> 7-> 4-> 8
Dostları ilə paylaş: |
|
|