Mundarija: Kirish Ro'yxatlar. Amalga oshirish imkoniyatlari ro'yxati


Navbatni qayta ishlashning barcha shartlari hisobga olinadi


Download 34.46 Kb.
bet11/12
Sana31.03.2023
Hajmi34.46 Kb.
#1313943
1   ...   4   5   6   7   8   9   10   11   12
Bog'liq
1111Doimiy ustuvor navbat algoritmlari

Navbatni qayta ishlashning barcha shartlari hisobga olinadi:

1 Elementni navbatga ustuvorligiga ko'ra joylashtiring

2 Birinchi elementga navbat bilan kirish

3 Navbatdan elementni olib tashlash (birinchi navbatda, qiymat bo'yicha ko'rsatilgan)

4 Navbat elementlarini ko'rsatish

5 Navbat elementlarining qiymatlaridan massiv hosil qilish

6 Navbatni o'chirish

Dastur OOP tamoyillariga muvofiq, ya'ni inkapsulyatsiya va ob'ektlar bilan ishlash tamoyillariga muvofiq yozilgan. Ishda sinflar va tuzilmalar shablonlari (shablon) qo'llaniladi, bu sizga har qanday turdagi ma'lumotlardan navbat yaratish imkonini beradi. Elementlarning ustuvorligini oshirish / kamaytirish orqali navbatni shakllantirish variantlari mavjud. Sinf bilan ishlash qulayligi uchun tegishli menyu tuzilgan bo'lib, uning har bir bandi tegishli sinf usuli uchun javobgardir. Dastur ishining tahlili o'tkazildi.



Adabiyotlar ro'yxati


1. Rembo J., Blaha M. UML 2.0. Ob'ektga yo'naltirilgan modellashtirish va ishlab chiqish.2-nashr. - Sankt-Peterburg: Peter, 2007. - 544 p.: kasal.
2. N.B. Kultin, S/S++ vazifalar va misollarda. Sankt-Peterburg: BHV-Peterburg, 2001, - 854 bet.
3. Ob'ektga mo'ljallangan dasturlash asoslari. C++ dasturlash tili/ Volkova I.A., Ivanov A.V., Karpov L.E. - 2-kurs talabalari uchun darslik. - M .: Moskva davlat universiteti CMC fakulteti nashriyot bo'limi (2001 yil 24 sentyabrdagi 05899-sonli litsenziya), 2011 yil - 112 p.
4. Jayswall N.K. Ustuvor navbatlar. - M.: Mir, 1973. - 279 b.
Ilova
Dastur ro'yxati:
#include
std nom maydonidan foydalanish;
andoza struct Priority {
T inf;
imzosiz p;
};

shablon class DKList { // T tipidagi maydon bilan navbat sinfini e'lon qilish, yuqoriga ko'tarilish yo'nalishini aniqlaydi
Priority inf; // axborot maydoni
DKList * keyingi; // keyingi elementga ko'rsatgich
DKList * oldingi; // oldingi elementga ko'rsatgich
statik DKList *birinchi;
statik DKList *oxirgi;
ommaviy:
DKList(): keyingi (NULL), oldingi (NULL) // standart konstruktor
{
inf. inf = 0;
inf. p = 0;
}
DKList (T i, unsigned pr): keyingi (NULL), oldingi (NULL) // axborot maydoni va ustuvorligi uchun konstruktor
{
inf. inf = i;
inf. p = pr;
}
void AddElem (DKList* p) { // element qo'shish usuli
DKList *f = birinchi;
agar (! f) { // agar navbat bo'sh bo'lsa
oxirgi = birinchi = p;
qaytish;
}
while ( f - > keyingi & & ( yuqoriga ? f - > inf . p < p - > inf . p : f - > inf . p > p -> inf . p )) // ishchem meto
f = f->keyingi;
agar (! f->keyingi && (yuqoriga? f->inf. p < p->inf. p: f->inf. p > p->inf. p)) { // agar navbat oxiri
f->keyingi = p;
p->oldingi = f;
oxirgi = p;
}
else if (f == birinchi) { // agar navbatning boshlanishi
p->keyingi = f;
f->oldingi = p;
birinchi = p;
}
else { // agar navbatning o'rtasi bo'lsa
f->oldingi->keyingi = p;
p-> oldingi = f-> oldingi;
p->keyingi = f;
f->oldingi = p;
}
}
void AddElem (T i, unsigned pr) {
AddElem (yangi DKList (i, pr));
}
bool DelElem (T inf) { // qiymat bo'yicha o'chirish usuli
DKList *f = birinchi;
esa (f && f->inf. inf! = inf)
f = f->keyingi;
agar (!f) // element topilmasa
qaytish 0;
agar (birinchi->keyingi) {

Download 34.46 Kb.

Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling