0

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

Một phần của tài liệu DANH SÁCH TRONG MỘT MÔ HÌNH DỮ LIỆU (Trang 42-45 )

. Hình 37 Danh sách hai liên kết

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

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

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

begin 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 DANH SÁCH TRONG MỘT MÔ HÌNH DỮ LIỆU (Trang 42 -45 )