mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-11-01 03:24:24 +08:00 
			
		
		
		
	 a005c6ebd3
			
		
	
	a005c6ebd3
	
	
	
		
			
			* Update avatar's link in the landing page * Bug fixes * Move assets folder from overrides to docs * Reduce figures' corner radius * Update copyright * Update header image * Krahets -> krahets * Update the landing page
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /**
 | |
|  * File: array_stack.java
 | |
|  * Created Time: 2022-11-25
 | |
|  * Author: krahets (krahets@163.com)
 | |
|  */
 | |
| 
 | |
| package chapter_stack_and_queue;
 | |
| 
 | |
| import java.util.*;
 | |
| 
 | |
| /* 基于数组实现的栈 */
 | |
| class ArrayStack {
 | |
|     private ArrayList<Integer> stack;
 | |
| 
 | |
|     public ArrayStack() {
 | |
|         // 初始化列表(动态数组)
 | |
|         stack = new ArrayList<>();
 | |
|     }
 | |
| 
 | |
|     /* 获取栈的长度 */
 | |
|     public int size() {
 | |
|         return stack.size();
 | |
|     }
 | |
| 
 | |
|     /* 判断栈是否为空 */
 | |
|     public boolean isEmpty() {
 | |
|         return size() == 0;
 | |
|     }
 | |
| 
 | |
|     /* 入栈 */
 | |
|     public void push(int num) {
 | |
|         stack.add(num);
 | |
|     }
 | |
| 
 | |
|     /* 出栈 */
 | |
|     public int pop() {
 | |
|         if (isEmpty())
 | |
|             throw new IndexOutOfBoundsException();
 | |
|         return stack.remove(size() - 1);
 | |
|     }
 | |
| 
 | |
|     /* 访问栈顶元素 */
 | |
|     public int peek() {
 | |
|         if (isEmpty())
 | |
|             throw new IndexOutOfBoundsException();
 | |
|         return stack.get(size() - 1);
 | |
|     }
 | |
| 
 | |
|     /* 将 List 转化为 Array 并返回 */
 | |
|     public Object[] toArray() {
 | |
|         return stack.toArray();
 | |
|     }
 | |
| }
 | |
| 
 | |
| public class array_stack {
 | |
|     public static void main(String[] args) {
 | |
|         /* 初始化栈 */
 | |
|         ArrayStack stack = new ArrayStack();
 | |
| 
 | |
|         /* 元素入栈 */
 | |
|         stack.push(1);
 | |
|         stack.push(3);
 | |
|         stack.push(2);
 | |
|         stack.push(5);
 | |
|         stack.push(4);
 | |
|         System.out.println("栈 stack = " + Arrays.toString(stack.toArray()));
 | |
| 
 | |
|         /* 访问栈顶元素 */
 | |
|         int peek = stack.peek();
 | |
|         System.out.println("栈顶元素 peek = " + peek);
 | |
| 
 | |
|         /* 元素出栈 */
 | |
|         int pop = stack.pop();
 | |
|         System.out.println("出栈元素 pop = " + pop + ",出栈后 stack = " + Arrays.toString(stack.toArray()));
 | |
| 
 | |
|         /* 获取栈的长度 */
 | |
|         int size = stack.size();
 | |
|         System.out.println("栈的长度 size = " + size);
 | |
| 
 | |
|         /* 判断是否为空 */
 | |
|         boolean isEmpty = stack.isEmpty();
 | |
|         System.out.println("栈是否为空 = " + isEmpty);
 | |
|     }
 | |
| }
 |