Mustaqil ish Bajardi: Mahamatqulov Akmal


Download 87.69 Kb.
Sana08.05.2023
Hajmi87.69 Kb.
#1447254
Bog'liq
Maxamatqulov Akmal

Mustaqil ish

Bajardi: Mahamatqulov Akmal

Tekshirdi: Tosheva Muhabbat

Mavzu: Stek.Stekni massiv yordamida tasvirlash va ular ustida amal bajarish algoritmlari.

  • Reja:
  • 1. Stek.
  • 2. Massiv yordamida navbat yaratish.
  • 3. Massiv yordamida navbat yaratish.
  • Stek — Stack inglizchadan uyum, g‘aram, dasta, bog‘lam degan ma’noni anglatadi.
  • Stek - bu LIFO (last in — first out; oxirgi kelgan — birinchi ketadi) prinsipi bo‘yicha ishlaydigan ma’lumotlarstrukturasi.
  • Bu juda aniq ta’rif, ammo yangi o‘rganuvchilar uchun tushunish biroz qiyin bo‘lishi mumkin. Shuning uchun, hayotning narsalar ko‘rinishidagi to‘plamni taqdim etish haqida to‘xtalib o‘taylik. Xayolga kelgan birinchi narsa - bu kitoblar to‘plami ko‘rinishidagi talqin, bu yerda eng yuqori kitob tepada joylashgan.

Aslida, stek har qanday narsaning to‘plami sifatida ifodalanishi mumkin, u daftar, ruchka va shunga o‘xshash narsalar to‘plami bo‘lishi mumkin, ammo kitoblar bilan misol eng maqbul bo‘ladi.
Shunday qilib, stek nimadan iborat? Stek katakchalardan iborat (masalan, bular kitoblar), ular ba’zi ma’lumotlarni o‘z ichiga olgan tuzilish shaklida va ushbu strukturaning turiga keyingi elementga ko‘rsatkich sifatida taqdim etiladi.
Stekka birinchi bo‘lib kiritilgan element eng so‘nggisi bo‘ladi. Agar stekka uchta element qo‘shsangiz, avval qo‘shilgan oxirgi element o‘chiriladi.
2-rasmda siz 6 ta raqamni ko‘rishingiz mumkin: 6, 3, 8, 2, 4, 7. Shunga diqqat qilingki, biz ularni bir xil tartibda chiqaramiz. Masalan, 8 raqamini chiqarish uchun avval 6 va 3 raqamlarini, so‘ngra 1 ni ajratib olishimiz kerak, chunki bu stek, biz bu raqamlarni teskari tartibda qo‘shdik. Aniqroq qilib aytganda: 7, 4, 2, 8, 3, 6.
Stekda massivdagi kabi indekslar mavjud emas, demak ma’lum bir elementga murojaat qila olmaysiz. Buning sababi, stek bog‘langan ro‘yxatlar asosida tuzilgan. Bu shuni anglatadiki, har bir element (oxirgisidan tashqari qolgan elementlar NULL-ga ishora qiladi, oddiy so‘zlar bilan aytganda, hech narsaga ishora qilmasa NULL bo‘ladi) keyingi elementga ko‘rsatgichga ega. Ammo ko‘rsatgich bo‘lmagan element mavjud - birinchisi (yoki uni bosh element deb hamatashadi).
Shu o‘rinda savol paydo bo‘lishi mumkin? Nima uchun massivlarni ishlatish mumkin bo‘lganda stekni ishlatamiz. Sababi stek to‘plamining Bosh element 2-rasm. Stek ma’lumottar strukturasi asosiy kuchi elementlarni qo‘shish va olib tashlashdan iborat ekanligida.
Ushbu amallar doimiy vaqt ichida amalga oshiriladi (bu yaxshi plyus). Ba’zi dasturchilar massivda stek qilishadi. Stekdan foydalanishning bu usuli haqida biroz keyinroq gaplashamiz.
C ++ tilida stekni realizatsiya qilish. Dastur boshida stek shablonidan foydalanish uchun kutubxonasini yoqishimiz kerak.
Stek yaratish uchun biz quyidagi sxema bilan ishlashimiz kerak.
Yangi satrda stack kalit so‘zini yozishimiz kerak. +ma’lumotlar bu yerda stekda saqlanadigan ma’lumotlar turini yozishimiz kerak.
+nom> - bu stek nomi.
Steklar bilan ishlash metodlari. Metodlar - navbat va stek kabi konteynerlar uchun ishlatiladigan funksiyalar. Quyida stekda ishlatiladigan metodlarni qarab chiqamiz:
#include
#include //stek kutubxonasini ulash
using namespace std;
stack stek; //Stekyaratish
int i = 0;
cout << "Istalgan oltita son kiriting: "<< endl;
while (i !=6)
Dasturda berilgan push() funksiyasi yordamida stekka element qo‘shamiz. Qavslar ichida biz qo‘shmoqchi bo‘lgan qiymat bo‘lishi kerak. Dastur kodida stek bo‘shligini tekshirish uchun emptyQ metodidan foydalanamiz. Agar bu funksiya natijasi true bo‘lsa, uholda stek bo‘sh bo‘ladi. Agar natija false bo‘lsa, unda stekda element mavjud bo‘ladi. Stekning eng yuqori elementini o‘chirish uchun pop() funksiyasi ishlatilgan.
pop() funksiyasida, push() funksiyasidan farqli o‘laroq, qavs ichida biror narsani ko‘rsatishning hojati yo‘q, lekin qavsning o‘zi bo‘lishi kerak. Stekning eng yuqori elementini olish uchun top() funksiyasidan foydalanamiz.
peek() funksiyasi. stack kutubxonasiga yangi peek () funksiyasi qo‘shildi, u yordamida stekning N—elementiga murojaat qilishingiz mumkin (yuqoridan). Shu holatda endi stek massivga o‘xshash holatdabo‘ladi.
Quyida peek() funksiyasidan foydalanib uchinchi elementni chiqaramiz. Ushbu funksiya C++11 standartidan keyin qo‘shilgan. #include
#include //stek kutubxonasini ulash
using namespace std;
int main()
stack stek; // Stek yaratish
stek.push(2);
stek.push(3);
stek.push(9);
stek.push(10);
cout<<"Stekning uchinchi elementi:"<return 0;
Massiv yordamida stek hosil qilish. Ko‘plab dasturchilar stek shablonidan foydalanmaydilar, aksincha massivlar orqali stek bilan ishlashadi. Endi massiv yordamida stekni qanday amalga oshirishni ko‘ramiz:
Quyida biz 20 ta elementdan iborat - stek nomli massiv yaratdik, shuningdek, i o‘zgaruvchini yaratdik, bu esa stekning yuqori elementiga ishora qiladi. Element qo‘shish uchun biz i ni birma-bir oshiramiz va elementni stek[i] katakchasiga yozamiz. Elementni olib tashlash uchun biz shunchaki i-ni kamaytiramiz. Ehtimol, allaqachon taxmin qilganingizdek, stekning yuqori elementiga murojaat qilish uchun biz shunchaki qatorning i elementiga murojaat qilamiz. i o‘zgaruvchisi push() funksiyasi va top() funksiyasini almashtirdi. Stekning bo‘shligini ko‘rish uchun biz shunchaki i == -1 holatini tekshiramiz: agar u rost bo‘lsa, demak stek bo‘sh, aks holda bo‘sh emas.
Stekni massiv yordamida amalga oshirish quyida keltirilgan: #include
using namespace std;
Int stek[20];
for (int j -0; j < 6; j++) (
cin>>a;
stek[i] = a;
if(i==-1)cout<<"Stek bo‘sh”,
cout << stek[i] << " stekning yuqori elementi"<cout<< "Yuqori elementini o‘chirish";
return 0;
Yuqorida stekni realizatsiya qilishning ikkita usulini ko‘rib chiqdik: 1) C++ shablonidan foydalanish.
2) Massivdan foydalanish.
Agar siz dasturingizda stekdan foydalansangiz va uni iloji boricha tezroq bajarishni afzal bilsangiz, unda stekni amalga oshirishning birinchi usulidan foydalaning.
Agar siz dasturning ishlashi haqida qayg‘urmasangiz, unda massiv orqali stek yaratilishidan foydalanishingiz mumkin. Birinchi usulda ishlatish va e’lon qilish tez va oson.
Quyida yana bir juda muhim ma’lumotlar tuzilishini - navbatni o‘rganamiz. Ushbu ma’lumotlar tuzilishi ko‘plab messenjerlarda (masalan, telegramda)foydalaniladi.
Navbatning metodlari. Navbat bilan ishlash uchun funksiyalarni bilish kerak: push(), pop(), front(), back(), empty().
1. Navbatga yangi element qo‘shish uchun push() funksiyasidan foydalanish kerak. Qavslar tarkibida biz qo‘shmoqchi bo‘lgan qiymat bo‘lishi kerak.
2. Agar biz birinchi elementni olib tashlashimiz kerak bo‘lsa, pop() funksiyasi bilan ishlashimiz kerak. Qavslar ichida endi ko‘rsatilishi kerak bo‘lgan narsa yo‘q, lekin qoidalarga ko‘ra, ular albatta mavjud bo‘lishi kerak. Ushbu funksiyalarga argument kerak emas: empty(), back() va front().
3. Agar navbatning birinchi elementiga murojaat qilishingiz kerak bo‘lsa, unda front() funksiyasi kerak.
4. back() funksiyasi navbatdagi oxirgi elementga kirishga yordam beradi.
5. Navbatning bo‘shligini bilish uchun empty() funksiyasidan foydalanishmumkin.
Massiv yordamida navbat yaratish. Yuqorida aytib o‘tganimizdek, navbatni massiv orqali amalga oshirish mumkin. Odatda, agar bunday navbat yaratilsa, massiv navbat deyiladi.
#include
#include // queue kutubxonasini ulash
using namespace std;
int main()
int N[7];
intstart-0, ends-0;
cout << ”7 ta son kiriting: ” << endl; for
(int h - 0; h < 7; h++)
int a;
N[ends++] = a;// Navbatga(massivga) element qo‘shish
cout << "Eng birinchi element: ” << N[start] << endl;
start++;
cout << "Navbatning eng oxirgi elementi: " << N[ends - 1];
if (start != ends) cout << ”Navbat to‘lgan!”,

Download 87.69 Kb.

Do'stlaringiz bilan baham:




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