در C++، Stack (پشته) یکی از ساختارهای دادهای LIFO (Last In, First Out) است، یعنی آخرین عنصری که وارد میشود، اولین عنصری است که خارج میشود.
STL یک کلاس آماده به نام stack دارد که مدیریت پشته را ساده میکند.
🔹 1️⃣ ایجاد Stack
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s; // پشته خالی
return 0;
}
🔹 2️⃣ اضافه کردن عناصر
s.push(10); // اضافه به پشته
s.push(20);
s.push(30);
cout << "Top element: " << s.top() << endl; // نمایش عنصر بالای پشته (30)
-
()push→ اضافه کردن عنصر به بالا -
()top→ مشاهده عنصر بالا بدون حذف
🔹 3️⃣ حذف عناصر
s.pop(); // حذف عنصر بالای پشته
cout << "New top: " << s.top() << endl; // 20
توجه:
()popفقط عنصر را حذف میکند و مقدار آن را برنمیگرداند.
🔹 4️⃣ بررسی وضعیت Stack
if(s.empty()) {
cout << "Stack is empty" << endl;
}
cout << "Size: " << s.size() << endl; // تعداد عناصر موجود
🔹 5️⃣ استفاده از Stack با حلقه
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
while(!s.empty()) {
cout << s.top() << " "; // نمایش عنصر بالای پشته
s.pop(); // حذف عنصر
}
return 0;
}
📌 خروجی:
3 2 1
🔹 6️⃣ نکات کلیدی
-
Stack LIFO است؛ آخرین عنصر وارد شده، اولین خروجی را دارد.
-
در STL، Stack فقط دسترسی به بالای پشته و عملیات push/pop را فراهم میکند.
-
برای دسترسی تصادفی یا پیمایش داخل Stack، باید از container زیرین مثل
vectorیاlistاستفاده کنید. -
Stack مناسب محاسبات بازگشتی، بررسی پرانتزها، Undo در برنامهها و الگوریتمهای DFS است.
💡 خلاصه:
Stack در C++ یک ساختار دادهای ساده و کارآمد برای مدیریت دادهها به صورت LIFO است. با استفاده از توابع push, pop, top, empty و size میتوان پشته را به راحتی مدیریت کرد و در بسیاری از الگوریتمها و کاربردهای برنامهنویسی استفاده نمود.
HTML
Tailwind Css
Bootstrap 5
Java script
++C
Python
Three.js
Gsap
Sass
SQL
React