队列是一种先进先出的数据结构,是只允许在一端进行插入,另一端进行删除操作的线性表,在队尾插入,队头删除,其本质仍是一个数组。栈是一种“先进后出”的一种数据结构,有压栈出栈两种操作方式。如下图:

队列的具体实现如下:
import java.util.Arrays;
class Queue{
// 存储队列的元素
private int[] queue;
// 队头
private int front;
// 队尾
private int rear;
// 15
public Queue() {
this(15);
}
// 自定义队列大小
public Queue(int size) {
this.queue =new int[size];
this.rear = 0;
this.front = 0;
}
// 入队操作
public void offer(int val){
if(full()){
//如果队列满,则进行队列的扩容
this.queue = Arrays.copyOf(this.queue,this.queue.length*2);
}
this.queue[rear] = val;
this.rear = (this.rear + 1) % this.queue.length; //循环队列
}
// 出队,并把元素返回
public int poll(){
int val = queue[front];
this.front++;
return val;
}
// 查看队头元素
public int peek(){
return this.queue[front];
}
// 判断队满
public boolean full(){
return (this.rear + 1) % this.queue.length == this.front;
}
// 判断队空
public boolean empty(){
return rear == front;
}
public String toString() {
String str=new String();
for(int i=0;i<this.rear;i++) {
str = str + this.queue[i] + " ";
}
return str;
}
}
public class QueueTest {
public static void main(String[] args) {
Queue queue = new Queue();
for (int i = 0; i < 20; i++) {
queue.offer(i+1);
}
System.out.println(queue);
}
}
栈的具体实现如下:
import java.util.Arrays; /** * 顺序栈代码实现 */ class SeqStack{ // 存储栈元素的数组 private int[] stack; // 标识栈顶的位置 private int top; // 默认构造,初始大小为10 public SeqStack() { this(10); } // 用户指定栈的初始大小 public SeqStack(int size) { this.stack = new int[size]; this.top = 0; } // 入栈操作 public void push(int val){ if (full()) { this.stack = Arrays.copyOf(this.stack, this.stack.length * 2); } this.stack[this.top++]=val; } // 出栈,并把出栈的元素返回 public int pop(){ this.top--; int val=this.stack[top]; return val; } // 返回栈顶元素 public int top(){ return this.stack[top-1]; } // 判断栈空 public boolean empty(){ return this.top == 0; } // 判断栈满 public boolean full(){ return this.stack.length==this.top; } // 返回栈元素的个数 public int size(){ return this.top; } // 自定义栈元素的打印方式 @Override public String toString() { String str=new String(); for(int i=0;i<this.top;i++) { str = str + this.stack[i] + " "; } return str; } } /** * 描述: 顺序栈代码测试 */ public class SeqStackTest { public static void main(String[] args) { SeqStack stack = new SeqStack(); for (int i = 0; i < 30; i++) { stack.push(i+1); } System.out.println(stack.size()); while (!stack.empty()){ System.out.print(stack.pop() + " "); } System.out.println(); System.out.println(stack.size()); } }
浙公网安备 33010602011771号