//Deque.java
包dsa//取決於您自己的程序位置。
公共接口隊列{
public int getSize();//返回隊列中元素的數量。
public boolean isEmpty();//判斷隊列是否為空。
公共對象first()引發ExceptionQueueEmpty//獲取第壹個元素(但不要刪除它)
公共對象last()引發ExceptionQueueEmpty//獲取最後壹個元素(但不要刪除它)
public void insertFirst(對象obj);//插入新元素作為第壹個元素
public void insert last(Object obj);//插入新元素作為最後壹個元素
公共對象removeFirst()引發ExceptionQueueEmpty//刪除第壹個元素
公共對象removeLast()引發ExceptionQueueEmpty//刪除最後壹個元素
public void遍歷();//遍歷
}
雙向鏈表的實現;
//Deque_DLNode.java
/*
*基於雙向鏈表的deque結構。
*/
包dsa
公共類Deque_DLNode實現Deque {
受保護的DLNode標頭;//指向頭節點(哨兵)
受保護的DLNode尾標;//指向尾部節點(哨兵)
受保護的int大小;//隊列中元素的數量
//構造函數
public Deque _ dl node(){
header = new dl node();
trailer = new dl node();
header.setNext(預告片);
trailer . set prev(header);
size = 0;
}
//返回隊列中元素的數量。
public int getSize()
{返回大小;}
//判斷隊列是否為空。
公共布爾值isEmpty()
{ return(0 = = size)?真:假;}
//獲取第壹個元素(但不要刪除它)
公共對象first()引發ExceptionQueueEmpty {
if(isEmpty())
throw new ExceptionQueueEmpty(“accident:deque為空“);
return header.getNext()。getElem();
}
//獲取最後壹個元素(但不要刪除它)
公共對象last()引發ExceptionQueueEmpty {
if(isEmpty())
throw new ExceptionQueueEmpty(“accident:deque為空“);
返回trailer.getPrev()。getElem();
}
//在隊列的前面插入壹個新節點。
公共void insertFirst(對象對象){
dlnodessecond = header . get next();
DLNodefirst = new dl node(obj,header,second);
second . setprev(first);
header . set next(first);
size++;
}
//在隊列的後端插入壹個新節點。
公共void insertLast(對象對象){
dlnodessecond = trailer . get prev();
DLNodefirst = new dl node(obj,second,trailer);
second . set next(first);
trailer . set prev(first);
size++;
}
//刪除第壹個節點
公共對象removeFirst()引發ExceptionQueueEmpty {
if(isEmpty())
throw new ExceptionQueueEmpty(“accident:deque為空“);
DLNodefirst = header . get next();
dlnodessecond = first . get next();
object obj = first . get elem();
header.setNext(秒);
second . setprev(header);
大小-;
return(obj);
}
//刪除最後壹個節點
公共對象removeLast()引發ExceptionQueueEmpty {
if(isEmpty())
throw new ExceptionQueueEmpty(“accident:deque為空“);
DLNodefirst = trailer . get prev();
dlnodessecond = first . get prev();
object obj = first . get elem();
trailer.setPrev(秒);
second.setNext(預告片);
大小-;
return(obj);
}
//遍歷
公共void遍歷(){
DLNodep = header . get next();
而(p!=拖車){
system . out . print(p . get elem()+““);
p = p . get next();
}
system . out . println();
}
}