双向链表
来源:互联网 发布:mysql数据库恢复 编辑:程序博客网 时间:2024/05/16 00:50
public class Link { public long dData; public Link next; public Link previous; public Link(long dData){ this.dData=dData; } public void displayLink(){ System.out.print(dData+" "); }}
public class DoubleLinkedList { private Link first; private Link last; public DoubleLinkedList(){ first=null; last=null; } public boolean isEmpty(){ return (first==null); } public void insertFirst(long dd){ Link newLink = new Link(dd); if(isEmpty()){ last=newLink; }else{ first.previous=newLink; } newLink.next=first; first=newLink; } public void insertLast(long dd){ Link newLink=new Link(dd); if(isEmpty()){ first=newLink; } else{ last.next=newLink; newLink.previous=last; } last=newLink; } public Link deleteFirst(){//delete first link Link temp =first; if(first.next==null){//if only one items last=null; }else{ first.next.previous=null; } first=first.next; return temp; } public Link deleteLast(){//delete last link Link temp =last; if(first.next==null){//if only one items first=null; }else{ last.previous.next=null; } last=last.previous; return temp; } public boolean insertAfter(long key,long dd){ Link current =first; while(current.dData!=key){ current=current.next; if(current==null){ return false;//didn't find it } } Link newLink = new Link(dd); if(current==last){ newLink.next=null; last=newLink; } else{ newLink.next=current.next; current.next.previous=newLink; } newLink.previous=current; current.next=newLink; 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(){ Link current=first; while(current!=null){ current.displayLink(); current=current.next; } System.out.println(""); } //遍历 public void displayBackward(){ Link current = last;//start at end while(current!=null){ current.displayLink(); current=current.previous; } System.out.println(""); } //insertAfter在某一特定元素后面插入}
public class DoubleLinkedApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub DoubleLinkedList theList = new DoubleLinkedList(); theList.insertFirst(22); theList.insertFirst(44); theList.insertFirst(66); theList.insertLast(11); theList.insertLast(33); theList.insertLast(55); theList.displayForward(); theList.displayBackward(); theList.deleteFirst(); theList.deleteLast(); theList.displayForward(); theList.insertAfter(22, 77); theList.insertAfter(33, 88); theList.displayForward(); }}
1 0
- SzNOI 双向约瑟夫(双向链表)
- 双向链表&&堆栈
- 双向链表
- 使用双向链表
- 双向链表
- 双向循环链表
- 双向循环链表
- 双向链表
- 实现双向链表
- 双向循环链表
- 建立双向链表
- 双向链表
- 双向链表
- 双向循环链表
- 双向链表
- 链表-双向链表
- 双向链表
- 双向动态链表
- Redis实战之Redis + Jedis
- 联系苹果必备!App Store官方邮箱列表大全
- 设计模式学习笔记
- 用NSFileManager实现文件夹占内存计算
- PAT (Basic Level)1045. 快速排序
- 双向链表
- 计算机的硬件组成
- css居中 js回退
- 小企业销售&市场成功秘诀-Zoho案例
- USB HID简介,开发USB设备必备
- 贪心算法:旅行商问题(TSP)
- git忽略对已入库文件的修改
- [BZOJ 3144]切糕
- 二分法查找的C++实现