Queue (Antrian) adalah list linier yang :
1. Elemen yang pertama kali masuk antrian akan keluar pertama kalinya
2. Dikenali elemen pertama (Front) dan elemen terakhirnya (Tail)
3. Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai berikut :
a) Penyisipan selalu dilakukan setelah elemen terakhir
b) Penghapusan selalu dilakukan pada elemen pertama
4. Satu elemen dengan elemen lain dapat diakses melalui informasi Next
5. Antrian dapat dibuat dengan menggunakan: Linier Array dan Circular Array
Front dan tail selalu bergerak maju/naik sehingga
1. Bila tail telah mencapai elemen terakhir array, antrian dianggap penuh walau sebenarnya mungkin elemen-elemen awal antrian telah dihapus (dikosongkan).
2. Bila front dan tail mencapai nilai yang sama berarti antrian dalam keadaan kosong maka front dan tail dapat diinisialisasi kembali ke kondisi semula.
Deklarasi queue menggunakan singly linked list:
Type
TData=…;
TKey= …;
PNode=^Node;
Node=record
Key:TKey;
Data:TData;
Next:PNode;
End;
Queue=record
Count:integer;
Front,tail:PNode;
End;
Opersi-operasi di QUEUE
1. InitQ(Q)menciptakan Qdengan queue kosong
Procedure InitQ(var Q:Queue);
Begin
Q.count:=0;
Q.front:=nil;
Q.tail:=nilai;
End;
2. AddQ(Q,x) menambah elemen x ke rear queue
Procedure AddQ(var Q:Queue; p:PNode);
{sama dengan insert last, yang elemen last-nya disimpan}
Begin
Q.tail^.next:=p;
Q.tail:=p;
If Q,front=nil then q.front:=Q.tail; {elemen pertama dan satu-satunya dari queue}
Q.count:=Q.count+1;
End;
3. RemoveQ(Q,x) menghilangkan elemen pada front dari queue Q
Procedure removeQ(var Q:Queue; var k:TKey; d:TData);
{sama dengan delete first}
Var p:PNode;
Begin
If (Q.frontNil) then
Begin
P:=Q.Front;
Q.front:=Q.front^.Next;
If Q.front=nil then Q.tail:=nil; {elemen satu2nya dihapus}
K:=p^.key;
D:=p^.data;
Q.Count:=Q.count-1;
Dispose(p);
End;
End;
4. Front(Q) mengirim elemen front dari queue
Function frontQ (Q:queue):listPtr;
Begin
FrontQ:=Q.front;
End;
5. IsEmptyQ(Q) yang mengembalikan true if Q kosong else false
Function isEmpityQ(Q:queue):Boolean;
Begin
isEmptyQ:=(S.front=nil);
end;
6. HowManyIn(Q) mengirimkan jumlah elemen di Queue
Function howManyInQ(Q:queue):integer;
Begin
howManyInQ:=Q.count;
End;
Senin, 12 April 2010
Langganan:
Posting Komentar (Atom)
Is online gambling legal in the US? - Dr.MCD
BalasHapusIt's a simple question 사천 출장샵 and must be answered before we start to 동두천 출장샵 discuss the legalization of 경상남도 출장안마 gambling. Gambling 계룡 출장안마 is an 거제 출장샵 activity that was prohibited in