使用Array实现Java堆栈

本教程给出了使用Array 实现Stack数据结构的示例。堆栈提供将新对象放在堆栈上(方法push())并从堆栈中获取对象(方法pop())。堆栈根据后进先出(LIFO)返回对象。请注意,JDK提供了一个默认的Java堆栈实现作为类java.util.Stack

适用于所有堆栈实现的两个强制操作是:

  • push():数据项放置在堆栈指针指向的位置。
  • pop():从堆栈指针指向的位置删除并返回数据项。

某些严重依赖堆栈的环境可能会根据要求提供额外的操作。Stack的最常见用途是表达式求值和语法分析。您也可以在字处理器的undo \ redo操作中找到它们。

Java堆栈实现源代码

下面的程序是Stack数据结构的示例实现。您可以根据需要随意修改源代码。

package com.howtodoinjava.datastructure;

import java.util.Arrays;

public class CustomStack <E> 
{
	private int size = 0;
	private static final int DEFAULT_CAPACITY = 10;
	private Object elements[];

	public CustomStack() {
		elements = new Object[DEFAULT_CAPACITY];
	}

	public void push(E e) {
		if (size == elements.length) {
			ensureCapacity();
		}
		elements[size++] = e;
	}

	@SuppressWarnings("unchecked")
	public E pop() {
		E e = (E) elements[--size];
		elements[size] = null;
		return e;
	}

	private void ensureCapacity() {
		int newSize = elements.length * 2;
		elements = Arrays.copyOf(elements, newSize);
	}
	
	@Override
    public String toString()
    {
         StringBuilder sb = new StringBuilder();
         sb.append('[');
         for(int i = 0; i < size ;i++) {
             sb.append(elements[i].toString());
             if(i < size-1){
                 sb.append(",");
             }
         }
         sb.append(']');
         return sb.toString();
    }
}

现在让我们通过从堆栈中推送和弹出一些条目来测试我们的Stack实现。

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

		stack.push(10);
		stack.push(20);
		stack.push(30);
		stack.push(40);
		
		System.out.println(stack);
		
		System.out.println( stack.pop() );
		System.out.println( stack.pop() );
		System.out.println( stack.pop() );
		
		System.out.println( stack );
	}
}
输出:

[10,20,30,40]
40
三十
20
[10]

这就是关于Java Stack Implementation示例的这个简单但重要的概念。

猜你喜欢

转载自blog.csdn.net/u010675669/article/details/86594714