Double Ended Queue ingliz tilidan olingan bo


Download 87.04 Kb.
Sana04.02.2023
Hajmi87.04 Kb.
#1161969
Bog'liq
2.4. Deklar-WPS Office


2.4. Deklar
Dek sozi (DEQ - Double Ended Queue) ingliz tilidan olingan bolib 2 ta chetga ega navbat degan ma’noni bildiradi. Dekning oziga xos xususiyati shuki, unga elementlar har ikkala tomondan – chapdan va ong tomondan kiritilishi va chiqarilishi mumkin (2.3-rasm).

2.3-rasm. Dek tuzilmasi
Dek ustida bajariladigan amallar:
Chapdan element kiritish.
Ongdan element kiritish.
Chapdan element chiqarish.
Ongdan element chiqarish.
Dek boshligini tekshirish.
Dek tolaligini tekshirish.
C++ tilida dekni statik korinishda, ya’ni bir olchamli massiv korinishida amalga oshirishga misol: Berilayotgan butun sonlar ketma-ketligining 1-yarmini dekning chap tomonidan, qolgan yarmini dekning ong tomonidan kiriting. Dekning elementlarini bir safar chapdan, bir safar ongdan juftlikka tekshirib, toq elementlari ochirilsin.
Algoritm
Dekka nechta element kiritilishi aniqlanadi – n, i=0.
i++; agar ilsa va dek tolmagan bolsa, 3-qadamga, aks holda 4-qadamga otiladi.
Agar ilsa, navbatdagi element chapdan, aks holda, ya’ni i>n/2 bolsa, dekning ong tomonidan kiritiladi, 2-qadamga otish.
Agar dek bosh bolmasa, chapdan element chiqarib olamiz. Agar element juft bolsa, b[] massivga joylaymiz. 5-qadamga otiladi. Agar dek bosh bolsa, 6-qadamga otish.
Agar dek bosh bolmasa, ongdan element chiqarib olamiz. Agar element juft bolsa, b[] massivga joylaymiz. 5-qadamga otiladi. Agar dek bosh bolsa, 6-qadamga otish.
b[] massiv elementlarini dekka ong tomondan kiritamiz.
Dek tarkibini ekranga chiqaramiz.
Dastur kodi
#include
#include
using namespace std;

struct DEQUE
{
int data[50];
int DO,DB;
DEQUE(){DO=DB=24;}
void ADD(int X, bool K=true)
{
if (K)data[--DB]=X;
else data[DO++]=X;
}
void PRINT()
{
for(int i = DB; i
cout << data[i]<<"\t";
cout<
}
int DEL(bool k=true)
{
if (k) return data[DB++];
else return data[--DO];
}
};

int main()
{
int n;
cin>>n;
DEQUE A;
while(n--)
A.ADD(rand()%100+1);
A.PRINT();
cout << A.DEL(false) << endl;
cout << A.DEL(false) << endl;
cout << A.DEL(true) << endl;
cout << A.DEL(true) << endl;
A.PRINT();
return 0;
}

Download 87.04 Kb.

Do'stlaringiz bilan baham:




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