15-Laboratoriya mashg’uloti Bog'langan ro'yxat. Ikkala bog'langan ro'yxat bilan ishlash


Misol 6. Berilgan ikkita bog'langan ro'yxatdan har bir Node da kattaroq element bilan yangi bog'langan ro'yxat yaratish



Yüklə 31,7 Kb.
səhifə3/3
tarix27.01.2023
ölçüsü31,7 Kb.
#81161
1   2   3
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

Yüklə 31,7 Kb.

Dostları ilə paylaş:
1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin