IỊ4.2. Tổ chức hàng đợi bằng mảng

Một phần của tài liệu MỘT số vấn đề về KIỂU dữ LIỆU TRỪU TƯỢNG (Trang 32)

Chương II: DANH SÁCH TUYẾN TÍNH

IỊ4.2. Tổ chức hàng đợi bằng mảng

hàng đợi, một biến nguyên front để lưu chỉ số phần tử đầu hàng đợi và một biến nguyên rear để lưu chỉ số phần tử cuối hàng đợị Chỉ một phần của mảng items từ vị trí front tới rear được sử dụng lưu trữ các phần tử trong hàng đợị

Const max = 1000; {Dung lượng cực đại} Type

Telement = integer; {Kiểu giá trị một phần tử} TQueue = record

Items: array[1..max] of TElement; Front: integer;

Rear: integer; End;

Var Queue: TQueue;

Bổ sung/ Đưa vào

Front (Lối sau, đầu) Rear (Lối trước, cuối)

Loại bỏ/ Đưa ra

Các thao tác cơ bản trên hàng đợi được cài đặt bằng ngôn ngữ lập trình Free Pascal như sau:

uses crt; const max = 1000; type TElement = integer; TQueue = record

items: array[1..max] of Telement; front: integer;

rear: integer; end;

var

Queue: TQueue;

Procedure init(var Q: TQueue); begin

Q.front:= 1; Q.rear:= 0; end;

Function IsEmpty(var Q: TQueue): Boolean; begin

IsEmpty:= (Q.front > Q.rear); end;

Function IsFull(var Q: TQueue): Boolean; begin

IsFull:= (Q.rear = max); end;

Function Get(var Q: TQueue): TElement; begin

if IsEmpty(Q) then write('Queue rong!') else Get:= Q.items[Q.front];

end;

Procedure Push(x: TElement; var Q: TQueue); begin

if IsFull(Q) then write('Queue day!') else with Q do begin rear:= rear + 1; items[rear]:= x; end; end;

Function Pop(var Q: TQueue): TElement; begin

if IsEmpty(Q) then write('Queue rong!') else with Q do begin Pop:= items[front]; front:= front + 1; end; end; procedure Test; const r = 100;

var i,x,k,n: integer;

a: array[1..max] of TElement; begin

Init(Queue); randomize;

n:= 10; For i:=1 to n do begin x:= random(r); Push(x,Queue); end;

writeln('Cac phan tu thuoc hang doí); with Queue do

for i:=front to rear do write(items[i], ' '); readln;

k:= 0;

While not IsEmpty(Queue) do begin x:= Pop(Queue); if x mod 2 = 0 then begin k:= k+1; a[k]:= x; end; end; writeln; writeln;

for i:= 1 to k do write(a[i],' '); readln; end;

BEGIN

Test; END.

IỊ4.3. Tổ chức hàng đợi bằng danh sách vòng (Xem [1], Trang 21)

Một phần của tài liệu MỘT số vấn đề về KIỂU dữ LIỆU TRỪU TƯỢNG (Trang 32)

Tải bản đầy đủ (DOC)

(76 trang)
w