C++ Stacks

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