这篇文章主要介绍了java 数据结构之栈与队列的相关资料,这里对java中的栈和队列都做出实现实例来帮助大家理解学习数据结构,需要的朋友可以参考下
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数据结构中关于栈和队列的详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1
好用且免费的代码编辑器

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3 Linux新版
SublimeText3 Linux最新版