منبع اصلی نوشتار زیر در این لینک قرار دارد

معرفی کلاس stack در زبان جاوا

زبان جاوا خودش پیاده سازی کلاس Stack را از قبل دارد و آن را به سادگی در اختیار برنامه نویسان قرار می دهد. در این مطلب طور خلاصه شما را با این کلاس و نحوه استفاده از آن آشنا می کنیم.

Stack یا پشته چیست؟
  • Stack یک نوع داده انتزاعی (ADT) بسیار مفید در برنامه نویسی است که برای نگهداری مجموعه ای از مقادیر استفاده می شود.
  • ترتیب ورود و خروج مقادیر به این ساختار داده (نوع داده) انتزاعی، به صورت LIFO (آخرین ورودی-اولین خروجی یا Last-in-First-Out) است. به این معنی که همواره آخرین مقدار وارد شده به stack در هنگام تلاش برای خارج کردن یک مقدار، اولین (بالاترین) مقداری است که خارج می شود.
  • عمده عملیات ها روی ساختمان داده انتزاعی stack ، در انتهای لیست آن انجام می شود که اصطلاحاً بالای stack است.

نمودار زیر را که ببینید، می توانید به خوبی متوجه شوید که stack یا پشته چگونه طراحی شده است.

 

stack یا پشته چیست

stack یا پشته

اعمال روی کلاس Stack (پشته) در جاوا

push : یک مقدار جدید را در بالای پشته قرار می دهد (با درجه زمانی (O(1).

pop : آخرین مقدار وارد شده (در بالای پشته) را حذف و مقدار آن را بر می گرداند (با درجه زمانی (O(1).

peek : مقدار آخرین عنصر وارد شده (در بالای پشته) را بر می گرداند اما آن را حذف نمی کند (با درجه زمانی (O(1).

isEmpty : بر اساس خالی بودن یا نبودن پشته، به ترتیب مقدار true یا false را خروجی می دهد (با درجه زمانی (O(1).

getSize : اندازه پشته را با درجه زمانی (O(1 بر می گرداند (تعداد عناصر وارد شده و برداشته نشده در ساختمان داده انتزاعی پشته).

 

و اما نمونه کد زیر شما را با نحوه نوشتاری استفاده از این کلاس ساختمان داده انتزاعی در زبان جاوا آشنا می کند:

import java.util.Stack;

public class StackClassJava {

    public void push(Stack<Integer> stack, int j){
        System.out.println("Inserting " + j +  " into Stack.");
        stack.push(j);
    }

    public Integer pop(Stack<Integer> stack){
        if(stack.empty()==false){
            System.out.println("Popping Element from stack");
            return stack.pop();
        }else {
            System.out.println("Stack is empty");
            return null;
        }
    }

    public Integer peek(Stack<Integer> stack){
        if(stack.empty()==false){
            System.out.println("peeking Element from stack");
            return stack.peek();
        }else {
            System.out.println("Stack is empty");
            return null;
        }
    }

    public Integer getSize(Stack<Integer> stack){
        System.out.println("Stack Size: " +  stack.size());
        return stack.size();
    }

    public Boolean isEmpty(Stack<Integer> stack){
        return stack.isEmpty();
    }

    public void search(Stack<Integer> stack, int element){
        System.out.println("Searching element " + element + " in Stack");
        int index = stack.search(element);
        if(index==-1){
            System.out.println(element + " not found in Stack");
        }else{
            System.out.println(element + " found in Stack at position: " + index);
        }
    }

    public void displayStack(Stack<Integer> stack){
        System.out.println(stack);
    }

    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();

        StackClassJava scj = new StackClassJava();

        //push operation
        scj.push(stack, 1);
        scj.push(stack, 2);
        scj.push(stack, 3);

        //pop operation
        System.out.println("Popped Element: " + scj.pop(stack));
        System.out.println("Popped Element: " + scj.pop(stack));
        scj.displayStack(stack);
        scj.push(stack,6);
        System.out.println("Peeking Element: " + scj.peek(stack));
        scj.displayStack(stack);
        //check if stack is empty
        System.out.println("Is Stack Empty: " + scj.isEmpty(stack));
        System.out.println("Stack Size: " + scj.getSize(stack));
        //search element in stack
        scj.search(stack, 5);
        scj.search(stack, 1);
    }
}

خروجی:

Inserting 1 into Stack.
Inserting 2 into Stack.
Inserting 3 into Stack.
Popping Element from stack
Popped Element: 3
Popping Element from stack
Popped Element: 2
[1]
Inserting 6 into Stack.
peeking Element from stack
Peeking Element: 6
[1, 6]
Is Stack Empty: false
Stack Size: 2
Stack Size: 2
Searching element 5 in Stack
5 not found in Stack
Searching element 1 in Stack
1 found in Stack at position: 2

 



برچسب ها : ,