0

Cài đặt stack 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 29-29 )

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

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

Chúng ta có thể cài đặt stack bởi danh sách liên kết nh chúng ta đã làm đối với danh sách. Đỉnh của stack là đầu của danh sách liên kết. Ta sử dung

con trỏ S trỏ đến đỉnh stack. Hình 3.12 minh hoạ danh sách liên kết biểu diễn stack (a1, a2, ..., an) với đỉnh là an.

S

...

Hình 3.12

Ta có thể khai báo cấu trúc dữ liệu danh sách liên kết biểu diễn stack nh sau :

type Stack = ^Cell Cell = record

Infor : Item ; next : Stack :

end ;

var S : Stack ;

Trong cách cài đặt này, S là stack rỗng, nếu S = nil. Chúng ta giả thiết rằng, việc cấp phát bộ nhớ cho các biến động (thủ tục new trong Pascal) luôn luôn đợc thực hiện. Do đó hàm Full luôn luôn có giá trị false, và phép toán Push không bao giờ thất bại.

Sau đây là các thủ tục và hàm thực hiện các phép toán trên Stack đợc cài đặt bởi danh sách liên kết.

procedure Initialize (var S : Stack) ; begin

S : = nil

end ;

function Emty (var S : Stack) : boolean ; begin

if S = nil then Emty : = true

else Emty : = false

end ;

function Full (var S : stack) : boolean ; begin

Full : = false

end ;

procedure Push (x : Item ; var S : Stack ; var OK : boolean), var P : ^Cell ; begin new (P) ; P^.infor : = x ; P^.next : = S ; S : = P ; OK : = true end ;

procedure Pop (var S : Stack ; var x: Item ; var OK : boolean) ; var P : ^Cell ;

begin

if S = nil then OK : = false

else begin P : = S ; x : = S^.infor ; S : = S^.next ; OK : = true ; dispose (P) ; end ; end ;

Các thao tác thực hiện các phép toán Push và Pop trên stack đợc minh hoạ trong hình 3.13a và 3.13b.

S

X

P (a) phép toán Push

X

... (b) Phép toán Pop

Hình 3.13. Các phép toán Push và Pop trên stack.

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