Muhammad al xorazmiy nomidagi toshkent axborot texnologiyalari universiteti


void DeleteNode(PNode &Head, PNode OldNode) {



Yüklə 150,65 Kb.
səhifə5/11
tarix24.11.2023
ölçüsü150,65 Kb.
#133580
1   2   3   4   5   6   7   8   9   10   11
ro’yxatlar ustida amallar bajarish. Bog’LANGAN ro’y-fayllar.doc

void DeleteNode(PNode &Head, PNode OldNode) {
PNode q = Head;
if (Head == OldNode)
Head = OldNode->next; //birinchi elementni o’chiramiz
else {
while (q && q->next != OldNode) // elementni qidirish
q = q->next;
if (q == NULL ) return; // agar topilmasa, chiqish
q->next = OldNode->next; }
delete OldNode; // xotirani tozalash
}
Chegaralarni aniqlash. Yuqorida ko’rib o’tilgan variantga e’tibor bersak, ro’yxatning boshi va oxirgi tugunini qayta ishlashda, chegara elementlarini almashtirish alohida masala sifatida qaralishi kerak. Agarda ro’yxat boshi va oxirgi tugunlarini chegara sifatida o’rnatib olsak, qolgan tugunlarni qayta ishlash hech qanday muammolarni keltirib chiqarmaydi.
2. Ikki bog’lamli ro’yxat
Bir bog’lamli ro’yxatlar bilan ishlashda ba’zi muammolar paydo bo’ladi. Masalan, ro’yxat tugunidan oldin turgan tugunga qaytish imkoni yo’q. Shuning uchun ro’yxat tuguni uchun xotirada faqat keyingi tugunga ko’rsatkich emas, balki oldingi tugunga qayta ko’rsatkichni ham saqlash mumkin. Ro’yxatga kirish uchun ham ikkita ko’rsatkichni qo’llaymiz, ya’ni ro’yxat boshiga (Head) va ro’yxatning oxiridan kirish (Tail) ko’rsatkichlaridan foydalanmiz (6-rasm).

Ikki bog’lamli ro’yxat


Har bir tugun (chegar tugunlardan tashqari) o’zidan keyingi tugunga (next) va o’zidan oldingi tugunga (prev) ko’rsatkichlarni saqlab turadi. Oxirgi elementning next maydoni va birinchi elementning prev maydoni NULL ga ega. Bunday ro’yxatning tugunini quyidagicha e’lon qilish mumkin:
struct Node {
char word[40]; // ma’lumot maydoni
int count;
Node *next, *prev; // qo’shni tugunlarga ko’rsatkichlar
};
typedef Node *PNode; //«ko’rsatkich» turidagi ma’lumot
Keyingi o’rinlarda Head ro’yxat boshi tugunigaTail ro’yxatning oxiri tuguniga ko’rsatkich deb qaraymiz:
PNode Head = NULL, Tail = NULL;
Bo’sh ro’yxatning ikkala ko’rsatkichi ham NULL ga teng bo’ladi.

Yüklə 150,65 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10   11




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin