zoukankan      html  css  js  c++  java
  • 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;
    }
    }


    }
  • 相关阅读:
    redis 下载安装
    Docker之网络
    容器与镜像
    Docker之容器
    Docker之镜像
    在安装完windows和linux双系统后,删除BIOS中的引导启动项在Window下
    Ububtu 18.04中如何在火狐浏览器中安装flash插件
    lambda 表达式
    IDEA DeBug mode
    spring 系统启动加载的类
  • 原文地址:https://www.cnblogs.com/xlblog/p/11553059.html
Copyright © 2011-2022 走看看