java 数据结构之栈与队列
Java 数据结构之栈与队列 Java 数据结构之栈与队列是计算机科学中的一种基本数据结构,它们都是用于存储和处理数据的集合。栈和队列都是线性数据结构,但是它们的实现方式和使用场景不同。 一、栈(Stack) 栈是一种后进先出的数据结构(Last In First Out,LIFO),即最后添加的元素将是第一个被取出的元素。栈可以使用数组或链表来实现。栈的基本操作包括入栈、出栈、取栈顶元素和判断栈是否为空。 在 Java 中,可以使用数组来模拟栈的实现,如下所示: ```java public class Statck { private int maxSize; //栈的最多元素数 private int top; //栈顶指针 private int len; //栈的深度 private int[] arrStack; // 模拟栈 //栈的初始化 public Statck(int s){ maxSize = s; len =0; top= -1; arrStack = new int[s]; } //入栈操作 public void push(int m) { if(top == maxSize-1) { //处理栈溢出 System.out.println("栈溢出!"); return; } arrStack[++top] = m; //将元素压入栈中 len++; //栈深度加1 } //出栈操作 public int pop() { if(top == -1) { //处理栈为空 System.out.println("栈为空!"); return -1; } int temp = arrStack[top--]; //将栈顶元素取出 len--; //栈深度减1 return temp; } //取栈顶元素 public int peek() { if(top == -1) { //处理栈为空 System.out.println("栈为空!"); return -1; } return arrStack[top]; //返回栈顶元素 } //判断栈是否为空 public boolean isEmpty() { return (len==0); } //判断栈是否为满 public boolean isFull() { return (len == maxSize); } //返回栈的深度 public int size() { return len; } } ``` 二、队列(Queue) 队列是一种先进先出的数据结构(First In First Out,FIFO),即最先添加的元素将是第一个被取出的元素。队列可以使用数组或链表来实现。队列的基本操作包括入队、出队、取队首元素和判断队列是否为空。 在 Java 中,可以使用数组来模拟队列的实现,如下所示: ```java public class Queue { private int maxSize; //队列的最大长度 private int front; //队列的头指针 private int rear; //队列的尾指针 private int empty; //队列元素的个数 private int[] arrQueue; //模拟队列 //队列的初始化 public Queue(int s) { maxSize = s; front = 0; rear = -1; empty = 0; arrQueue = new int[s]; } //入队操作 public void insert(int m) { if(rear == maxSize-1) //处理循环 rear = -1; arrQueue[++rear] = m; //将元素添加到队列末尾 empty++; //队列元素个数加1 } //出队操作 public int remove() { int temp = arrQueue[front++]; //将队首元素取出 if(front == maxSize) //处理循环 front = 0; empty--; //队列元素个数减1 return temp; } //判断队列是否为空 public boolean isEmpty() { return (empty==0); } //判断队列是否为满 public boolean isFull() { return (empty == maxSize); } //返回队列的长度 public int size() { return empty; } } ``` 在 Java 中,我们可以使用这些实现来处理各种数据结构问题,如实现栈和队列的基本操作、解决递归问题、实现树和图的遍历等等。