Skip to content

Steklar (Stacks)

C++ Stek

Stek bir nechta elementni maxsus tartibda saqlaydi — LIFO.

LIFOLast 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

cpp
// Stek kutubxonasini import qilish
#include <stack>

Stek yaratish

Stek yaratish uchun stack kalit so'zini ishlating: stack<tur> stekNomi.

MISOL

cpp
// 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

cpp
// 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
Volvo

Stek elementlariga kirish

Stekda faqat tepadagi elementga kirish mumkin, buning uchun .top() funksiyasi ishlatiladi:

MISOL

cpp
// Tepadagi elementga kirish
cout << cars.top();  // "Mazda" chiqaradi

Tepadagi elementni o'zgartirish

.top() funksiyasi yordamida tepadagi elementning qiymatini ham o'zgartirish mumkin:

MISOL

cpp
// Tepadagi elementning qiymatini o'zgartirish
cars.top() = "Tesla";

// Tepadagi elementga kirish
cout << cars.top();  // Endi "Mazda" o'rniga "Tesla" chiqaradi

Element olib tashlash

.pop() funksiyasi yordamida stekdan element olib tashlash mumkin. Bu oxirgi qo'shilgan elementni olib tashlaydi:

MISOL

cpp
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

cpp
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

cpp
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.