Java 用双向循环链表实现 遍历
package day2; /**
* 构建双向循环链表,实现遍历功能
*/
public class DoubleLB { public static void main(String[] args) {
DoubleLB doubleLB = new DoubleLB();
doubleLB.creatCicle(100);
doubleLB.doubbl(30);
}
//头结点
Entry head;
void creatCicle(int length){
for(int i= 1; i<=length;i++){
Entry newEntry = new Entry(i*2);
//初始化头结点,把next和pre都指向自己
if(i==1){
head = new Entry(null,null,1);
head.next = head;
head.pre = head;
}else{
/**
* 1 :新增节点newEntry 的next指向 头结点 head
* 2: newEntry的pre 指向 head的pre。这里头结点的pre可以看做 最后一个节点(便于理解),也就是要插入新节点的位置 前一个节点
* 3: 插入新节点的位置 前一个节点 的next指向 newEntry
* 4:头结点的pre 指向newEntry。
*/
newEntry.next =head;
newEntry.pre = head.pre;
//head.pre.next = newEntry;//new.pre.next =newEntry
newEntry.pre.next = newEntry;
head.pre = newEntry; }
}
} /**
* 这里查看链表上的节点的字段number 是否有等于 输入的number。用到了双向遍历
* @param number
*/
void doubbl(int number){
Entry nextNode = head.next;
Entry preNode = head.pre; while(nextNode != preNode){
System.out.println("next"+nextNode.getNumber()+": pre"+preNode.getNumber());
if(nextNode.getNumber() == number || preNode.getNumber() ==number){
System.out.println(" find next"+nextNode.getNumber()+": pre"+preNode.getNumber());
return;
}
nextNode=nextNode.next;
preNode=preNode.pre;
}
} class Entry{
Entry next;
Entry pre;
int number; public Entry getNext() {
return next;
} public void setNext(Entry next) {
this.next = next;
} public Entry getPre() {
return pre;
} public void setPre(Entry pre) {
this.pre = pre;
} public int getNumber() {
return number;
} public void setNumber(int number) {
this.number = number;
} public Entry(int number) {
this.number = number;
} public Entry(Entry next, Entry pre, int number) {
this.next = next;
this.pre = pre;
this.number = number;
}
} }
Java 用双向循环链表实现 遍历的更多相关文章
- java与数据结构(4)---java实现双向循环链表
线性表之链式存储结构双向循环链表 双向循环链表:每个结点包含了数据.直接前驱地址指针和直接后驱地址指针,头结点的直接前驱指向尾结点,尾结点的直接后驱指向头结点,头尾相连构成一个可正可反的圆环.可以形象 ...
- java实现双向循环链表
java实现循环链表:http://www.cnblogs.com/lixiaolun/p/4643911.html 在单链表中,查询下一个元素的时间是O(1).查询上一个元素的时间却是O(n). 为 ...
- (java实现)双向循环链表
什么是双向循环链表 在了解双向循环链表之前,如果对链表还没有一个清晰的概念,建议你看看单链表和单向循环链表,这有利于你更好的理解下面的内容.(废话有点多[逃] 相比单链表,双向循环链表是一个更加复杂的 ...
- 双向循环链表的Java版本实现
1.单项循环列表 单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环.和单链表相比,循环单链表的长处是从链尾到链 ...
- java数据结构-06双向循环链表
双向循环链表跟单向链表一样,都是头尾相连,不过单向是尾指向头,双向是头尾互相指,可以从前往后查,也可以从后往前查 无头结点的双向循环链表 public class CircleLinkedList&l ...
- 双向链表、双向循环链表的JS实现
关于链表简介.单链表.单向循环链表.JS中的使用以及扩充方法: 单链表.循环链表的JS实现 关于四种链表的完整封装: https://github.com/zhuwq585/Data-Structu ...
- C语言通用双向循环链表操作函数集
说明 相比Linux内核链表宿主结构可有多个链表结构的优点,本函数集侧重封装性和易用性,而灵活性和效率有所降低. 可基于该函数集方便地构造栈或队列集. 本函数集暂未考虑并发保护. 一 ...
- Linux内核中的通用双向循环链表
开发中接触Linux越来越多,休息放松之余,免不了翻看翻看神秘的Linux的内核.看到双向链表时,觉得挺有意思的,此文记下. 作为众多基础数据结构中的一员,双向循环链表在各种“教科书”中的实现是相当的 ...
- python实现 双向循环链表
最近身边的朋友在研究用python来实现数据结构.遇到一个问题就是双向循环链表的实现,改指向的时候总是发蒙. 我自己尝实现了一个python的双向循环链表.附上代码,希望对大家有帮助. 如果不懂什么是 ...
随机推荐
- python2和3区别
核心类差异 Python3对Unicode字符的原生支持 Python2中使用 ASCII 码作为默认编码方式导致string有两种类型str和unicode,Python3只支持unicode的st ...
- 用深度学习做命名实体识别(六)-BERT介绍
什么是BERT? BERT,全称是Bidirectional Encoder Representations from Transformers.可以理解为一种以Transformers为主要框架的双 ...
- Maven配置JRE版本
Maven配置JRE版本 apache-maven-3.5.0\conf\settings.xml <profiles> <profile> <id>develop ...
- Spring Boot 2.X(六):Spring Boot 集成Redis
Redis 简介 什么是 Redis Redis 是目前使用的非常广泛的免费开源内存数据库,是一个高性能的 key-value 数据库. Redis 与其他 key-value 缓存(如 Memcac ...
- JavaWeb http协议的自我描述
1.http协议的组成 http:规范那种协议 localhost.127.0.0.1:访问的ip地址(默认,根据自己的需求改变) 端口号:8080(默认,根据自己的需求改变) 工程:XXX 资源:可 ...
- 超链接target属性的取值和作用?
<a>标签的target属性规定在何处打开连接文档 属性值 _black:点击一次打开一个新窗口 _new:始终在同一个新窗口中打开 _self:默认,在当前窗口打开 _parent:在父 ...
- 你不可错过的Java学习资源清单
学习Java和其他技术的资源其实非常多,但是我们需要取其精华去其糟粕,选择那些最好的,最适合我们的,同时也要由浅入深,先易后难.基于这样的一个标准,我在这里为大家提供一份Java的学习资源清单. Ja ...
- Tomcat7.0.40注册到服务启动报错error Code 1 +connector attribute sslcertificateFile must be defined when using ssl with apr
Tomcat7.0.40 注册到服务启动遇到以下几个问题: 1.启动报错errorCode1 查看日志如下图: 解决办法: 这个是因为我的jdk版本问题,因为电脑是64位,安装的jdk是32位的所以会 ...
- CONVERT用法指南,时间字段截取方法
语法: CONVERT(VARCHAR(7),<字段名称>,121) 时间转字符:select CONVERT(VARCHAR(7),dyxq,121),* from TBYPKC03-- ...
- 前端Vue知识小白
感觉是已好久没写博文了.今日难得有时间,便写一篇文章.此文章是关于前端知识的,我本身是后端,因工作或其他需要,便学习了前端Vue.此文章是在菜鸟教程上学习的.那么下面进入正文! 首先,Vue.js是一 ...