*
* 雙向佇列
*/
public class Double_ends_Queue {
public static void main(String[] args) {
LinkedList_Queue n = new LinkedList_Queue();
for(int i = 1 ; i < 4 ; i++)
System.out.println(n.enqueue("1"));
System.out.println(n.dequeue(2));
System.out.println(n.dequeue(2));
System.out.println(n.dequeue(2));
}
}
class LinkedList_Queue{
Node front , rear ;//指標
String name ;
boolean enqueue(String name){//添加值
Node node = new Node(name);
if(rear == null) //假設尾端是空的
front = node ;//建立第一個節點
else
rear.nextNode = node ;
rear = node ;
return true;
}
String dequeue(int action){
if(front != null && action == 1){
if(front == rear) rear = null ; //指標相等 代表無值
name = front.name ;
front = front.nextNode ;
return name ;
}else if(rear!= null && action == 2){
Node StartNode , EndNode ;
StartNode = front ;
EndNode = front ;
name = rear .name ;
while(front.nextNode != rear&& front.nextNode != null ){//沒成立意思只有1個
front = front.nextNode ;
EndNode = front ;
}
front = StartNode ;
rear = EndNode;
if(rear.nextNode == null || front.nextNode == null ){
rear = null ; front = null;
}
return name ;
}
return "Not Name" ;
}
class Node{
String name ;
Node nextNode ;
Node(String n){
name = n ;
}
}
}
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。