Dek ustida bajariladigan amallar:
Chapdan element kiritish.
O‘ngdan element kiritish.
Chapdan element chiqarish.
O‘ngdan element chiqarish.
Dek bo‘shligini tekshirish.
Dek to‘laligini tekshirish.
C++ tilida dekni statik ko‘rinishda, ya’ni bir o‘lchamli massiv ko‘rinishida amalga oshirishga misol: Berilayotgan butun sonlar ketma-ketligining 1-yarmini dekning chap tomonidan, qolgan yarmini dekning o‘ng tomonidan kiriting. Dekning elementlarini bir safar chapdan, bir safar o‘ngdan juftlikka tekshirib, toq elementlari o‘chirilsin.
Algoritm
Dekka nechta element kiritilishi aniqlanadi – n, i=0.
i++; agar i
Agar in/2 bo‘lsa, dekning o‘ng tomonidan kiritiladi, 2-qadamga o‘tish.
Agar dek bo‘sh bo‘lmasa, chapdan element chiqarib olamiz. Agar element juft bo‘lsa, b[] massivga joylaymiz. 5-qadamga o‘tiladi. Agar dek bo‘sh bo‘lsa, 6-qadamga o‘tish.
Agar dek bo‘sh bo‘lmasa, o‘ngdan element chiqarib olamiz. Agar element juft bo‘lsa, b[] massivga joylaymiz. 5-qadamga o‘tiladi. Agar dek bo‘sh bo‘lsa, 6-qadamga o‘tish.
b[] massiv elementlarini dekka o‘ng 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;
}
Dostları ilə paylaş: |