Mavzu: dinamik ma’lumotlar tuzilmasini tadqiq qilish. Chiziqli bog’langan ro’yhatlar



Yüklə 383,25 Kb.
tarix09.12.2022
ölçüsü383,25 Kb.
#73317

AXBOROT TEXNOLOGIYALARI VA KOMUNIKATSILARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI KOMPYUTER INJENERINGGI YO’NALISHI MA’LUMOTLAR TUZILMASI VA ALGORITMLAR FANIDAN
4-Amaliy ish

5-VARIANT


MAVZU: DINAMIK MALUMOTLAR TUZILMASINI TADQIQ QILISH. CHIZIQLI BOG’LANGAN RO’YHATLAR

Tekshirdi: Bo’riyev Yusuf


Topshirdi: Allaberdiyev Elyor
TOSHKENT 2022

Dinamik ma’lumotlar tuzilmasi

Statik ma’lumotlar tuzilmasi vaqt o‘tishi bilan o‘z o‘lchamini o‘zgartirmaydi. Biz har doim dastur kodidagi statik ma’lumotlar tuzilmasiga qarab ularning o‘lchamini bilishimiz mumkin. Bunday ma’lumotlarga teskari ravishda dinamik ma’lumotlar tuzilmasi mavjud bo‘lib, bunda dastur bajarilishi davomida dinamik ma’lumotlar tuzilmasi o‘lchamini o‘zgartirishi mumkin. Dinamik ma’lumotlar tuzilmasi – bu qandaydir bir qonuniyatga asoslanib shakllangan, lekin elementlari soni, o‘zaro joylashuvi va o‘zaro aloqasi dastur bajarilishi davomida shu qonuniyat asosida dinamik o‘zgaruvchan bo‘lgan ma’lumotlar tuzilmasidir.


3.2. Chiziqli bir tomonlama yo‘nalgan ro‘yhatlar



3.2-rasm. Chiziqli bir bog‘lamli ro‘yhatlar



          1. 4. Bir bog‘lamli ro‘yhatdan elementni o‘chirish


Ro‘yhatda p ko‘rsatkich ko‘rsatayotgan elementdan keyingi elementni o‘chiramiz (3.11-rasm).

3.11-rasm. Ro‘yhat o‘rtasidan element o‘chirish


Buni ro‘yobga chiqarish uchun quyidagi ishlarni amalga oshirish lozim:
a) O‘chirilayotgan elementni ko‘rsatuvchi q ko‘rsatkichni kiritish.
q=p->ptr;
b) p elementni q elementdan keyingi element bilan bog‘lash.
p->ptr=q->ptr;
c) O‘chirilayotgan element info maydonidagi informatsiyani yodda saqlash (agar zarur bo‘lsa) k=q->info;
d) q ko‘rsatkich ko‘rsatayotgan elementni o‘chirish.
delete(q)

5-VARIANT topshirig’i:


Ro’yhatning n-inchi elementi o’chirilsin:

#include


using namespace std;

class Node {


public:
int data;
Node* next;
};

void push(Node** head_ref, int new_data)


{
Node* new_node = new Node();
new_node->data = new_data;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}

void deleteNode(Node** head_ref, int key)


{

Node* temp = *head_ref;


Node* prev = NULL;

if (temp != NULL && temp->data == key) {


*head_ref = temp->next;
delete temp;
return;
}

else {
while (temp != NULL && temp->data != key) {


prev = temp;
temp = temp->next;
}

if (temp == NULL)


return;

prev->next = temp->next;


delete temp;


}
}

void printList(Node* node)


{
while (node != NULL) {
cout << node->data << " ";
node = node->next;
}
}

int main()


{

Node* head = NULL;


int k, l;
cin >> k;
for(int i = 0; i < k; i++){
cin >> l;
push(&head, l);
}

puts("List: ");


printList(head);
int i;
cin >> i;
deleteNode(&head, i);
puts("\nO'chirilgandan keyingi holat : ");

printList(head);


return 0;


}



Yüklə 383,25 Kb.

Dostları ilə paylaş:




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