Ishdan maqsad: Navbat, stek va dekni o‘rganish hamda ularni tadqiq qilish. Yarimstatik ma’lumotlar tuzilmalari ustida amal bajarish algoritmlarini o‘rganish. Qo‘yilgan masala



Yüklə 20,83 Kb.
səhifə5/6
tarix07.01.2024
ölçüsü20,83 Kb.
#211816
1   2   3   4   5   6
Ishdan maqsad Navbat, stek va dekni o‘rganish hamda ularni tadq-fayllar.org

Dek ustida bajariladigan amallar:


  1. Chapdan element kiritish.



  2. O‘ngdan element kiritish.



  3. Chapdan element chiqarish.



  4. O‘ngdan element chiqarish.



  5. Dek bo‘shligini tekshirish.



  6. Dek to‘laligini 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 o‘ng tomonidan kiriting. Dekning elementlarini bir safar chapdan, bir safar o‘ngdan juftlikka tekshirib, toq elementlari o‘chirilsin.

Algoritm



  1. Dekka nechta element kiritilishi aniqlanadi – n, i=0.



  2. i++; agar i



  3. Agar in/2 bo‘lsa, dekning o‘ng tomonidan kiritiladi, 2-qadamga o‘tish.



  4. 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.



  5. 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.



  6. b[] massiv elementlarini dekka o‘ng tomondan kiritamiz.



  7. 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;

}


Yüklə 20,83 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin