Stek (inglizcha stack stek; stek o'qiladi) bu lifo tamoyili bo'yicha tashkil etilgan elementlarning ro'yxati bo'lgan mavhum ma'lumotlar turi


Download 39.61 Kb.
bet3/4
Sana02.01.2022
Hajmi39.61 Kb.
#190899
1   2   3   4
Bog'liq
Стеки в с узб

else

{

return ps->items[--ps->size];

}

}



Qo'llash sohasi [tahrirlash | kodni tahrirlash]

Dasturiy stek ko'rinishi daraxt yoki grafik kabi ma'lumotlar tuzilmalarini bosib o'tish uchun ishlatiladi. Rekursiv funktsiyalardan foydalanganda stek ham ishlatiladi, lekin uning apparati ko'rinishi. Ushbu maqsadlardan tashqari, stek teskari Polsha yozuvlari hisob-kitoblarini amalga oshiradigan stack mashinasini tashkil qilish uchun ishlatiladi. Stek mashinasidan foydalanish misoli Unix dasturi DC.

Qo'ng'iroqlar to'plami pastki dasturlardan qaytish nuqtalarini kuzatib borish uchun ishlatiladi.

Arifmetik koprotsessorlar, programlanadigan mikrokalkulyatorlar va fort tilida stek hisoblash modeli ishlatiladi [7].

Stek g'oyasi stack mashinasida qatlamlangan dasturlash tillari orasida qo'llaniladi.

6

5

1

2

5

9

1-rasmda siz 6 ta raqamni ko'rishingiz mumkin: 6, 5, 1, 2, 5, 9. Aytgancha, biz ularni bir xil tartibda chiqaramiz. Masalan, 1 raqamini chiqarish uchun avval 6 va 5 raqamlarini, so'ngra allaqachon 1 ni ajratib olishimiz kerak, chunki bu stack, biz bu raqamlarni teskari tartibda qo'shdik. Aniqroq qilib aytganda: 9, 5, 2, 1, 5, 6.


Stekda qator kabi indekslar mavjud emas, demak siz ma'lum bir elementga murojaat qila olmaysiz. Buning sababi, stek bog'langan ro'yxatlar asosida tuzilgan.

Bu shuni anglatadiki, har bir element (oxirgisidan tashqari - NULL-ga ishora qiladi, agar oddiy so'zlar bilan aytganda, hech narsaga ishora qilmasa) keyingi elementga ko'rsatgichga ega. Ammo ko'rsatgich bo'lmagan element mavjud - birinchisi (yoki uni bosh deb ham atashadi).

Ehtimol siz oddiy qatorni ishlatishingiz mumkin bo'lganida, nima uchun bog'langan ro'yxatlardan foydalaning? Bundan tashqari, hatto yangi boshlovchi ham buni tushunish uchun ko'p vaqt talab qilmaydi.

Ammo shablonlar stekining butun mohiyati elementlarni qo'shish va olib tashlashdan iborat. Ushbu operatsiyalar doimiy vaqt ichida amalga oshiriladi (bu yaxshi plyus).

Aytgancha, ba'zi dasturchilar massivda stek hosil qilishadi. Stakdan foydalanishning bu usuli haqida biroz keyinroq gaplashamiz.

C ++ da qanday qilib stek yaratish mumkin

Dasturimizning boshida stack andozasidan foydalanish uchun kutubxonani - ni o'z ichiga olishimiz kerak.

• Yangi satrda stack so'zlarini yozishimiz kerak.

- bu erda biz stakda saqlanadigan ma'lumotlar turini yozishimiz kerak.

- bu erda hamma narsa sizga tushunarli bo'lishi kerak.

Stack usullari

Usullar bu navbat va stek kabi konteynerlar uchun ishlatiladigan funktsiyalardir. Endi biz barcha quyidagi funktsiyalarni quyidagi misolda tahlil qilamiz:




1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



19

20

21



22

23

24



25

26

27



28

29

30



31

32

33



#include

#include   // подключаем библиотеку для

                  // использования стека

using namespace std;

 

int main() {



  setlocale(LC_ALL,"rus");

  stack steck;  // создаем стек

 

  int i = 0;

 

  cout << "Введите шесть любых целых чисел: " << endl; // предлагаем пользователю

                                                      // ввести 6 чисел

  while (i != 10) {

    int a;

    cin >> a;

 

    steck.push(a);  // добавляем введенные числа



    i++;

  }

  

  if (steck.empty()) cout << "Стек не пуст";  // проверяем пуст ли стек (нет)

 

  cout << "Верхний элемент стека: " << steck.top() << endl; // выводим верхний элемент



  cout << "Давайте удалим верхний элемент " << endl;

 

  steck.pop();  // удаляем верхний элемент

 

  cout << "А это новый верхний элемент: " << steck.top(); // выводим уже новый

                                                          // верхний элемент

  system("pause");

  return 0;

}


Va mana ushbu dastur tahlili:

18-qatorda: push () funktsiyasi yordamida buyumni stakka suramiz. Qavslar tarkibida biz qo'shmoqchi bo'lgan qiymat bo'lishi kerak.

Aytgancha, agar siz o'zingizning dasturlaringizda bunday funktsiyalarni yaratmoqchi bo'lsangiz (mutaxassislar kabi) yoki ularning qanday ishlashini bilmoqchi bo'lsangiz, unda bularning barchasi haqida bilib olishingiz mumkin.

22-qatorda: stack bo'shligini tekshirish uchun empty () funktsiyasidan foydalandik.

• Agar bu funktsiya haqiqiy bo'lsa, stek toza bo'ladi.

• Agar natija noto'g'ri bo'lsa, demak stakda bir narsa bor.

27-qatorda: stakning yuqori qismini ochish uchun pop () funktsiyasi ishlatilgan.

Pop () funktsiyasida, push () funktsiyasidan farqli o'laroq, qavs ichida biror narsani ko'rsatishning hojati yo'q, lekin qavsning o'zi bo'lishi kerak. Funktsiyalar uchun ditto: empty () va top ()!

24 va 29 qatorlarda: biz stackning yuqori elementiga murojaat qilishga qaror qildik, buning uchun top () funktsiyasidan foydalanganmiz.

Keling, ushbu dasturning natijasi qanday bajarilishini ko'rib chiqamiz:

stack.cpp


Download 39.61 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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