Dek ustida bajariladigan amallar

|
Dek ustida bajariladigan amallar
|
bet | 4/7 | Sana | 19.12.2023 | Hajmi | 1,03 Mb. | | #124098 |
Bog'liq 2–mustaqil ishiDek 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 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
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;
int a[10],n,R=0;
bool isEmpty(){
if(R==0) return true; else return false;
}
bool isFull(){
if(R>=10) return true; else return false;
}
int kirit_left(int s){
if(isFull()){cout<<"\ndek to'ldi";n=R;return EXIT_SUCCESS;}
for(int i=R;i>0;i--)
a[i]=a[i-1];
a[0]=s;R++;
}
int olish_left(){
if(isEmpty()){cout<<"\ndek bo'sh";return EXIT_SUCCESS;}
int t=a[0];
for(int i=0;i
a[i]=a[i+1];
R--;
return t;
}
int kirit_right(int s){
if(isFull()){cout<<"\ndek to'ldi";n=R;return EXIT_SUCCESS;}
a[R]=s;R++;
}
int olish_right(){
if(isEmpty()){cout<<"\ndek bo'sh";return EXIT_SUCCESS;}
R--;
return a[R];
}
int print(){
cout<
cout<
}
int main(int argc, char *argv[])
{ int n,s;cout<<"n="; cin>>n;
for(int i=0;i
if(!isFull()){
cout<<"kirit=";cin>>s;
if(i>=n/2) kirit_right(s);
else kirit_left(s);}
else {cout<<"dek to'ldi\n";break;}
}
print();
int b[n/2],k=0,c[n/2],p=0;
while(!isEmpty()){
int q=olish_left();
if(q%2==0) b[k++]=q;
if(isEmpty()) break;
int p=olish_right();
if(p%2==0) b[k++]=p;
}
int i=0;
while(i
kirit_right(b[i]);
i++;
}
print();
system("PAUSE");
return EXIT_SUCCESS;
}
Dastur natijasi
n=8
kirit=1
kirit=2
kirit=3
kirit=4
kirit=5
kirit=6
kirit=7
kirit=8
dek ele-tlari=4 3 2 1 5 6 7 8
dek ele-tlari=4 8 2 6
Mavzu: Dinamik turdagi ma’lumotlar tuzilmasi
Reja:
Dinamik turdagi ma’lumotlar tuzilmasi
Dinamik ma’lumotlar tuzilmasi klassifikatsiyasi
Dinamik ma’lumotlar tuzilmasi - ro’yhatlar
Dinamik ma'lumotlar tuzilmalari tuzilishi. Afzalliklari va kamchiliklari
Kirish
Ma'lumotlar tuzilmasi dasturlarda ajratish usuli bo'yicha statik va dinamikaga bo'lingan. Statik ma'lumotlar tuzilmasi - bu kompyuterning xotirasida joylashishi va elementlarning o'zaro aloqalari ular tomonidan amalga oshiriladigan sohada dasturni bajarish paytida o'zgarishsiz qoladigan ma'lumotlardir. Statik strukturaning ma'lumotlariga dasturda e'lon qilingan asosiy va mahalliy, ham global darajadagi o'zgaruvchilar kiradi. Dinamik ma'lumotlar tuzilmasi - bu kompyuterning xotirasiga joylashtirilishi va New va Dispose kabi tizim proseduralari yordamida dasturni bajarishda xotiradan o'chirilishi mumkin bo'lgan ma'lumotlar.
Dinamik ma'lumotlar tuzilmalari ikki shaklda bo'ladi: bog'liq bo'lmagan dinamik ma'lumotlar; bog’liq dinamik ma'lumotlar.
Bog’liq bo'lmagan dinamik ma'lumotlar tuzilmasi statik bilan bir xil. Bundan tashqari, bog'liq bo'lmagan dinamik ma'lumotlar avtomatik ravishda emas, balki dasturchi tomonidan xotirada saqlanadi. Bog’liq bo’lgan dinamik ma'lumotlarga ro'yxatlar, navbatlar va ustunlar kiradi; bu elementlar manzillar havolalari yordamida o'zaro bog'liq bo'lgan birlashtirilgan ma'lumotlar.
Dinamik turdagi ma’lumotlar tuzilmasi
Statik ma’lumotlar tuzilmasi vaqt o’tishi bilan o’z o’lchamini o’zgartirmaydi. Biz har doim dastur kodidagi statik ma’lumotlar tuzilmasiga qarab ularning o’lchamini bilishimiz mumkin. Bunday ma’lumotlarga teskari ravishda dinamik ma’lumotlar tuzilmasi mavjud bo’lib, bunda dastur bajarilishi davomida dinamik ma’lumotlar tuzilmasi o’lchamini o’zgartirishi mumkin.
Dinamik ma’lumotlar tuzilmasi – bu qandaydir bir qonuniyatga asoslanib shakllangan, lekin elementlari soni, o’zaro joylashuvi va o’zaro aloqasi dastur bajarilishi davomida shu qonuniyat asosida dinamik o’zgaruvchan bo’lgan ma’lumotlar tuzilmasidir. Dinamik ma’lumotlar tuzilmasi 1-rasmdagidek klassifikatsiyalanadi.
1-rasm. Dinamik ma’lumotlar tuzilmasi klassifikatsiyasi
Dasturlarda dinamik ma’lumotlar tuzilmasidan ko’pincha chiziqli ro’yhatlar, steklar, navbatlar va binar daraxtlar ishlatiladi. Bu tuzilmalar bir-biridan elementlarning bog’lanish usuli va ular ustida bajarilishi mumkin bo’lgan amallari bilan farqlanadi. Dinamik tuzilmalar massiv va yozuvdan farqli ravishda operativ xotirada ketma-ket sohalarda joylashmaydi. Ixtiyoriy dinamik tuzilma elementi 2 ta maydondan tashkil topadi: tuzilma tashkil etilishiga sabab bo’layotgan informatsion maydon va elementlarning o’zaro aloqasini ta’minlovchi ko‘rsatkichli maydon.
|
| |