در 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
میتوان پشته را به راحتی مدیریت کرد و در بسیاری از الگوریتمها و کاربردهای برنامهنویسی استفاده نمود.