java 数据结构之栈与队列
发布时间 - 2026-01-11 02:32:26 点击率:次java 数据结构之栈与队列

一:对列
队列是一种先进先出的数据结构
实现代码:
package Queue;
/*
* 使用java构建队列,并模拟实现队列的入队和出对方法
*/
public class Queue { //队列类
private int maxSize; //定义队列的长度
private int[] arrQueue; //队列
private int rear; //定义队列的尾指针
private int front; //定义队列的头指针
private int empty; //元素的个数
public Queue(int s) //初始化构造函数
{
maxSize = s;
arrQueue = new int[s];
rear = -1;
front=0;
empty = 0;
}
//实现插入方法
public void insert(int m)
{
if(rear == maxSize-1) //处理循环
rear = -1;
arrQueue[++rear] = m; //对尾指针加一,把值放在队列结尾
empty++; //队列元素个数加1
System.out.println("队列入队元素 为:" + m);
}
//实现出栈的方法,即取得队列的头元素
public int remove()
{
int temp = arrQueue[front++]; //将栈顶元素赋值给temp,栈顶指针加1
if(front == maxSize) //处理循环
front = 0;
empty--; //元素个数-1
return temp;
}
//判断队列是否为空
public boolean isEmpty()
{
return (empty==0);
}
//判断对列是否为满
public boolean isFull()
{
return (empty == maxSize);
}
//返回队列长度
public int qLong()
{
return empty;
}
public static void main(String[] args) {
Queue q = new Queue(5); //初始化队列为5个元素
q.insert(1);
q.insert(2);
q.insert(3);
q.insert(4);
q.insert(5);
int t1 = q.remove();
System.out.println("队列元素出队:" + t1);
int t2 = q.remove();
System.out.println("队列元素出队:" + t2);
System.out.println("队列是否为空:" + q.isEmpty());
System.out.println("队列是否为满:" + q.isFull());
System.out.println("队列的长度:" + q.qLong());
}
}
二:栈
栈是一种先进后出的数据结构
1:使用数组模拟栈
package Statck;
/*
* 使用java构建栈,并模拟实现栈的入栈和出栈方法
* 使用数组实现
*/
public class Statck1 {
private int maxSize; //栈的最多元素数
private int top; //栈顶指针
private int len; //栈的深度
private int[] arrStack; // 模拟栈
//栈的初始化
public Statck1(int s){
maxSize = s;
len =0;
top= -1;
arrStack = new int[s];
}
//获取栈的长度
public int getLen(){
return len;
}
//获取当前栈还能插入多少个f元素
public int getLeaveLen(){
return (maxSize-len);
}
//判断栈是否满
public boolean isFull(){
return (len==maxSize);
}
//判断栈是否为空
public boolean isEmpty(){
return (len ==0);
}
//元素入栈
public void inStack(int s)
{
arrStack[++top] = s; //栈顶指针加1,入栈
System.out.println("元素入栈:" + s);
len ++ ;//栈深度+1
}
//元素出栈
public int outStack()
{
int temp = arrStack[top--];//赋值之后减1
System.out.println("元素出栈:" + temp);
len--; //栈深度-1
return temp;
}
public static void main(String[] args) {
Statck1 s = new Statck1(5);
s.inStack(1);
s.inStack(2);
s.inStack(3);
s.inStack(4);
s.inStack(5);
s.outStack();
s.outStack();
System.out.println("栈的长度:" + s.getLen());
System.out.println("还能入栈元素个数:" + s.getLeaveLen());
System.out.println("栈的是否为空:" + s.isEmpty());
System.out.println("栈的是否为满:" + s.isFull());
}
}
2:使用链表模拟栈
package Statck;
import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.List;
/*
* 使用java构建栈,并模拟实现栈的入栈和出栈方法
* 使用链表实现
*/
public class Statck2<E extends Object> {
private List<E> statck = new ArrayList<E>();
public Statck2(){
//栈的初始化
}
//清空栈
public void clear(){
statck.clear();
System.out.println("清空栈..........");
}
//判断栈是否为空
public boolean isEmpty(){
return statck.isEmpty();
}
//获取栈顶元素
public E getTop(){
if(isEmpty())
return null;
return statck.get(0);
}
//弹出栈操作
public E pop(){
if (isEmpty())
throw new EmptyStackException();
System.out.println(statck.size() + "\t 出栈");
return statck.remove(statck.size() - 1);
}
//压入栈操作
public void push(E e){
statck.add(e);
System.out.println(e + "\t 入栈");
}
//获取当前栈的深度
public int getStatckSize(){
if(isEmpty())
throw new EmptyStackException();
return statck.size();
}
public static void main(String[] args) {
Statck2 s = new Statck2();
s.clear(); //清空栈
System.out.println("当前栈是否为空:" + s.isEmpty());
s.push(1);
s.push(2);
s.push(3);
s.pop();
System.out.println("当前栈的深度为:" + s.getStatckSize());
System.out.println("当前栈顶元素为:" + s.getTop());
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持,如有疑问请留言或者到本站社区交流讨论,大家共同进步!
# java
# 栈与队列
# 栈和队列的实现
# java中栈和队列的详解
# java 数据结构中栈和队列的实例详解
# Java深入了解数据结构之栈与队列的详解
# Java 栈和队列的相互转换详解
# Java栈和基础队列的实现详解
# 一起来学习Java的栈和队列
# Java 栈与队列实战真题训练
# Java 栈与队列超详细分析讲解
# Java使用跳转结构实现队列和栈流程详解
# Java线性结构中栈、队列和串的基本概念和特点详解
# Java常见的数据结构之栈和队列详解
# Java 栈和队列的交互实现
# 为空
# 数据结构
# 是一种
# 清空
# 还能
# 链表
# 放在
# 如有
# 希望能
# 弹出
# 谢谢大家
# 多少个
# 共同进步
# 出对
# 疑问请
# println
# qLong
# insert
# static
# System
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速完成中国万网建站详细流程?
b2c电商网站制作流程,b2c水平综合的电商平台?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
Laravel如何实现事件和监听器?(Event & Listener实战)
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
香港服务器选型指南:免备案配置与高效建站方案解析
高防服务器租用指南:配置选择与快速部署攻略
如何在腾讯云服务器快速搭建个人网站?
详解CentOS6.5 安装 MySQL5.1.71的方法
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
Windows Hello人脸识别突然无法使用
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何在云指建站中生成FTP站点?
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
电商网站制作价格怎么算,网上拍卖流程以及规则?
简单实现jsp分页
javascript日期怎么处理_如何格式化输出
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何快速生成高效建站系统源代码?
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
怎么用AI帮你为初创公司进行市场定位分析?
EditPlus 正则表达式 实战(3)
如何快速查询域名建站关键信息?
如何在景安服务器上快速搭建个人网站?
如何在云主机上快速搭建多站点网站?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
英语简历制作免费网站推荐,如何将简历翻译成英文?
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
如何快速搭建个人网站并优化SEO?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
iOS UIView常见属性方法小结
如何在云主机上快速搭建网站?
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
如何在VPS电脑上快速搭建网站?
利用python获取某年中每个月的第一天和最后一天
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Python并发异常传播_错误处理解析【教程】
Laravel如何升级到最新版本?(升级指南和步骤)
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
网站制作价目表怎么做,珍爱网婚介费用多少?
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势

