package DoubleList;
public class DoubleLinkedList {
private Link first;
private Link last;
public DoubleLinkedList()
{
first = null;
last = null;
}
//判断是不是为空
public boolean isEmpty()
{
if(first == null)
{
return true;
}else{
return false;
}
}
//插入元素的实现
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()
{
Link temp = first;
if(first.next == null)
last = null;
else
first.next.previous = null;
first = first.previous;
return temp;
}
//删除尾节点
public Link deleteLast()
{
Link temp = last;
if(first.next == null)
{
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;
}
}
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()
{
System.out.println("从first------>last");
Link current = first;
while(current != null)
{
current.displayLink();
current =current.next;
}
System.out.println();
}
//从后往前打印节点
public void displayBackward()
{
System.out.println("从last-------->first");
Link current = last;
while(current != null)
{
current.displayLink();
current = current.previous;
}
System.out.println();
}
}
package DoubleList;
public class Link {
public long dData;
public Link next;
public Link previous;
public Link(long d)
{
dData = d;
}
public void displayLink()
{
System.out.println(dData+" ");
}
}
package DoubleList;
public class MainApp {
public static void main(String[] args) {
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();
}
}