java双向链表
来源:互联网 发布:淘宝客恶意骗佣金 编辑:程序博客网 时间:2024/06/15 20:26
既允许向前遍历也允许向后遍历整个链表
public class Link { public long dData; public Link next; public Link previous; public Link(long d){ dData=d; } public void displayLink(){ System.out.print(dData+" "); }}
public class DoublyLinkedList { private Link first; private Link last; public DoublyLinkedList(){ first=null; last=null; } public boolean isEmpty(){ return first==null; } public void insertFirst(long dd){//insert at front of list Link link = new Link(dd); if(isEmpty()) last=link; //link<--last else first.previous=first; link.next=first; first=link; } public void insertLast(long dd){ Link link = new Link(dd); if(isEmpty()) first=link; else{ last.next=link; link.previous=last; } last=link; } public Link deleteFirst(){ Link temp=first; if(first.next==null){ last=null; } else{ first.next.previous=null; } first=first.next; return temp; } public Link deleteLast(){ Link temp=last; if(first.next==null){ first=null; }else{ last.previous.next=null; } last=last.previous; return temp; } //insert dd just after key public boolean insertAfter(long key,long dd){ Link current=first; while(current.dData!=key){ current=current.next; if(current==null) return false; } Link link = new Link(dd); if(current==last){ link.next=null; last=link; }else{ link.next=current.next; current.next.previous=link; } link.previous=current; current.next=link; return true; } public Link deleteKey(long key){ Link current=first; while(current.dData!=key){ current=current.next; if(current==null) return null; } if(current==first){ first=current.next; }else{ current.previous.next=current.next; } if(current==last){ last=current.previous; }else{ current.next.previous=current.previous; } return current; } public void displayForward(){ System.out.print("Link(first-->last)"); Link current=first; while(current!=null){ current.displayLink(); current=current.next; } System.out.println(""); } public void displayBackward(){ System.out.print("Link(last-->first)"); Link current=last; while(current!=null){ current.displayLink(); current=current.previous; } System.out.println(""); }}
public class DoublyLinkApp { public static void main(String[] args) { DoublyLinkedList list=new DoublyLinkedList(); list.insertFirst(22); list.insertFirst(44); list.insertFirst(66); list.insertLast(11); list.insertLast(33); list.insertLast(55); list.displayForward(); list.displayBackward(); list.deleteFirst(); list.deleteLast(); list.displayForward(); list.deleteKey(11); list.displayForward(); list.insertAfter(22, 77); list.displayForward(); }}
0 0
- java双向链表
- Java 双向链表
- java双向链表
- 双向链表 Java
- JAVA实现双向链表
- JAVA实现双向链表
- java 操作双向链表
- java中的双向链表
- Java实现双向链表
- JAVA实现双向链表
- JAVA实现双向链表
- JAVA实现双向链表
- 【java】双向链表实现
- Java双向链表实现
- 双向链表 --java实现
- JAVA实现双向链表
- JAVA实现双向链表
- Java实现双向链表
- 实现省市区三级联动js插件
- mac下修改mysql的编码为utf-8
- win2003系统启动不了
- 掌阅iReader某站Python漏洞挖掘
- android socket 客户端实例
- java双向链表
- Flex 布局教程
- DT10功能介绍 - DT10多波示波器
- Thrift设置超时等信息(Java)
- cocoapods:常见错误总结
- 安卓系统级返回键和HOME键
- 个人笔记 collections.sort comparator comparable
- Nexus3.xx私服搭建
- 在Notepad++上搭建Windows下Shell运行环境