package MyJava2;
public class DuLinkQueue {
class Node{
private String data;
private Node prve;
private Node next;
public Node(String data){
this.data=data;
}
}
private Node front;
private Node rear;
private int size=0;
public DuLinkQueue(){
front=null;
rear=null;
}
public DuLinkQueue(String data){
front=new Node(data);
rear=front;
size++;
}
public int len(){
return size;
}
public void addAtHead(String data){//队首添加元素
Node newNode=new Node(data);
if(front==null){//若该链队列为空,则尾节点是新节点
rear=newNode;
}else {
front.prve=newNode;
}
newNode.next=front;
front=newNode;
size++;
}
public void addAtTail(String data){//队尾添加元素
Node newNode=new Node(data);
if(front==null){//若该链队列为空,则头节点是新节点
front=newNode;
}else {
rear.next=newNode;
}
newNode.prve=rear;
rear=newNode;
size++;
}
public String delAtHead(){//移除队首元素
Node oldNode=front;
front=oldNode.next;
if(front!=null){//至少有两个节点
front.prve=null;
}else {
rear=null;
}size--;
return oldNode.data;
}
public String delAtTail(){//移除队尾元素
Node oldNode=rear;
rear=oldNode.prve;
if(rear!=null){
rear.next=null;
}else {
front=null;
}
size--;
return oldNode.data;
}
public boolean empty(){
return size==0;
}
public void clear(){
front=null;
rear=null;
size=0;
}
public String toString(){
StringBuffer sb=new StringBuffer();
Node current=front;
for(;current!=null;current=current.next){
sb.append(current.data+",");
}return sb.toString();
}
public static void main(String[] args) {
DuLinkQueue queue=new DuLinkQueue();
queue.addAtHead("A");
queue.addAtHead("1B");
queue.addAtHead("1C");
queue.addAtTail("B1");
queue.addAtTail("C1");
System.out.println(queue.toString());
System.out.println(queue.delAtHead());
System.out.println(queue.delAtTail());
System.out.println(queue.toString());
}
}
双向队列
于 2018-08-04 16:43:52 首次发布