佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為出隊。因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出(fifo—first in first out)線性表。
我們拿單向佇列舉例。
入隊示例:
出隊示例:
佇列分為:
①、單向佇列(queue):只能在一端插入資料,另一端刪除資料。
②、雙向佇列(deque):每一端都可以進行插入資料和刪除資料操作。
③、優先順序佇列(priority):優先順序佇列是比棧和佇列更專用的資料結構,在優先順序佇列中,資料項按照關鍵字進行排序,關鍵字最小(或者最大)的資料項往往在佇列的最前面,而資料項在插入的時候都會插入到合適的位置以確保佇列的有序。
public class arrayqueue
this.maxsize = maxsize;
data = new object[this.maxsize];
this.front = -1;
this.tail = -1;
this.currentsize = 0;
}public void insert(object obj)elseelse}}
public object remove()else if(currentsize >1)
return rtn;
}public boolean isempty()
public boolean isfull()
public void display()else
system.out.print(" ]");
}system.out.println();
}public static void main(string args)
}
輸出
[ 0 1 2 3 4 ]//0
1[ null null 2 3 4 ]
//[ 5 null 2 3 4 ]//2
34[ 5 null null null null ]
//[ 5 6 null null null ]
雙端佇列就是乙個兩端都是結尾或者開頭的佇列, 佇列的每一端都可以進行插入資料項和移除資料項,這些方法可以叫做:insertright()、insertleft()、removeleft()、removeright()
1)如果嚴格禁止呼叫insertleft()和removeleft()(或禁用右端操作),那麼雙端佇列的功能就和前面講的棧功能一樣。
2)如果嚴格禁止呼叫insertleft()和removeright(或相反的另一對方法),那麼雙端佇列的功能就和單向佇列一樣了。
public class priorityarrayqueue
this.size = size;
data = new int[this.size];
currentsize = 0;
}public void insert(int value)
if(currentsize == size)else if(currentsize == 0)else
return rtn;
}public void display()
system.out.print("[ ");
for(int i : data)
system.out.print(" ]");
system.out.println();
}public static void main(string args)
}
輸出
[ 1 2 4 ]
/[ 1 2 -1 ]
/
java資料結構 佇列
1.用鍊錶實現單向佇列 package com.jzm.stackqueuetree public class linkqueue end constructor private class node end constructor private t getdata private node ge...
java資料結構 佇列
佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表。1 允許刪除的一端稱為隊頭 front 2 允許插入的一端稱為隊尾 rear 3 當佇列中沒有元素時稱為空佇列。4 佇列亦稱作先進先出 first in first out 的線性表,簡稱為fifo表。佇列的修改是依先進...
Java佇列資料結構
佇列 queue 是一種採用先進先出 fifo 策略的抽象資料結構,它的想法來自於生活中排隊的策略。顧客在付款結賬的時候,按照到來的先後順序排隊結賬,先來的顧客先結賬,後來的顧客後結賬。它的特點是一種只允許在一端進行插入,在另一端進行刪除的線性表結構。執行插入的一端叫隊尾 rear 允許刪除的一端叫...