Cài đặt hàng bởi danh sách liên kết.

Một phần của tài liệu Cấu trúc dữ liệu và giải thuật Chương 3 Danh sách (Trang 42 - 44)

Cũng nh stack, hàng có cấu trúc toán học nh danh sách, nhng chỉ đợc phép thực hiện đợc một số phép toán đặc biệt. Do đó, ta cũng có thể sử dụng danh sách liên kết để biểu diễn dễ hàng. Ta cần đa vào hai con trỏ, một con trỏ trỏ đến đầu hàng một con trỏ trỏ đến cuối hàng. Ta có thể mô tả cấu trúc dữ liệu danh sách liên kết để biểu diễn hàng nh sau.

type pointer = ^ Cell Cell = record infor : Item ; next : pointer ; end ; Queue = record front ; rear : pointer ; end ; var Q : Queue ;

Hình 3.16 minh hoạ một hàng đợc biểu diễn bởi danh sách liên kết. front rear

Hình 3.16 Danh sách liên kết biểu diễn hàng.

Trong cách cài đặt này, hàng đợc xem là không khi nào đầy (ta giả thiết là, luôn luôn có không gian nhớ để cấp phát cho các thành mới cần đợc đa vào hàng). Điều kiện để hàng rỗng là Q.front = nil

Sau đây là các thủ tục và hàm thực hiện các phép toán trên hàng.

procedure Initialize (var Q : Queue) ; begin

Q. front : = nil

end ;

function Emty (var Q : queue) : boolean ; begin

if Q.front = nil then Emty : true else Emty : false

end ;

function Full (var Q : Queue ) boolean ; begin

Full : = false

end ;

procedure AddQueue (x : Item; var Q : Queue ; var Ok : boolean) var P : pointer ; begin new (P) ; P^ . infor : = X ; P^. next : = nil ; with Q do

if front = nil then

front : = P ; rear : = P ; end else begin rear^. next : = P ; rear : = P end ; Ok : true end ;

procedure DeleteQueue (var Q : Queue ; var x : Item ; var Ok : boolean);

var P : pointer ;

begin

with Q do

if front = nil then Ok : = false else begin

P : = front ;

x : = front^.infor ; front : = front^.next ; Ok : = true ;

dispose (P) end

Một phần của tài liệu Cấu trúc dữ liệu và giải thuật Chương 3 Danh sách (Trang 42 - 44)

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

(44 trang)
w