Steklar (Stacks)
C++ Stek
Stek bir nechta elementni maxsus tartibda saqlaydi — LIFO.
LIFO — Last In, First Out (Oxirgi kirgan — birinchi chiqadi) degan ma'noni anglatadi. LIFO ni tasavvur qilish uchun, bir to'p krep haqida o'ylang, kreplar tepadan ham qo'shiladi, ham olib tashlanadi. Shunday qilib, krepni olib tashlaganda, u har doim oxirgi qo'shilgan bo'ladi.
Vektorlardan farqli o'laroq, stekdagi elementlarga indeks orqali kirish mumkin emas. Elementlar tepadan qo'shiladi va olib tashlanadi, shuning uchun faqat tepadagi elementga kirish mumkin.
Stekdan foydalanish uchun <stack> sarlavha faylini import qiling:
MISOL
// Stek kutubxonasini import qilish
#include <stack>Stek yaratish
Stek yaratish uchun stack kalit so'zini ishlating: stack<tur> stekNomi.
MISOL
// Satrlarni saqlaydigan cars nomli stek yaratish
stack<string> cars;ESLATMA
Stekga vektorlar kabi e'lon vaqtida element qo'shish mumkin emas.
Element qo'shish
Stekga element qo'shish uchun .push() funksiyasidan foydalaning:
MISOL
// Satrlarni saqlaydigan cars nomli stek yaratish
stack<string> cars;
// Stekga elementlar qo'shish
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");Stek quyidagicha ko'rinadi (oxirgi qo'shilgan element tepada bo'ladi):
Mazda (tepadagi element)
Ford
BMW
VolvoStek elementlariga kirish
Stekda faqat tepadagi elementga kirish mumkin, buning uchun .top() funksiyasi ishlatiladi:
MISOL
// Tepadagi elementga kirish
cout << cars.top(); // "Mazda" chiqaradiTepadagi elementni o'zgartirish
.top() funksiyasi yordamida tepadagi elementning qiymatini ham o'zgartirish mumkin:
MISOL
// Tepadagi elementning qiymatini o'zgartirish
cars.top() = "Tesla";
// Tepadagi elementga kirish
cout << cars.top(); // Endi "Mazda" o'rniga "Tesla" chiqaradiElement olib tashlash
.pop() funksiyasi yordamida stekdan element olib tashlash mumkin. Bu oxirgi qo'shilgan elementni olib tashlaydi:
MISOL
stack<string> cars;
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
// Oxirgi qo'shilgan elementni olib tashlash (Mazda)
cars.pop();
// Tepadagi elementga kirish (Endi Ford)
cout << cars.top();Stek hajmi
.size() funksiyasi yordamida stekdagi elementlar sonini bilish mumkin:
MISOL
cout << cars.size();Stek bo'sh yoki yo'qligini tekshirish
.empty() funksiyasi stek bo'sh bo'lsa 1 (true), bo'lmasa 0 (false) qaytaradi:
MISOL
stack<string> cars;
cout << cars.empty(); // 1 chiqaradi (stek bo'sh)Steklar va navbatlar
Steklar ko'pincha Navbatlar bilan birga tilga olinadi, bu keyingi sahifada tasvirlangan o'xshash ma'lumot tuzilmasi.
