栈:这是一个先进后出的数据结构,生活中类似的浏览器的返回上一页就可以利用此结构实现,代码如下:

public class Stack{private Object[] data;//存储数据

private int top;//表示栈顶元素

publicStack(){

data= new Object[100];//为了说明原理随意指定

top =-1;

}public synchronized void put(T t){ //压栈

data[data.length] =t;

top++;

}public synchronized T pop(){ //出栈

if(top<0){return null;

}

T t=(T) data[top];

top--;returnt;

}

}

这只是我自己的Java实现只说明原理,但实际在java中是利用vector来存储数据的,我们知道vector其实是一个线程安全的ArrayList,而ArrayList的底层也是一个数组,所以原理上大同小异

队列:队列其实就是我们生活中的排队现象,先进入的先出,后进入的后出,代码实现如下:

public class Queue{private Object[] data; //存储数据

private int head; //头

private int tail; //尾

publicQueue(){

data= new Object[100];//为了说明原理随意指定

head =1;

tail=1;

}public voidput(T t){

data[tail]=t;

tail++;

}publicT get(){

T t=(T) data[head];

head++;returnt;

}

}

如上所示,也只是说明原理,其实在java jdk中也有许多不同的对列,并且对列可以由数组实现,也可以由链表实现,下面介绍链表

链表是一个类似于现实中串项链的数据结构,前一个数据指向后一个数据,当然也可以后一个数据指向前一个数据,这就是双向链表,这里不做讨论

public class MyNode{private NodeheadNode ;publicMyNode(T t){

headNode= new Node<>(t,null);

}publicMyNode(){

}private static class Node{

Object e;

Nodenext;

Node(E element, Nodenext) {this.e =element;this.next =next;

}

}public voidput(T t){if(headNode==null){

headNode= new Node<>(t,null);

}else{

headNode= new Node<>(t,headNode);

}

}public T get(intindex){

Node node=headNode;for(int i=2;i

node=node.next;

}

T t=(T) node.e;returnt;

}

}

以上就是用Java实现的简单链表,还有双向链表是一个元素指向前一个元素和后一个元素,原理大概相同,这里可以看书链表中取固定位置的数据是非常麻烦的,必须从第一个开始依次查找,这也就是linklist不用for(int i=0;i++;i

栈和队列的Java实现_栈和队列的java简单实现相关推荐

  1. java数据结构队列杨辉三角_数据结构之队列——输出杨辉三角形

    定义 队列是一种操作受限的线性表,只允许在一端进行插入,另一端进行删除.插入的一端称为队尾,删除的一端称为队头,由于这样的限制,所以队列具有先进先出的特性,因此队列也是一种先进先出的线性表. 顺序存储 ...

  2. java书籍_非科班,自学java需要把软件工程的课程全部学习完吗?

    问题一:非科班是否能自学Java.问题二:自学Java是否需要把软件工程课程全部学完?问题三:如何自学Java? 解决问题一:非科班是否能自学Java.不知道你是否有这个担心疑虑,从事Java技术开发 ...

  3. 如何java面试_短时间如何过java面试?

    这题我会!作为一个编程界老司机,我曾总结过一套Java常见的面试考点大全,不知道帮助过多少程序员拿下offer. 现在我把这套Java面试大全放出来,希望对大家有所帮助! 本文内容过长,建议大家先赞后 ...

  4. java 中间件_从头到尾说一遍Java(中间件)垃圾回收

    之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++ 程序员,吃完直接就走的,是 Java 程序员. 确实,在 Java 的世界里,似乎我们不用对垃圾回收那么的专注,很多初学者 ...

  5. java 火焰_利用火焰图查找java耗时最长的方法

    原标题:利用火焰图查找java耗时最长的方法 众所周知java方法有两种,一种是纯粹的java方法,另外一种是jni,java调用c的,方法声明是java的,实现并不是. 现在通过jni实现一些效率的 ...

  6. java获取java版本_在运行时获取Java版本

    最简单的方法(java.specification.version): double version = Double.parseDouble(System.getProperty("jav ...

  7. 拓扑排序之java实现_有向图和拓扑排序Java实现

    package practice; import java.util.ArrayDeque; import java.util.Iterator; import java.util.Stack; pu ...

  8. 双表查询java代码_什么是JDBC?Java数据库连接性简介

    JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...

  9. java安装_我最喜欢的Java高级开发人员书籍

    java安装 我上一篇博客文章(我对高级Java开发人员的十个最喜欢的在线资源)的想法,是由Xiaoran Wang发表的 "面向高级Java开发人员的十大网站"的启发. Wang ...

  10. java超线程_超线程多核心下Java多线程编程技术分析

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述超线程多核心下Java多线程编程技术分析,更多Java专业知识,广州疯狂 ...

最新文章

  1. 2019年物联网发展的六大趋势
  2. 实现点击在当前位置画一个黑点,打印出当前点击的坐标
  3. Oracle日期格式化问题:to_date(sysdate,'yyyy-MM-dd')与 to_date(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd')区别
  4. php session操作类,操作Session的PHP类
  5. Codeforces Round #670 (Div. 2)
  6. Java 8中的5个功能将改变您的编码方式
  7. Spring MVC源码分析(一) 说明
  8. ubuntu火狐证书问题
  9. POJ NOI0105-43 质因数分解
  10. txt乱码怎么恢复正常_键盘乱码怎么恢复
  11. Atitit 网络存储协议 远程存储协议 目录 1. Email类 1 1.1. Eas Exchange Activesync介绍 1 1.2. Imap pop3 1 2. 网盘类远程存储web
  12. linux下tomcat缓存磁盘文件,Linux环境下清理Tomcat缓存
  13. Hadoop学习之hadoop安装、JDK安装、集群启动(完全分布式)
  14. 如何零基础入门PS软件?
  15. 手机mtkcdc端口如何开启_联想手机MTK线刷设置PreLoader端口的方法
  16. 计算机指令执行过程详解
  17. vue自定义组件总结
  18. 电脑找不到wifi热点
  19. 计算机里被删除的文件可以在哪里进行恢复,电脑里的文件夹不小心删除了找回来的方法...
  20. 使用STM32C103C8T6的注意点

热门文章

  1. 命令 / GDB / 多进程调试 + 多线程调试
  2. ldap基本dn_2020年,手把手教你如何在CentOS7上一步一步搭建LDAP服务器的最新教程...
  3. rust油桶用什么打_选什么样的柜子才好用?别再选定制柜了,还是老手艺人打的柜子好...
  4. echarts symbol 回调函数_凹函数和凸函数到底什么样?傻傻分不清楚
  5. java中所有函数都是虚函数_关于Java:虚拟函数与纯虚函数之间的区别是什么?...
  6. Node.js event loop 和 JS 浏览器环境下的事件循环的区别
  7. php 168任意代码执行漏洞之php的Complex (curly) syntax
  8. 前端请求接口出现的跨域问题
  9. VS2013 UML 如何复制文件
  10. POJ-1941 The Sierpinski Fractal