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