ساختمان داده ها در جاوا Stack  یا پشته در جاوا

بنام خدا .

ادامه بحث ساختمان داده ها در جاوا رو با مبحث stack یا پشته پی میگیریم.

قبل از هرچیز  باید بونیم اصلا پشته چی هست .

یه  جعبه رو در نظر بگیرید که مثلا کتاباتون رو به ترتیب داخلش روی هم قرار میدید. وقتی خواستید  کتابارو بردارید اولین کتابی رو که داخلش گذاشتید آخرین کتابیه که میتونید از جعبه بیرون بیارید . شما در واقع یه پشته از کتابها رو داخل یک جعبه دارید.

اصطلاحا به ساختمان داده پشته , اول ورود آخر خروج یا filo یا lifo که مخفف (first in last out)  گفته میشه که توی بخش های مختلف  برنامه نویسی از سیستمهای ساده گرفته تا سیستم های پیشرفته  از این ساختمان داده استفاده میشه  و مفهومش توی جاهایی مثل کار با کتابخانه گرافیکی opengl بسیار کاربرد داره .

برای تعریف یمک پشته یا stack در جاوا به شکل زیر عمل میکنیم :

Stack stack=new Stack(); 

برنامه زیر رو بنویسید و اجرا کنید :

 import java.util.*;

public class StackDemo {
    //متد نمایش وارد کردن یک عنصر داخل پشته
    static void showpush(Stack st, int a) {
    //متد توکار وارد کردن در پشته
    st.push(new Integer(a));
    System.out.println("push(" + a + ")");
    System.out.println("stack: " + st);
}

//متد خارج کردن یک عنصر از پشته
static void showpop(Stack st) {
    System.out.print("pop -> ");
    //متد توکار خارج کردن یک عنصر از پشته
    //خارج کردن آخرین عنصری که در پشته وجو داره
    Integer a = (Integer) st.pop();
    System.out.println(a);
    System.out.println("stack: " + st);
}

//متد اصلی برنامه
public static void main(String args[]) {
    //تعریف یک پشته
    Stack st = new Stack();
    System.out.println("stack: " + st);
    //وارد کردن در پشته
    showpush(st, 42);
    showpush(st, 66);
    showpush(st, 99);
    //خارج کردن از پشته
    showpop(st);
    showpop(st);
    showpop(st);
    try {
        showpop(st);
    } catch (EmptyStackException e) {
        System.out.println("empty stack");
    }
 }
} 

نتیجه اجرای برنامه بالا :

  stack: [ ]
push(42)
stack: [42]
push(66)
stack: [42, 66]
push(99)
stack: [42, 66, 99]
pop -> 99
stack: [42, 66]
pop -> 66
stack: [42]
pop -> 42
stack: [ ]
pop -> empty stack 

دقت کنید مثلا عنصر 99 که اخرین عنصر وارد شده در پشته هست هنگام خروج اولین عنصر هست.

نکته : با متد ()empty میتونیم بررسی کنیم که stack خالی هست یا نه .

نکته : اگه میخوایید یک عنصر رو از بالای stack بردارید بدون اینکه حذف بشه از متد ()peek استفاده میکنیم که بالاترین عنصر رو برمیگردنه

نکته : متد search اگر عنصر مورد نظر را پیدا کرد مکان افستش از بالای پشته رو برمیگردونه.

تا جلسه بعد در پناه حق ...


فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد

نظرات شما نظر جدید