今天我们来聊聊用Java语言编程实现栈和队列操作
1、栈(stack)
//栈的底层我们使用数组来存储
int[] elements;
//通过构造方法对数组进行初始化操作
public MyStack() {
elements = new int[0];
}
2.压栈
//压入元素(压栈操作)
public void push(int element) {
//创建新数组
int[] newArr = new int[elements.length+1];
//把旧数组中的元素赋值给新数组
for(int i = 0;i<elements.length;i++) {
newArr[i] = elements[i];
}
//将目标元素添加到新数组最后位置处
newArr[elements.length] = element;
//将新数组的引用赋值给旧数组
elements = newArr;
}
3.弹栈
//取出栈顶元素
public int pop() {
//判断栈中是否有元素
if(elements.length == 0) {
throw new RuntimeException("栈中没有元素!");
}
//取出数组中的第一个元素
int element = elements[elements.length-1];
//创建新数组存放除过栈顶元素的其他元素
int[] newArr = new int[elements.length-1];
//将其他元素赋值给新数组
for(int i = 0;i<elements.length-1;i++) {
newArr[i] = elements[i];
}
//替换数组
elements = newArr;
//返回栈顶元素
return element;
}
4.查看栈顶元素
//查看栈顶元素
public int peek() {
//判断栈中是否由元素
if(elements.length == 0) {
throw new RuntimeException("栈中没有元素!");
}
return elements[elements.length-1];
}
5.判断栈是否为空
//判断栈是否为空
public boolean isEmpty() {
return elements.length == 0;
}
完整代码
package com.yueqian.shujujiegou;
import javax.management.RuntimeErrorException;
/**
* 数据结构-------实现栈操作
* @author LinChi
*
*/
public class MyStack {
//栈的底层我们使用数组来存储
int[] elements;
//通过构造方法对数组进行初始化操作
public MyStack() {
elements = new int[0];
}
//压入元素(压栈操作)
public void push(int element) {
//创建新数组
int[] newArr = new int[elements.length+1];
//把旧数组中的元素赋值给新数组
for(int i = 0;i<elements.length;i++) {
newArr[i] = elements[i];
}
//将目标元素添加到新数组最后位置处
newArr[elements.length] = element;
//将新数组的引用赋值给旧数组
elements = newArr;
}
//取出栈顶元素
public int pop() {
//判断栈中是否有元素
if(elements.length == 0) {
throw new RuntimeException("栈中没有元素!");
}
//取出数组中的第一个元素
int element = elements[elements.length-1];
//创建新数组存放除过栈顶元素的其他元素
int[] newArr = new int[elements.length-1];
//将其他元素赋值给新数组
for(int i = 0;i<elements.length-1;i++) {
newArr[i] = elements[i];
}
//替换数组
elements = newArr;
//返回栈顶元素
return element;
}
//查看栈顶元素
public int peek() {
//判断栈中是否由元素
if(elements.length == 0) {
throw new RuntimeException("栈中没有元素!");
}
return elements[elements.length-1];
}
//判断栈是否为空
public boolean isEmpty() {
return elements.length == 0;
}
}
2、队列
模拟排队
//队列的底层我们使用数组来存储
int[] elements;
//通过构造方法对数组进行初始化操作
public MyQueue() {
elements = new int[0];
}
2.入队操作
//添加元素(入队操作)
public void add(int element) {
//创建新数组
int[] newArr = new int[elements.length+1];
//把旧数组中的元素赋值给新数组
for(int i = 0;i<elements.length;i++) {
newArr[i] = elements[i];
}
//将目标元素添加到新数组最后位置处
newArr[elements.length] = element;
//将新数组的引用赋值给旧数组
elements = newArr;
}
3.出队操作
//出队操作
public int pool() {
//判断队首是否有元素
if(elements.length == 0) {
throw new RuntimeException("队列中没有元素!");
}
//出队的队首元素
int element = elements[0];
//创建新数组
int[] newArr = new int[elements.length-1];
//将其他元素赋值给新数组中
for(int i = 0;i<newArr.length;i++) {
newArr[i] = elements[i+1];
}
//数组替换
elements = newArr;
return element;
}
4.判断队列是否为空
//判断队列是否为空
public boolean isEmpty() {
return elements.length == 0;
}
完整代码
package com.yueqian.shujujiegou;
/**
* 数据结构--------实现队列操作
* @author LinChi
*
*/
public class MyQueue {
//队列的底层我们使用数组来存储
int[] elements;
//通过构造方法对数组进行初始化操作
public MyQueue() {
elements = new int[0];
}
//添加元素(入队操作)
public void add(int element) {
//创建新数组
int[] newArr = new int[elements.length+1];
//把旧数组中的元素赋值给新数组
for(int i = 0;i<elements.length;i++) {
newArr[i] = elements[i];
}
//将目标元素添加到新数组最后位置处
newArr[elements.length] = element;
//将新数组的引用赋值给旧数组
elements = newArr;
}
//出队操作
public int pool() {
//判断队首是否有元素
if(elements.length == 0) {
throw new RuntimeException("队列中没有元素!");
}
//出队的队首元素
int element = elements[0];
//创建新数组
int[] newArr = new int[elements.length-1];
//将其他元素赋值给新数组中
for(int i = 0;i<newArr.length;i++) {
newArr[i] = elements[i+1];
}
//数组替换
elements = newArr;
return element;
}
//判断队列是否为空
public boolean isEmpty() {
return elements.length == 0;
}
}
推荐自己的github地址:github.com/Lmobject
小可爱们,java实现栈,队列操作到此就介绍完了,对算法和二叉树感兴趣的可以加关注哦!!!,后期持续更新中。。。。