Professional Documents
Culture Documents
3 Queue
3 Queue
ﻣﻌﺮﻓ
(List) • ﻟﻴﺴﺖ
: ﻫﺎي ﭘﺎﻳﻪ ايADT (Stack)
(S k) – ﭘﺸﺘﻪ
(Q
(Queue)) – ﺻﻒ
(QUEUE) ﺻﻒ ﻒ
ﺳﻴﺪ ﻧﺎﺻﺮ رﺿﻮي
email:
il razavi@comp.iust.ac.ir
i@ i i
1386
ﺻﻒ ﺻﻒ
ﺻﻒ ﻟﻴﺴﺘﻲ اﺳﺖ ﻛﻪ در آن ﻋﻤﻞ درج از ﻳﻚ ﻃﺮف ﺑﻪ:• ﺗﻌﺮﻳﻒ • اﻧﻮاع داده اي
دﻳﮕﺮ ﺑﻪ ﺎﻧﺎم ا ا
اﺑﺘﺪا ﻃﺮف ﮕ
ﺣﺬف ااز ﻃ ف ( و ﻞrear) اﻧﺘﻬﺎ
ﻋﻤﻞ ﺬف ﺎﻧﺎم ا ﺎ Q: QUEUE
(FIFO )ﻟﻴﺴﺖ.ﺷﻮد
ﻲ ﻮ( اﻧﺠﺎمم ﻣﻲfront)
QUEUE ADT x: elementtype
elements • ﻋﻤﻠﻴﺎت اﺻﻠﻲ
ﻲ ﺻﻒ
front
rear
MAKENULL (Q)
MAKENULL
ENQUEUE (x, Q)
ENQUEUE
DEQUEUE DEQUEUE (Q)
a1 a2 ... an x a1 a2 ... an
p
procedure ENQUEUE (x: elementtype; var Q: QUEUE);
procedure DEQUEUE (var Q: QUEUE);
begin
var
new (Q.rear
Q rear^.next); p: ^celltype;
Q.rear := Q.rear^.next; begin
Q rear^.element := x;
Q.rear T (n) ∈ Θ(1)
if EMPTY (Q) then
h error (“Queue
(“Q iis empty”);
”)
Q.rear^.next := nil
p := Q.front;
end;
T (n) ∈ Θ(1) Q.front := p^.next;
Dispose (p);
DS course- N. Razavi ٢٠٠٧ - ٩ end; DS course- N. Razavi ٢٠٠٧ - ١٠
A A B
: ﻋﻨﺎﺻﺮ ﺻﻒ در ﻳﻚ آراﻳﻪ ﻗﺮار دارﻧﺪ،• در اﻳﻦ روش ﭘﻴﺎده ﺳﺎزي
front front
. ﺣﺎوي اﻧﺪﻳﺲ ﻋﻨﺼﺮ اول ﺻﻒ در آآراﻳﻪ اﺳﺖfront
f – ﻣﺘﻐﻴﺮ
.آراﻳﻪ اﺳﺖ
ﻳﻲ ﺻﻒ درر ر ﻳ
اﻧﺘﻬﺎﻳﻲ
ﻳﺲ ﻋﻨﺼﺮﺮ ﻬ ﺣﺎويrear ﻴﺮ
وي اﻧﺪﻳﺲ – ﻣﺘﻐﻴﺮ rear rear
A B C A B C D
front front
rear rear
2
A B C D E B C D E
1
front front
MAX
front front
rear rear
rear
F D E F G D E rear
front front
front front
ﺻﻒ ﭘﺮ
ﺻﻒ ﺧﺎﻟﻲ ﺻﻒ ﭘﺮ
function NEXT (i: integer): integer; function EMPTY (Q: QUEUE): boolean;
begin begin
return ((i mod MAX) + 1 ) return ( NEXT (Q.rear
Q rear) = Q.front
Q front )
end;; end;;
rear
front
function FULL (Q: QUEUE): boolean; procedure ENQUEUE (x: elementtype; var Q: QUEUE);
begin
begin
return ( NEXT (NEXT (Q.rear
Q rear)) = Q.front
Q front ) if FULL (Q) then
end;; error ((“Queue
Queue is full
full”);
);
Q.rear := NEXT (Q.rear);
space [Q.rear
Q ] := x
rear
end;
front
DS course- N. Razavi ٢٠٠٧ - ٢١ DS course- N. Razavi - ٢٠٠٧ ٢٢