3 queue
TRANSCRIPT
![Page 1: 3 Queue](https://reader037.vdocuments.net/reader037/viewer/2022100319/553e024c5503468c338b4872/html5/thumbnails/1.jpg)
ADT هاي پايه اي:(QUEUE)صف (QUEUE)ف
سيد ناصر رضويi@ i iil [email protected]: 1386
معرفيمعرف(List)ليست •
(S k) (Stack)پشته –Q)(Queue)صف – )
DS course- N. Razavi - ٢٠٠٧ ٢
صفصف به طرف يك از درج عمل آن در كه است ليستي صف :تعريف•
اا )ا فاذفل( ااگط ا ابتدا نام بهديگر طرف از حذف عمل و(rear)انتها نام(front)ليست( .شود مي انجام FIFO(
QUEUE ADT( ويم(
elements
QUEUE ADT
frontrear
MAKENULLENQUEUEENQUEUEDEQUEUE
DS course- N. Razavi - ٢٠٠٧ ٣
صفصفاي داده انواع•
Q: QUEUEx: elementtypex: elementtype
صف اصلي عمليات• يMAKENULL (Q)ENQUEUE (x, Q)DEQUEUE (Q)DEQUEUE (Q)
DS course- N. Razavi - ٢٠٠٧ ۴
![Page 2: 3 Queue](https://reader037.vdocuments.net/reader037/viewer/2022100319/553e024c5503468c338b4872/html5/thumbnails/2.jpg)
گر اشاره وسيله به صف سازي پياده سازي صف به وسيله اشاره گرپيادهrearfrontعنصر n با صف•
Q
a1 a2 an. . .
Qتهي صف•rearfront
DS course- N. Razavi - ٢٠٠٧ ۵
گر اشاره وسيله به صف سازي پياده سازي صف به وسيله اشاره گرپيادهtype celltype = record
l t l ttelement: elementtype;next: ^celltypenext: celltype
end;
QUEUE = recordQUEUE = recordfront, rear: ^celltype
end;
DS course- N. Razavi - ٢٠٠٧ ۶
ايجاد يك صف تهي: عمليات صفQ
rearfront
Q
procedure MAKENULL (var Q: QUEUE);
beginnew (Q.front);Q.rear := Q.front; )1()( Θ∈nTQ.front^.next := nil
end;
DS course- N. Razavi - ٢٠٠٧ ٧
صف صفعمليات بودن ته بررس بررسي تهي بودن صف: عمليات صفfunction EMPTY (Q: QUEUE): boolean;begin
return (Q rear = Q front)return (Q.rear = Q.front)end;;
)1()( Θ∈nT
DS course- N. Razavi - ٢٠٠٧ ٨
![Page 3: 3 Queue](https://reader037.vdocuments.net/reader037/viewer/2022100319/553e024c5503468c338b4872/html5/thumbnails/3.jpg)
جدرج يك عنصر در صف: عمليات صفQ
rearfront
a1 a2 an. . . x
procedure ENQUEUE (x: elementtype; var Q: QUEUE);
begin
new (Q rear^ next);new (Q.rear .next);Q.rear := Q.rear^.next;Q rear^ element := x;Q.rear .element := x;Q.rear^.next := nil
end;end;)1()( Θ∈nT
DS course- N. Razavi - ٢٠٠٧ ٩
حذف يك عنصر از صف: عمليات صفQ
rearfront
a1 a2 an. . .
p
procedure DEQUEUE (var Q: QUEUE);var
p: ^celltype;begin
if EMPTY (Q) h (“Q i ”))1()( Θ∈nT
p: ^celltype;
if EMPTY (Q) then error (“Queue is empty”);
p := Q.front;
)()(
Q.front := p^.next;Dispose (p);
DS course- N. Razavi - ٢٠٠٧ ١٠
Dispose (p);end;
آرايه وسيله به صف سازي پياده سازي صف به وسيله آرايهپياده:دارند قرار آرايه يك در صف عناصر سازي، پياده روش اين در•
fآ .است آرايه درصف اول عنصر انديس حاوي front متغير–.است آرايه در صف انتهايي عنصر انديس حاوي rear متغير– ييريسويير يره ر
2
MAX
1
DS course- N. Razavi - ٢٠٠٧ ١١
MAX
رحذف و اضافه عناصر در صف ر وrear rear
A
front
A B
frontfront front
rear rear
A B C A B C D
front front
A B C D E
rear
B C D E
rear
A B C D E
front
B C D E
front
DS course- N. Razavi - ٢٠٠٧ ١٢
![Page 4: 3 Queue](https://reader037.vdocuments.net/reader037/viewer/2022100319/553e024c5503468c338b4872/html5/thumbnails/4.jpg)
رحذف و اضافه عناصر در صف ر وrear rear
C D E D E
front front
rear rear
F D E F G D E
front front
صف پر
DS course- N. Razavi - ٢٠٠٧ ١٣
صف بودن خال و پر تشخيص پر و خالي بودن صفتشخيص
rear
rear
front front
صف خالي صف پر
DS course- N. Razavi - ٢٠٠٧ ١۴
آرايه وسيله به صف سازي پياده سازي صف به وسيله آرايهپيادهtype
QUEUE dQUEUE = recordfront, rear: 1..MAXfront, rear: 1..MAX
end;
varvarspace: array[1..MAX] of elementtype;
DS course- N. Razavi - ٢٠٠٧ ١۵
صف عمليات ازي تپياده صف يك اد اي ايجاد يك صف تهي: پياده سازي عمليات صفprocedure MAKENULL (var Q: QUEUE);begin
Q rear := MAX;Q.rear := MAX;Q.front := 1Q
end;
DS course- N. Razavi - ٢٠٠٧ ١۶
![Page 5: 3 Queue](https://reader037.vdocuments.net/reader037/viewer/2022100319/553e024c5503468c338b4872/html5/thumbnails/5.jpg)
صف عمليات سازي پياده سازي عمليات صفپيادهfunction NEXT (i: integer): integer;begin
return ((i mod MAX) + 1 )return ((i mod MAX) + 1 )end;;
DS course- N. Razavi - ٢٠٠٧ ١٧
ف ات ل از فا ت بررسي تهي بودن صف: پياده سازي عمليات صفfunction EMPTY (Q: QUEUE): boolean;begin
return ( NEXT (Q rear) = Q front )return ( NEXT (Q.rear) = Q.front )end;;
front
rear
DS course- N. Razavi - ٢٠٠٧ ١٨
ف ات ل از فا بررسي پر بودن صف: پياده سازي عمليات صفfunction FULL (Q: QUEUE): boolean;begin
return ( NEXT (NEXT (Q rear)) = Q front )return ( NEXT (NEXT (Q.rear)) = Q.front )end;;
rear
front
DS course- N. Razavi - ٢٠٠٧ ١٩
ف ات ل از فا ن ك درج يك عنصر در صف:پياده سازي عمليات صفprocedure ENQUEUE (x: elementtype; var Q: QUEUE);
beginif FULL (Q) then
error (“Queue is full”);error ( Queue is full );Q.rear := NEXT (Q.rear);
[Q ]space [Q.rear] := xend;
DS course- N. Razavi - ٢٠٠٧ ٢٠
![Page 6: 3 Queue](https://reader037.vdocuments.net/reader037/viewer/2022100319/553e024c5503468c338b4872/html5/thumbnails/6.jpg)
ف ات ل از فا از ن ك ذف حذف يك عنصر از صف: پياده سازي عمليات صفprocedure DEQUEUE (var Q: QUEUE);
beginif EMPTY (Q) then
error (“Queue is empty”);error ( Queue is empty );Q.front := NEXT (Q.front)dend;
DS course- N. Razavi - ٢٠٠٧ ٢١
تمرينتمرينDouble) دوطرفه صف• Ended QUEue) كه است صفي
ااذفل فات اآط اان .داد انجام آن طرف دو هر از توان مي را حذف و درج عملپ سازيپياده را دوطرفه صف به مربوط عمليات و داده ساختمان
.نماييد
DS course- N. Razavi - ٢٠٠٧ ٢٢