在Java中堆叠实现

时间:2020-02-23 14:34:25  来源:igfitidea点击:

在本教程中,我们将看到如何在Java中使用数组实现堆栈。

介绍

堆栈是演示的抽象数据类型 Last in first out (LIFO) behavior
我们将使用数组实施相同的行为。

虽然Java提供了所有抽象数据类型的实现,但是 StackQueueLinkedList但了解基本数据结构并自己实现它们是一个好主意。

请注意,阵列的堆栈实施本质上不是动态的。
我们可以通过链接列表实现堆栈以进行动态行为。

堆栈基本操作

堆栈支持以下基本操作。

push:将元素推到堆叠的顶部。
此操作将增加堆栈的大小1.
pop:从堆栈的顶部删除元素并返回已删除对象。
此操作将减少堆栈的大小1.

isEmpty:检查堆栈是否为空。
isFull:检查堆栈是否已满。
peek:从堆栈中返回顶部元素而不删除它。

使用数组堆叠实现

package org.igi.theitroad;
 
/**
 * @author igi Mandliya
 */
public class StackCustom {
	int size;
	int arr[];
	int top;
 
	StackCustom(int size) {
		this.size = size;
		this.arr = new int[size];
		this.top = -1;
	}
 
	public void push(int pushedElement) {
		if (!isFull()) {
			top++;
			arr[top] = pushedElement;
			System.out.println("Pushed element:" + pushedElement);
		} else {
			System.out.println("Stack is full !");
		}
	}
 
	public int pop() {
		if (!isEmpty()) {
			int returnedTop = top;
			top--;
			System.out.println("Popped element :" + arr[returnedTop]);
			return arr[returnedTop];
 
		} else {
			System.out.println("Stack is empty !");
			return -1;
		}
	}
 
	public int peek() {
		if(!this.isEmpty())
                        return arr[top];
                else
                {
                        System.out.println("Stack is Empty");
                        return -1;
                }
	}
 
	public boolean isEmpty() {
		return (top == -1);
	}
 
	public boolean isFull() {
		return (size - 1 == top);
	}
 
	public static void main(String[] args) {
		StackCustom StackCustom = new StackCustom(10);
		StackCustom.pop();
		System.out.println("=================");
		StackCustom.push(10);
		StackCustom.push(30);
		StackCustom.push(50);
		StackCustom.push(40);
		System.out.println("=================");
		StackCustom.pop();
		StackCustom.pop();
		StackCustom.pop();
		System.out.println("=================");
	}
}