oxirgi = p; } Agar elementni birinchi joyga qo'yish kerak bo'lsa: Aks holda (f == birinchi) { p->keyingi = f; f->oldingi = p; birinchi = p; } Agar element navbatning birinchi yoki oxirgi pozitsiyasiga mos kelmasa, u ustuvorlikka ko'ra o'rtaga joylashtiriladi: else {f->oldingi->keyingi = p; p-> oldingi = f-> oldingi; p->keyingi = f; f->oldingi = p; } bool DelElem(T inf) usuli elementni qiymat bo'yicha navbatdan olib tashlaydi. Bunda navbatdagi elementning mavjudligi tekshiriladi va muvaffaqiyatli o'chirilgan taqdirda 1 qaytariladi, aks holda - 0. Elementni qidirish tsikllari: esa (f && f->inf. inf! = inf) f = f->keyingi; Agar DelElem() ga berilgan qiymat element qiymatlaridan biriga mos kelsa, o'chirish sodir bo'ladi. Bunday holda, agar element birinchi, oxirgi pozitsiyalarda, navbatning o'rtasida bo'lsa va navbatda bir nechta element bo'lsa, variantlar hisobga olinadi. Agar element birinchi holatda bo'lsa (navbatda bir nechta element mavjud): agar (birinchi->keyingi) { agar (f == birinchi) { birinchi = birinchi-> keyingi; birinchi -> oldingi = NULL; o'chirish f; qaytish 1; } Aks holda, element oxirgi holatda bo'lsa: agar (f == oxirgi) { oxirgi = oxirgi-> oldingi; oxirgi->keyingi = NULL; o'chirish f; qaytish 1; } Aks holda, navbatning o'rtasida bo'lsa: f->oldingi->keyingi = f->keyingi; f->keyingi->oldingi = f->oldingi; o'chirish f; qaytish 1; Va agar navbatda faqat bitta element bo'lsa, u o'chiriladi: boshqa { avval o'chirish; birinchi = oxirgi = NULL; qaytish 1; } Navbat printsipiga ko'ra, kirish navbatdagi birinchi elementga (eng yuqori ustuvorlik bilan) amalga oshiriladi. Bunday element statik birinchi ko'rsatkichga ega bo'lib, unga Priority* GetElem() usuli yordamida kirish imkonini beradi:
Do'stlaringiz bilan baham: |