Oxirgi kelgan birinchi ketadi



Yüklə 91,76 Kb.
səhifə1/4
tarix23.12.2023
ölçüsü91,76 Kb.
#157843
  1   2   3   4
8-Amaliyot. (Stack) (4)


Konteyner steki. Stackning asosiy operatsiyalari
Stek bu LIFO (Last In - First Out - "oxirgi kelgan – birinchi ketadi"), shunday o’zgaruvchan uzunlikdagi ketma-ketlik, ro’yhatki, unda tuzilmaga elementlarni kiritish va chiqarish amallari bir tomondan, ya’ni stek uchidan amalga oshiriladi. Stek ustida bajariladigan asosiy amallar:

    • yangi elementni qo„shish;

    • elementni o„chirish;

    • stek elementlar sonini aniqlash;

    • stekni tozalash.

Stekni statik xotirada vektor ko’rinishida ifodalashda stek uzunligini ko„rsatuvchi Ko’rsatkich ishlatiladi. Bu Ko’rsatkich stekdagi 1-bo’sh joyni ko„rsatadi. Dastlab hali stek bo’shligida bu Ko’rsatkich R=0 bo’ladi. Quyidagi rasmda stekda 6 ta element mavjudligi uchun R=7 bo’ladi (1-rasm).


kirish chiqish

Stek boshi


R=7
Stek tubi

1-rasm. Stek tuzilmasi


Stekka yangi element kiritilayotganda stek Ko’rsatkichi (R) ko’rsatayotgan adresga yoziladi va shundan keyin bu Ko’rsatkich bittaga oshiriladi. Stekdan elementni o„chirishda Ko’rsatkichning qiymati bittaga kamaytiriladi va shu adresdagi element o„chiriladi. Stekni tozalash amalini bajarish uchun stek



Ko’rsatkichi R ga stek uchun ajratilgan xotira sohasining boshlang„ich adresi qiymati beriladi. R stekdagi elementlar sonini bildiradi.

Operatsiyalar

stek::stack ()


  • Sukutlikda konstruktor.

  • Bo’sh stekni yaratadi.

  • explicit stek < ::stack (const Containers cont)

  • cont elementlari bilan initsializatsiya bo’lgan stekni yaratadi

  • cont barcha elementlari stekga nusxalanadi size_type stek::size () const

  • Joriy elementlar sonini qaytaradi.

  • Stekda elementlarning yo'qligini tekshirish uchun empty() funktsiyasidan foydalanish tavsiya etiladi, chunki u tez ishlaydi.

bool stek::empty ( ) const

  • Stekning bo'shligini tekshiradi.

  • Ekvivalent(lekin tez ishlashi mumkin):

stek: :size()==0
void stek::push (const value_type& elem)
- Elem ning nusxasini stekga kiritadi, natijada u yangi birinchi elementga aylanadi.
value_type& stek::top( )
const valuejiypeb, stek::top( ) const

  • Ikkala shakllar ham stekning yuqori elementini qaytaradi, ya'ni oxirgi kiritilgan elementni (barcha boshqa elementlardan keyin) qaytaradi.

  • Chaqirishdan oldin, stek kamida bitta element (size( )> 0) mavjudligiga ishonch hosil qilishingiz kerak, aks holda qo'ng'iroq chaqirilishning oldindan aniqlanmaydigan oqibatlariga olib keladi.

  • Birinchi shakl konstantasiz steklar uchun murojaatni qaytaradi, bunisi stekdagi yuqori elementni o'zgartirishga imkon beradi. Bunisi yaxshimi yoki yo'qmi, o'zingni tanlang.

  • void stek::ror( )

  • Stekdan yuqori elementni, ya'ni oxirgi kiritilgan elementni (barcha boshqa elementlardan keyin) o'chiradi.

  • Funktsiyaning qaytish qiymati yo'q. Yuqori elementning qiymatini qayta ishlash uchun avval top() funktsiyasini chaqirishingiz kerak.

  • Chaqirishdan oldin, stek kamida bitta element (size( )> 0) mavjudligiga

ishonch hosil qilishingiz kerak, aks holda chaqiruv kutilmagan holatga olib keladi.

  • bool taqqoslash (const sgek& stackl. const stek& stack2)

  • bir xil turdagi ikkita steklarni taqqoslash natijasini qaytaradi.

  • taqqoslash parametri quyidagi operatsiyalardan biridir:

  • operator == operator != operator < operator > operator <= operator >=

  • Steklar bir-biriga teng hisoblanadi, agar ularda elementlar soni bir xil bo’lsa, agar elementlarning juftligi mos kelsa va bir hil ketma-ketligda bo’lsa (ya'ni tenglik uchun ikkita mos keladigan elementni tekshiruvchi har doim true ni beradi).

  • Konteynerlar orasidagi "katta/kichik" nisbati leksik mezonlarga muvofiq tekshiriladi, leksikografiya mezonlari leksicographical_cornpare() algoritmining tavsifida ko'rib chiqiladi.




Yüklə 91,76 Kb.

Dostları ilə paylaş:
  1   2   3   4




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

    Ana səhifə