Professional Documents
Culture Documents
CTDL 04 v1 PDF
CTDL 04 v1 PDF
Danh sách
a1
a2
a3
...
anmax
anmax
ai-1
x
ai
an
ai x
ai+1
...
di chuyển lên 1 vị trí
an
Head
a1
a2
an
nil
Head
nil
Head
b
1
q
2
p
3
…
nil
b
1
p
2
nil
Chương 4. Danh sách 2006 Nguyễn Trung Trực - Khoa CNTT 22
Danh sách liên kết
procedure List_Delete (Head: lptr; x: integer);
var b, p: lptr; found: boolean;
begin
b := Head; p := b^.next; found := false;
while (p <> nil) and not found do
if p^.info < x then
begin b := p; p := p^.next end
else if p^.info = x then found := true
else p := nil;
if found then
begin b^.next := p^.next; dispose(p) end
end;
Lệnh gọi: List_Delete (Head, x);
Chương 4. Danh sách 2006 Nguyễn Trung Trực - Khoa CNTT 23
Danh sách liên kết
Tìm kiếm một phần tử trong danh sách có
thứ tự tăng dần.
function List_Search (Head: lptr; x: integer): ptr;
var p: lptr; found: boolean;
begin
p := Head^.next; found := false;
while (p <> nil) and not found do
if p^.info < x then p := p^.next
else if p^.info = x then found := true
else p := nil;
List_Search := p
end;
Lệnh gọi: location := List_Search (Head, x);
Chương 4. Danh sách 2006 Nguyễn Trung Trực - Khoa CNTT 24
Danh sách liên kết
Kiểm tra danh sách rỗng
function List_Empty (Head: lptr): boolean;
begin
List_empty := Head^.next = nil
end;
Lệnh gọi: empty := List_Empty (Head);
Head
Head
b 1
2 q
p 3
b
1
p
3
a
4
Stack
nil
Stack
nil