java中的列表栈链表_Java数据结构(栈,队列,双链表)

(1)栈package ChapterOne;

public class Stack {

//栈数组

long stackArr[];

//栈的大小

int maxSize;

//栈的顶部

int top;

//初始化一个大小为size的栈

public Stack(int size){

maxSize = size;

stackArr = new long[size];

top = -1;

}

//出栈操作

public long pop(){

return stackArr[top--];

}

//进栈操作

public void push(long value){

stackArr[++top] = value;

}

//判断栈是否为空

public boolean isEmpty(){

return top == -1;

}

//判断栈是否已满

public boolean isFull(){

return top == maxSize-1;

}

//取栈顶元素

public long peek(){

return stackArr[top];

}

public static void main(String[] args) {

Stack stack = new Stack(10);

while(!stack.isFull()){

long v = (long) (Math.random()*100);

stack.push(v);

System.out.print(v+" ");

}

System.out.println();

while(!stack.isEmpty()){

long topValue = stack.pop();

System.out.print(topValue+" ");

}

System.out.println();

}

}

(2)队列

package ChapterOne;

public class Queue {

//队列数组

private long queueArr[];

//队列的前端下标

private int front;

//队列的尾端下标

private int rear;

//队列的大小

private int maxSize;

//队列中元素的个数

private int nItems;

//初始化一个大小为size的队列

public Queue(int size){

queueArr = new long[size];

maxSize = size;

front = 0;

rear = -1;

nItems = 0;

}

//插入操作

public void insert(long value){

//队列已满

if(rear == maxSize-1)

rear = -1;

queueArr[++rear] = value;

nItems++;

}

//删除操作

public long remove(){

long temp = queueArr[front++];

if(front == maxSize)

front = 0;

nItems--;

return temp;

}

//返回队列第一个元素

public long peakFront(){

return queueArr[front];

}

//判断是否为空

public boolean isEmpty(){

return nItems == 0;

}

//判断是否已满

public boolean isFull(){

return nItems == maxSize;

}

//返回队列中元素的个数

public int size(){

return nItems;

}

public void print(){

for(int i = front;i < front+nItems;i++){

System.out.print(queueArr[i]+" ");

}

System.out.println();

}

public static void main(String[] args) {

Queue q = new Queue(10);

while(!q.isFull()){

long value = (long)(Math.random()*100);

q.insert(value);

}

q.print();

while(!q.isEmpty()){

q.remove();

q.print();

}

q.print();

System.out.println(q.isEmpty());

}

}(3)优先队列package ChapterOne;      public class PriorityQueue {          private int nItems;              private long pqArr[];              private int maxSize;              public PriorityQueue(int size){           maxSize = size;           pqArr = new long[size];           nItems = 0;       }              public void insert(long value){           int i;           if(nItems == 0)               pqArr[nItems++] = value;           else{               for(i = nItems-1;i >= 0;i--){                   if(value < pqArr[i]){                       pqArr[i+1] = pqArr[i];                   }                   else                       break;               }               pqArr[i+1] = value;               nItems++;           }       }              public long remove(){           return pqArr[--nItems];       }              public boolean isEmpty(){           return nItems == 0;       }              public boolean isFull(){           return nItems == maxSize;       }              public void print(){           for(int i = 0;i < nItems;i++)               System.out.print(pqArr[i]+" ");           System.out.println();       }              public static void main(String[] args) {           PriorityQueue pq = new PriorityQueue(10);           while(!pq.isFull()){               long value = (long)(Math.random()*100);               pq.insert(value);           }           pq.print();       }   }(4)双链表class Chain{

Chain pre=null,next=null;

int id;

String name;

}

class List{

private Chain header=new Chain();

public Chain add(int id,String name){ //在链表尾添加节点

Chain current=new Chain(); //创建链表头

Chain temp=header;

while(temp.next!=null) //循环至链表尾

temp=temp.next;

temp.next=current;

current.pre=temp;

current.id=id;

current.name=name;

return current;

}

public Chain remove(int id){ //删除指定id的节点

Chain temp=header;

Chain current=null;

while(temp.next!=null){

temp=temp.next;

if(temp.id==id){

current=temp;

break;

}

}

if(current==null)

return null;

current.pre.next=current.next;

if(current.next!=null)

current.next.pre=current.pre;

return current;

}

public Chain remove(String name){ //删除指定name的节点

Chain temp=header;

Chain current=null;

while(temp.next!=null){

temp=temp.next;

if(temp.name==name){

current=temp;

break;

}

}

if(current==null)

return null;

current.pre.next=current.next;

if(current.next!=null)

current.next.pre=current.pre;

return current;

}

public Chain remove(){ //删除最后一个节点

Chain temp=header;

while(temp.next.next!=null){

temp=temp.next;

}

temp.next=null;

return temp;

}

public void clear(){ //删除所有节点

header.next=null;

}

public Chain insert(int id,String name,int pos){ //在指定位置插入节点

Chain temp=header;

Chain current=new Chain();

int i=0;

for(i=0;i<=pos;i++){

if(temp.next!=null){

temp=temp.next;

}

else{

return null;

}

}

current.id=id;

current.name=name;

if(temp.next!=null){

temp.next.pre=current;

current.next=temp.next;

}

temp.next=current;

current.pre=temp;

return current;

}

public void print_all(){

Chain temp=header;

System.out.println("--------------------------------------");

while(temp.next!=null){

temp=temp.next;

System.out.println("ID: "+temp.id);

System.out.println("Name: "+temp.name);

}

System.out.println("--------------------------------------");

}

}

public class ChainList{

public static void main(String[] args){

List a=new List();

a.add(1,"谭孟泷1") ;

a.add(2,"谭孟泷2");

a.add(3,"谭孟泷3");

a.add(4,"谭孟泷4");

a.insert(12,"大胖",2);

a.print_all();

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jsonp react 获取返回值_Django+React全栈开发:文章列表

React现在我们有了一个属于文章的API&#xff0c;可以添加、修改、删除、查看文章&#xff0c;但是对于我们的网站来说&#xff0c;还需要一个用户界面才行。现在开始探索一下ReactJS吧。经常听到有前端三大框架Angular、React、Vue的说法&#xff0c;不过React官网对自己的介绍…

24个经典的MySQL索引问题,你都遇到过哪些?

1、什么是索引&#xff1f; 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分)&#xff0c;它们包含着对数据表里所有记录的引用指针。 索引是一种数据结构。数据库索引&#xff0c;是数据库管理系统中一个排序的数据结构&#xff0c;以协助快速查询、更新数…

java 3 4_Java-3/4_树.md at master · yrcDream/Java-3 · GitHub

树二叉树二叉树具有唯一根节点二叉树每个节点最多有两个孩子&#xff0c;最多有一个父亲二叉树具有天然递归结构二叉树不一定是 “满” 的&#xff1a;一个节点也是二叉树、空节点也是二叉树二叉搜索树(BST)BST 的基本功能public class BST> {private Node root;private int…

python模块导入_python模块导入

不同的执行方式&#xff1a; 从IDE中执行&#xff0c;python程序由IDE设置环境决定。 从系统中执行&#xff0c;python程序由环境变量中的系统变量path决定&#xff0c;从上往下选择。 模块导入顺序&#xff1a; 系统包优先级最高 > 同目录 > sys.path&#xff0c;之所以…

再也不怕SVN冲突:轻松解决SVN冲突

什么时候容易出现冲突&#xff1f; 多个人同时修改了同个文件中的同一行代码 无法进行对比的二进制文件&#xff0c;比如图片等 如何解决冲突&#xff1f; 如上图&#xff0c;test_conflict.py文件发生了冲突&#xff0c;并且多出了几个文件&#xff0c;其中.mine是我本地修…

不删除旧版本java_Linux 卸载旧版jdk 并安装新版jdk(转)

1、查看现有版本java -version2、查看jdk的具体版本rpm –qa| grep jdkrpm –qa| grep gcj3、删除已安装jdk包rpm –e –nodeps jdk包4、再次检查jdk版本&#xff0c;确认是否卸载成功java –version显示结果为&#xff1a;/usr/bin/java:No such file or directory5、手动下载…

手机型号大全_2020值得入手的三款手机。每个优秀,选择哪一个?励志故事名言视频...

如今&#xff0c;手机等数码产品更新很快。各种新的技能&#xff0c;让用户真正体验到科技的力量&#xff0c;它可以被描述为“具有多种功能的一个装置。”然而&#xff0c;这么多车型&#xff0c;难免有些人不知道如何选择。当4G和5G手机**的对峙&#xff0c;很多朋友也问小中…

AspectJ

Aspectj与Spring AOP比较 XML配置方式 <aop:aspect>&#xff1a; 定义切面, 包括通知和切点. 是一般的bean//定义切面 public class SleepHelperAspect{public void beforeSleep(){System.out.println("睡觉前要脱衣服&#xff01;");}public void afterSleep…

aixs1 生成java代码_通过axis1.4 来生成java客户端代码

1.首先下载axis-1.4所有的jar包&#xff0c;2.我是直接打开cmd&#xff0c;进入到该jar包的目录下&#xff0c;3.直接运行命令(运行这个命令之前要确定java的环境变量都已配置好)&#xff1a;java -Djava.ext.dirs${lib的目录} org.apache.axis.wsdl.WSDL2Java -o${代码输出路径…

windows分屏_windows内到底藏了多少好东西?

恭喜!点开这篇文章&#xff0c;你将解锁 WIN10 系统内那些不为人知的高效的冷知识&#xff01;相信所有的职场人都会搜索过这样的问题&#xff1a;有哪些高效的办公神器&#xff1f;在之前的文章中&#xff0c;我分享过很多高效神器&#xff0c;如果你感兴趣的话&#xff0c;点…

@Aspect中@Pointcut 12种用法

本文主要内容&#xff1a;掌握Pointcut的12种用法。 Aop相关阅读 阅读本文之前&#xff0c;需要先掌握下面3篇文章内容&#xff0c;不然会比较吃力。 Spring系列第15篇&#xff1a;代理详解&#xff08;java动态代理&CGLIB代理)Spring系列第30篇&#xff1a;jdk动态代理…

学java要背的单词_学习JAVA必背的8类常用单词

Java常用的词还是挺多的&#xff0c;初学者有空多看看&#xff0c;对快速入门Java编程还是有益的。本文沈阳达内IT培训为大家介绍学习JAVA必背的8类常用单词。1、保留关键字(2个)const ——常量&#xff0c;常数&#xff1a;用于修改字段或局部变量的声明。goto——转到&#x…

asp.net接受表单验证格式后再提交数据_看滴普科技大前端如何玩转el-form-renderer 表单渲染器1.14.0

DEEPEXI 大前端常人道&#xff0c;一入开发深似海&#xff0c;技术学习无止境。在新技术层出不穷的前端开发领域&#xff0c;有一群身怀绝技的开发&#xff0c;他们在钻研前沿技术的同时&#xff0c;也不忘分享他们的成果&#xff0c;回馈社区。下面&#xff0c;就由小水滴带大…

测试用例设计方法_黑盒测试——测试用例设计方法

黑盒测试也称为功能测试或数据驱动测试。通过软件的外部表现来发现其缺陷和错误。在测试时&#xff0c;把被测程序视为一个不能打开的盒子&#xff0c;在完全不考虑程序内部逻辑结构和内部特性的情况下进行。它是在已知产品所应具有的功能前提下&#xff0c;通过测试来检测每个…

SpringAop @Pointcut(“@annotation“)\@Aspect练习

切面记录日志 切面类 Slf4j Aspect Component public class AspectForFeign {Pointcut("execution(public * com.keke.remote..*Feign.*(..))")public void pointcut() {}Around("pointcut()")public Object around(ProceedingJoinPoint joinPoint) thro…

java store()_Java.util.Properties.store()

描述所述java.util.Properties.store(OutputStream out,String comments)方法在适合于装载一个格式转换成使用所述负载的属性表在该属性表写此属性列表(key and element )到输出流(InputStream的)方法。声明以下是java.util.Properties.store()方法的声明public void store(Out…

Mybatis缓存机制详解与实例分析

前言&#xff1a; 本篇文章主要讲解Mybatis缓存机制的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出&#xff0c;对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小伙伴儿了&#x1f601; 以下正文开始 Mybat…

delphi语言转为汇编语言_每天5分钟,轻松建立技术图谱 编程语言黑历史

阿T课堂开播啦&#xff01;这里只有干货干锅&#xff0c;没有水坑没有套路&#xff01;计算机编程语言的发展&#xff0c;也是随着计算机本身发展而发展。人类不断的提高科技的同时&#xff0c;也必须使工具的使用越来越简化&#xff0c;从而提高整个社会效率&#xff0c;这其中…

php打印错误日志到本地,nginx+php怎么打印php的错误日志?

开启错误级别的设置了吗&#xff1f;如果关闭所有的错误监控&#xff0c;日志文件内依旧是没有数据的。/usr/local/php/etc/php.ini---------------------------error_reporting E_ALL & ~E_DEPRECATED & ~E_STRICTdisplay_errors Offlog_errors On; Log errors to …

spring aop 中@annotation()和自定义注解的使用

在自定义个注解之后&#xff0c;通过这个注解&#xff0c;标注需要切入的方法&#xff0c;同时把需要的参数传到切面去。那么我们怎么在切面使用这个注解。 我们使用这个自定义注解一方面是为了传一些参数&#xff0c;另一方面也是为了省事。 具体怎么省事&#xff0c;看我下面…