پشته یا Stack یک حافظه ی First in – Last out است. یعنی داده ای که زودتر در این حافظه قرار میگیرد، دیرتر از همه هم از حافظه خارج میشود.
معمولا برای پشته متدهای زیر تعریف میشود:
متد push: یک داده به انتهای پشته اضافه میکند.
متد pop: آخرین داده در پشته را برمیگرداند و سپس از پشته حذف میکند.
متد peek: آخرین داده در پشته را برمیگرداند ولی آن را از پشته حذف نمیکند.
متد isEmpty: در صورتی که پشته خالی باشد مقدار true را برمیگرداند.
متد isFull: در صورتی که ظرفیت حافظه ی پشته پر شده باشد مقدار true را برمیگرداند.
متد getMaxSize: حداکثر اندازهی پشته را برمیگرداند.
متد getSize: تعداد اعضای پر در پشته را برمیگرداند.
Stack.java
/*Stack
06 Dec 2015
Java Language
By: Sina Moradi
http://Samiantec.ir
*/
public class Stack {
private int[] data;
private int top;
public Stack() {
this(100);
}
public Stack(int size) {
if (size < 1) {
System.out.println("Error: Invalid size!");
System.exit(0);
}
data = new int[size];
top = -1;
}
public boolean isFull() {
return top == data.length - 1;
}
public void push(int x) {
if (isFull()) {
System.out.println("Error: Stack is full!");
System.exit(0);
}
data[++top] = x;
}
public boolean isEmpty() {
return top == -1;
}
public int pop() {
if (isEmpty()) {
System.out.println("Error: Stack is empty!");
System.exit(0);
}
return data[top--];
}
public int peek() {
if (isEmpty()) {
System.out.println("Error: Stack is empty!");
System.exit(0);
}
return data[top];
}
public int getMaxSize() {
return data.length;
}
public int getSize() {
return top+1;
}
public String toString() {
String t="";
for (int i=0;i <= top;i++)
t += data[i] + " ";
return t;
}
}
Test.java
/*Test
06 Dec 2015
Java Language
By: Sina Moradi
http://Samiantec.ir
*/
public class Test {
public static void main(String[] args) {
Stack a=new Stack();
a.push(5);
a.push(6);
System.out.println(a.peek());
a.push(3);
System.out.println(a.pop());
System.out.println(a.toString());
a.push(1);
System.out.println(a.toString());
}
}