C++ da yarimstatik ma'lumotlar tuzilmasi ifodalash navbat stek va dek reja: I. Kirish II. Asosiy qism




Download 187.35 Kb.
bet14/18
Sana31.01.2023
Hajmi187.35 Kb.
#40306
1   ...   10   11   12   13   14   15   16   17   18
Bog'liq
C da yarimstatik ma\'lumotlar tuzilmasi ifodalash navbat
Klaviatura, Loyiha, Elеktromagnit tizimli asboblar., YOSH XIVALIKLAR, Simsiz aloqa tizimlarida axborot resurslarini himoyalash-fayllar.org, BAHOLASH MEZONLARI, 7-mavzu. Parallel ulash (3), 152371477 (1), 152371477 (2), Amaliy matematika va informatika kafedrasi, 1-Amaliy mashg`ulot Matnli hujjatlarni formatlash va, Informatika. 6-sinf (2017, B.Boltayev, M.Mahkamov), Mustaqil ish
Deque klassi (massiv yordamida)
Massivga asoslangan navbat interfeysi bog'langan ro'yxatni amalga oshirish bilan bir xil. Biz buni takrorlamaymiz. Biroq, roʻyxat massiv bilan almashtirilgani uchun biz yangi maydonlarni qoʻshdik – massivning oʻzi, uning oʻlchami va navbatning “dumi” va “bosh”iga koʻrsatgichlar.
ommaviy sinfdeque
{
T[]_elementlar= yangi T[0];

// Navbatdagi elementlar soni.


int_size= 0;

// Birinchi (eng eski) element indeksi.


int_head= 0;

// Oxirgi (eng yangi) element indeksi.


int_tail= -1;
...
}
o'sish algoritmi
Ichki massivdagi bo'sh joy tugagach, uni ko'paytirish, elementlarni nusxalash va "quyruq" va "bosh" ko'rsatkichlarini yangilash kerak. Ushbu operatsiya elementni qo'shish paytida kerak bo'lganda amalga oshiriladi. StartingIndex parametri boshida qancha maydon bo'sh qolishi kerakligini ko'rsatish uchun ishlatiladi (agar boshida qo'shilgan bo'lsa).
"Bosh" dan "dum" ga o'tishda massivning boshiga o'tish kerak bo'lganda, ma'lumotlar qanday olinishiga e'tibor bering.
shaxsiy bo'shliqallocate NewArray(int startingIndex)
{
int newLength= (_hajmi== 0) ? to'rtta :_hajmi* 2;

T[]newArray= yangi T[yangi uzunlik];


agar (_hajmi> 0)


{
int targetIndex=boshlang'ich indeksi;

// Tarkibni nusxalash...


// Agar massiv hal qilinmagan bo'lsa, shunchaki elementlardan nusxa oling.
// Aks holda, boshidan oxirigacha nusxa ko'chiriladi,
// va keyin massiv boshidan quyruqgacha.

// Agar dumi boshidan kichik bo'lsa, boshiga o'ting.


agar (_dum<_bosh)
{
// _items[head].._items[end] ni newArray[0]..newArray[N] ga nusxalash.
uchun (int indeksi=_bosh;indeks<_elementlar.Uzunlik;indeks++)
{
newArray[maqsad indeksi] =_elementlar[indeks];
maqsad indeksi++;
}

// _items[0].._items[tail] ni newArray[N+1] ga nusxalash..


uchun (int indeksi= 0;indeks<=_dum;indeks++)
{
newArray[maqsad indeksi] =_elementlar[indeks];
maqsad indeksi++;
}
}
boshqa
{
// _items[head].._items[tail] ni newArray[0]..newArray[N] ga nusxalash
uchun (int indeksi=_bosh;indeks<=_dum;indeks++)
{
newArray[maqsad indeksi] =_elementlar[indeks];
maqsad indeksi++;
}
}
_bosh=boshlang'ich indeksi;
_dum=maqsad indeksi- 1;
}
boshqa
{
// Massiv bo'sh.
_bosh= 0;
_dum= -1;
}

_elementlar=newArray;


}

Download 187.35 Kb.
1   ...   10   11   12   13   14   15   16   17   18




Download 187.35 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



C++ da yarimstatik ma'lumotlar tuzilmasi ifodalash navbat stek va dek reja: I. Kirish II. Asosiy qism

Download 187.35 Kb.