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;
}
} }

最新文章

  1. 手机软件Toast无法显示提示信息
  2. ECMAScript 5(ES5)中bind方法简介备忘
  3. 【php】命名空间 和 自动加载的关系
  4. BZOJ 3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦
  5. Python基础:函数
  6. golang json string remove field
  7. [microsoft]PE和COFF文件格式
  8. linux -samba
  9. ef 高级操作
  10. 多加注意对null和“”的处理
  11. cxf2.7.10 与 spring3.0.5集成
  12. 配置管理多个ssh key
  13. flex builder 4.7 ios 该溶液无法找到设备
  14. PHP中的函数声明与使用
  15. 51nod 1270 数组的最大代价 思路:简单动态规划
  16. Nginx 显示502 Bad Gateway错误
  17. vue百度地图插件
  18. 个人项目:Java实现WC
  19. BZOJ.3638.CF172 k-Maximum Subsequence Sum(模拟费用流 线段树)
  20. linux文件系统的用户和权限管理

热门文章

  1. 02-head标签
  2. Kubernetes 系列(六):Kubernetes部署Prometheus监控
  3. golang 服务平滑重启小结
  4. django根据已有数据库表生成model类
  5. cobalt strike批量发送钓鱼邮件
  6. vc++中字符串的免杀
  7. PHP array_unshift
  8. [Luogu3797] 妖梦斩木棒
  9. [Luogu4550] 收集邮票
  10. Zeebe服务学习5-多实例特性实践