# 前奏
双端队列:可以实现队列或栈的功能有头尾添加 或 头尾删除等功能
代码
package com.king2.kewai;
public class PracticeLinkedDeque {
public static void main(String[] args) {
LinkedDeque deque=new LinkedDeque();
deque.addLastNode(3);
deque.addLastNode(4);
deque.addLastNode(5);
deque.addFistNode(2);
deque.addFistNode(1);
deque.showDeque();
System.out.println("===============删除=================");
deque.deleteFirstNode();
deque.deleteLastNode();
deque.showDeque();
System.out.println("=====还长度:"+deque.length());
System.out.println("===============全部删除=================");
for(int index=0;index<deque.toArray().length;index++){
System.out.println(deque.toArray()[index]);
}
}
}
class LinkedDeque{
DequeNode head=new DequeNode(null);
private int length;
public void addFistNode(Object value){
length++;
DequeNode currNode=head;
DequeNode newNode=new DequeNode(value);
newNode.nextNode=currNode.nextNode;
currNode.nextNode=newNode;
}
public void addLastNode(Object value){
length++;
DequeNode currNode=head;
DequeNode newNode=new DequeNode(value);
while(currNode.nextNode!=null){
currNode=currNode.nextNode;
}
currNode.nextNode=newNode;
}
public Object deleteFirstNode(){
DequeNode currNode=head;
DequeNode deleteNode=null;
if(currNode.nextNode!=null){
length--;
deleteNode=currNode.nextNode;
currNode.nextNode=currNode.nextNode.nextNode;
}
return deleteNode.data;
}
public Object deleteLastNode(){
DequeNode currNode=head;
DequeNode deleteNode=null;
while(currNode.nextNode!=null){
if(currNode.nextNode.nextNode==null){
length--;
deleteNode=currNode.nextNode;
currNode.nextNode=null;
break;
}
currNode=currNode.nextNode;
}
return deleteNode.data;
}
public void showDeque(){
DequeNode currNode=head;
while(currNode.nextNode!=null){
System.out.println(currNode.nextNode.data);
currNode=currNode.nextNode;
}
}
public boolean isNull(){
return head.nextNode==null;
}
public int length(){
return length;
}
public Object[] toArray(){
DequeNode currNode=head;
Object[] objArray=new Object[length];
int count=0;
while(currNode.nextNode!=null){
objArray[count++]=currNode.nextNode.data;
currNode=currNode.nextNode;
}
return objArray;
}
}
class DequeNode{
public DequeNode nextNode;
public Object data;
public DequeNode(Object data){
this.data=data;
}
}