java实现循环链表的增删功能
java实现循环链表的增删功能,完整代码
package songyan.test.demo; public class Demo {
// java 实现循环链表
public static void main(String[] args) {
Node node1 = new Node("name1");
Node node2 = new Node("name2");
Node node3 = new Node("name3");
Node node4 = new Node("name4");
Node node5 = new Node("name5"); node1.setNextNode(node2);
node2.setNextNode(node3);
node3.setNextNode(node4);
node4.setNextNode(node5);
node5.setNextNode(node1); // getNodes(node1); // 添加node2.5
Node node11 = new Node("node2.5");
node11.setNextNode(node2.getNextNode());
node2.setNextNode(node11);
// getNodes(node1); // 删除节点
node2.setNextNode(node3);
getNodes(node1); } public static void getNodes(Node startNode) {
// 循环遍历
Node node = startNode;
do {
System.out.println(node.getName());
node = node.getNextNode();
} while (node.getNextNode() != startNode.getNextNode());
}
} class Node {
private String name;
private Node nextNode; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Node getNextNode() {
return nextNode;
} public void setNextNode(Node nextNode) {
this.nextNode = nextNode;
} Node(String name) {
this.name = name;
this.nextNode = null;
} Node() {
this.nextNode = null;
} }
分段解读,
1,声明节点类【包括节点名称,指针】
class Node{
private String name;
private Node nextNode;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Node getNextNode() {
return nextNode;
}
public void setNextNode(Node nextNode) {
this.nextNode = nextNode;
}
Node(String name)
{
this.name=name;
this.nextNode=null;
}
Node()
{
this.nextNode=null;
} }
2,创建节点
Node node1= new Node("name1");
Node node2= new Node("name2");
Node node3= new Node("name3");
Node node4= new Node("name4");
Node node5= new Node("name5");
3,设置指针
【这里不同于单链表的地方就是要给尾节点设置指向头结点的指针】
node1.setNextNode(node2);
node2.setNextNode(node3);
node3.setNextNode(node4);
node4.setNextNode(node5);
node5.setNextNode(node1);
3,循环遍历链表
注意:结束的条件不同于单链表的地方,
在单链表中结束条件是nextNode为空,
然而在这里,尾节点的指针式指向头结
点的,所以条件是节点的指针指向头结点
public static void getNodes(Node startNode) {
// 循环遍历
Node node = startNode;
do {
System.out.println(node.getName());
node = node.getNextNode();
} while (node.getNextNode() != startNode.getNextNode());
}
4,添加节点
【这里与单向链表完全相同】
Node node11=new Node("node2.5");
node11.setNextNode(node2.getNextNode());
node2.setNextNode(node11);
4,删除节点
【这里与单向链表完全相同】
node2.setNextNode(node3);
java实现循环链表的增删功能的更多相关文章
- JAVA实现双向链表的增删功能
JAVA实现双向链表的增删功能,完整代码 package linked; class LinkedTable{ } public class LinkedTableTest { //构造单链表 sta ...
- java实现单链表的增删功能
JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static vo ...
- java与数据结构(3)---java实现循环链表
循环链表:将单链表中尾结点的指针由空指针改为指向头结点,就使整个单链表形成一个环,这种首尾相接的单链表称为单链表循环表,即循环链表. 循环链表与单链表最重要的区别是:尾结点的指针,不再是p->n ...
- Atitit php java python nodejs错误日志功能的比较
Atitit php java python nodejs错误日志功能的比较 1.1. Php方案 自带 1 1.2. Java解决方案 SLF4J 1 1.3. Python解决方案 自带lo ...
- Fastjson是一个Java语言编写的高性能功能完善的JSON库。
简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson. ...
- java实现网站paypal支付功能并且异步修改订单的状态
java实现网站paypal支付功能并且异步修改订单的状态:步骤如下 第一步:去paypal的官网https://www.paypal.com注册一个个人账号,在创建沙箱测试账号时需要用到 第二步:p ...
- Java实现在线预览功能
java实现在线预览功能,需要用到 jacob.dll jacob.jar 预览pdf所需js pdfobject.min.js 将上传文件转为pdf保存. <div class=&qu ...
- Java案例之随机验证码功能实现
实现的功能比较简单,就是随机产生了四个字符然后输出.效果图如下,下面我会详细说一下实现这个功能用到了那些知识点,并且会把 这些知识点详细的介绍出来.哈哈 ,大神勿喷,对于初学Java的人帮助应该蛮大的 ...
- 【java】java自带的java.util.logging.Logger日志功能
偶然翻阅到一篇文章,注意到Java自带的Logger日志功能,特地来细细的看一看,记录一下. 1.Java自带的日志功能,默认的配置 ①Logger的默认配置,位置在JRE安装目录下lib中的logg ...
随机推荐
- 创建基于MailKit和MimeKit的.NET基础邮件服务
邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Net.Mail用于创建邮件服务,该基础服务提供邮件的基础 ...
- sparklyr包:实现Spark与R的接口+sparklyr 0.5
本文转载于雪晴数据网 相关内容: sparklyr包:实现Spark与R的接口,会用dplyr就能玩Spark Sparklyr与Docker的推荐系统实战 R语言︱H2o深度学习的一些R语言实践-- ...
- 基于am3358的蜂鸣器测试
#include <sys/ioctl.h> #include<stdio.h> #include <fcntl.h> #include <sys/types ...
- Java中的字符串拼接
Java中的字符串拼接 1.设计源码 /** * @Title:IndexOf.java * @Package:com.you.freemarker.model * @Description: * @ ...
- 浅谈IT企业挑选技术人员招聘几个要点
在实际人员招聘的一些感想总结,企业需要怎么样的人才,个人总结如下: 1.技术能力不是第一位 企业在招聘一个人的时候往往看你第一点不是技术实力,而是你个人言谈行为和态度,往往一个面试你的人员他不可能在半 ...
- Flex下拉框
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- linux命令类型及执行顺序
一 为什么要使用命令行 当初级Linux用户面对缺乏图形界面的Linux时很多人都会抱怨:为何要死守命令行?为什么不采用人机互交好.更简单的图形界面呢?事实上,图形界面在某些任务方面确实高效而且简 ...
- haproxy的丰富特性简介
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Luogu3092:[USACO13NOV]No Change
题面 传送门 Sol 状压一下\(k\),\(f[S]\)表示用过的硬币集合为\(S\)能买到的物品个数 # include <bits/stdc++.h> # define RG reg ...
- JavaScript之BOM
一.什么是BOM? BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”. 二.Windows对象 Window对象是客户端Ja ...