Java 实现栈,队列
package base.structure; /**
* @program: Algorithm4J
* @description: 实现一个Stack
* @author: Mr.Dai
* @create: 2018-12-06 15:25
**/
public class Stack<T> { // point
int n;
// arrays implement
T [] elements; // 初始化一个栈
public Stack(){
n=0;
elements= ((T[]) new Object[20]);
} public void push(T item){
if(n==elements.length){
resize(elements.length*2);
}
elements[n++]=item;
} // 调控数组大小
private void resize(int i) {
T[] arrays=(T[])new Object[i];
System.arraycopy(elements,0,arrays,0,elements.length);
elements=arrays;
} public T pop(){
if(isEmpty()) throw new ArrayIndexOutOfBoundsException();
T x=elements[n-1];
n--;
return x;
}
public boolean isEmpty(){
return n==0;
}
public int Size(){return n;} }
队列
package base.structure; /**
* @program: Algorithm4J
* @description: 实现队列
* @author: Mr.Dai
* @create: 2018-12-06 15:37
**/
public class Queue<T> { // tail point
private int tailp;
// head point
private int headp;
// save arrays
private T [] elements; public Queue(){
tailp=0;
elements=(T[])new Object[20];
} // 入队
public void enqueue(T item){
if(tailp==elements.length){
resize(elements.length*2);
}
elements[tailp++]=item;
}
// 调控数组大小
private void resize(int i) {
T[] arrays=(T[])new Object[i];
System.arraycopy(elements,0,arrays,0,elements.length);
elements=arrays;
}
// 出队
public T dequeue(){
if (isEmpty()) throw new ArrayIndexOutOfBoundsException();
T val=elements[headp];
headp++;
return val;
} boolean isEmpty(){
return headp==tailp;
} public int Size(){
return tailp-headp;
} }
Java 实现栈,队列的更多相关文章
- java 集合 Connection 栈 队列 及一些常用
集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...
- 剑指Offer——Java实现栈和队列的互模拟操作
剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列 题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 思路:其实就是把队列正常入 ...
- Java 容器之 Connection栈队列及一些常用
集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...
- java面向对象的栈 队列 优先级队列的比较
栈 队列 有序队列数据结构的生命周期比那些数据库类型的结构(比如链表,树)要短得多.在程序操作执行期间他们才被创建,通常用他们去执行某项特殊的任务:当完成任务之后,他们就会被销毁.这三个数据结构还有一 ...
- Java 技术栈
JAVA是一个面向对象的编程语言,由SUN公司的程序员所开发.它不仅吸收了C++的各种优点,而且还撇弃了C++中难以理解的概念,如多继承.指针等:因此JAVA语言具有功能强大且简单易用两个特征, JA ...
- java技术栈:项目概述
学习使用java到现在也有三年多了,这三年基本是以项目驱动的方式学习,有好有坏,个人觉得好处在于,有一个清晰的目标让你解决,这会让你学习非常迅速有效.当然坏处就是片面,不成体系.这种学习方式在学校以小 ...
- Ninja:Java全栈Web开发框架-Ninja中文网
相信不少业界人士都还停留在SSh的时代 其实我想给大家推荐的一个轻量级框架那就是Ninja; Ninja是一个Java全栈Web开发框架,稳定.快速.非常高效. 商业价值 在你的下一个项目中,Ninj ...
- Java虚拟机栈和本地方法栈
Java虚拟机栈的特征 线程私有 后进先出(LIFO)栈 存储栈帧,支持Java方法的调用.执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 Java ...
- Java实现栈之计算器
Java实现栈来做一个将中缀表达式转化为后缀表达式的程序,中缀表达式更符合我们的主观感受,后缀表达式更适合计算机的运算,下面直接上代码吧: package Character1; import jav ...
- Java多线程 阻塞队列和并发集合
转载:大关的博客 Java多线程 阻塞队列和并发集合 本章主要探讨在多线程程序中与集合相关的内容.在多线程程序中,如果使用普通集合往往会造成数据错误,甚至造成程序崩溃.Java为多线程专门提供了特有的 ...
随机推荐
- 删除CentOS系统自带的jdk
转自:https://www.cnblogs.com/linjiqin/archive/2013/03/23/2977377.html 在安装CentOS6.4时,系统会自动安装jdk,先把它下载掉, ...
- win 10 提升权限
问题:每次打开Visual Studio 提示,需要重启以获取管理员权限 解决: 1.Win+R 2.输入:gpedit.msc 3.windows设置->安全设置->本地策略->安 ...
- C语言学习笔记--指针概念
指针也是一种变量,占有内存空间,用来保存内存地址,在32位系统中指针的占用的内存大小为4个字节 1.*号的意义 (1)在指针声明时,*号表示所声明的变量为指针 (2)在指针使用时,*号表示取指针所指向 ...
- Github修改项目显示的语言类型
//仓库的根目录下创建 .gitattributes 文件,添加以下代码: *.js linguist-language=java *.css linguist-language=java *.htm ...
- js实现导航栏的吸顶操作
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- Java元注解,简单案例
[注解] 程序中有 注释 和注解 * 注释:给开发人员. * 注解:给计算机看的. 注解使用:学习框架支持注解开发. [JDK提供的注解] @Override :描述方法的重写. @SuppressW ...
- parseXXX的用法
转换字符串. parseXXX是Integer类.等基本数据类型包装类的方法,用于实现String和int型数据的转换.例如, Integer.getInteger(String s) 从字符串中获取 ...
- hdu4283 You Are the One
传送门 题目 The TV shows such as You Are the One has been very popular. In order to meet the need of boys ...
- WOJ 7 智商
感觉Dasin去年的毒瘤题质量都挺好的,果然还是我太菜了. 以下假设划横线部分都相等,字符$c$代表一个小写字母. 分类讨论: $#1$ 先考虑$n == m$的情况 : $#1.1 :$ A: ...
- Fiddler的Request Builder(Composer)模拟发送POST请求
传json格式: Parsed写: User-Agent: Fiddler Host: localhost:1455 Content-Type: application/json; charset=u ...