Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 3: Danh sách liên kết (Ngô Công Thắng) - Trường Đại học Công nghiệp Thực phẩm Tp. Hồ Chí Minh

10 37 1
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 3: Danh sách liên kết (Ngô Công Thắng) - Trường Đại học Công nghiệp Thực phẩm Tp. Hồ Chí Minh

Đang tải... (xem toàn văn)

Thông tin tài liệu

[r]

(1)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

CHƯƠNG 3

DANH SÁCH LIÊN KẾT

1 Giới thiệu danh sách liên kết Danh sách liên kết đơn

3 Danh sách liên kết vòng Danh sách liên kết kép

5 Cài đặt ngăn xếp hàng đợi danh sách liên kết đơn

3.1

1 Giới thiệu về danh sách liên kết

l Danh sách liên kết danh sách tuyến tính sử dụng cấu trúc lưu trữ phân tán Các phần tử liệu danh sách lưu trữ phần tử nhớ mà ta gọi nút (node) Trong nút nhớ, phần tử liệu cịn có địa nút lân cận Nếu nút nhớ có liên kết ta có

(2)

Ngơ Cơng Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

2 Danh sách liên kết đơn

2.1 Quy tắc tổ chức danh sách liên kết đơn

l Mỗi nút danh sách có hai trường, trường INFOR chứa thông tin phần tử trường LINK chứa địa nút đứng sau (đây địa liên kết)

INFOR LINK

3.3

2.1 Quy tắc tổ chức danh sách liên kết đơn (tiếp)

l Nút cuối danh sách khơng có nút đứng sau nên trường địa LINK rỗng (∅)

l Để truy nhập vào tất nút danh sách phải có trỏ F trỏ tới nút

l Khi danh sách rỗng F = ∅

A1 A2 A3 A4 ∅

(3)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

2.1 Quy tắc tổ chức danh sách liên kết đơn (tiếp)

l Để tổ chức lưu trữ danh sách liên kết phải có:

l Phải có phương tiện chia nhớ thành nút nút truy nhập vào trường

l Phải có chế để xác định nút sử dụng chưa sử dụng (nút trống)

l Phải có chế cung cấp nút trống có yêu cầu sử dụng thu hồi lại nút không cần dùng

l Ta ký hiệu:

l P ⇐ AVAIL phép lấy nút trống có địa P (cấp phát nút)

l P ⇒ AVAIL phép thu hồi nút có địa P

3.5

2.2 Một số phép toán trên danh sách liên kết đơn

l Ký hiệu: Một nút có địa p (được trỏ p) INFOR(p) LINK(p) tương ứng trường INFOR LINK nút

a) Bổ sung nút vào danh sách

(4)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

2.2 Một số phép toán trên danh sách liên kết đơn (tiếp)

a) Bổ sung nút vào danh sách: - Vào: F, M, x

- Ra: Khơng có

{Thủ tục bổ sung phần tử x vào sau nút trỏ M danh sách liên kết đơn F} Procedure SLPostInsert(Var F; M,x)

1 {Tạo nút mới} N ⇐ AVAIL

infor(N):=x; link(N):= ∅;

3.7

2.2 Một số phép toán trên danh sách liên kết đơn (tiếp)

2 {Nối nút vào sau nút M} If F=∅ then F:=N

Else begin

link(N) := link(M); link(M) := N;

(5)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

2.2 Một số phép toán trên danh sách liên kết đơn (tiếp) b) Loại bỏ nút khỏi danh sách

- Vào: F, M - Ra: Không

{Thủ tục loại bỏ nút trỏ M khỏi danh sách liên kết đơn F}

Procedure SLDelete(Var F; M) { Trường hợp danh sách rỗng}

If F=∅ then begin

Write(‘danh sách rỗng’) Return

end

3.9

2.2 Một số phép toán trên danh sách liên kết đơn (tiếp) b) Loại bỏ nút khỏi danh sách

2 {Ngắt kết nối với nút M}

{Nút M nút danh sách } If M=F then F:=link(F)

Else begin

{Tìm đến nút đứng trước nút M } P:=F;

(6)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

2.2 Một số phép toán trên danh sách liên kết đơn (tiếp) {Hủy nút M}

M ⇒ AVAIL Return

3.11

2.2 Một số phép toán trên danh sách liên kết đơn (tiếp) c) Duyệt danh sách

- Vào: F

- Ra: Không

{Thủ tục duyệt danh sách liên kết đơn F

đưa phần tử liệu ds} Procedure SLDisplay(F)

1) P := F;

2) While P # ∅ begin

(7)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

2.2 Một số phép toán trên danh sách liên kết đơn (tiếp) d) Ghép hai danh sách liên kết đơn

Cho danh sách liên kết đơn trỏ p q, ghép danh sách trở thành danh sách cho p trỏ tới Thuật tốn có bước sau:

Procedure SLConcat(Var p, q)

1 {Danh sách trỏ q rỗng} If q = ∅ then Return

2 {Trường hợp danh sách trỏ p rỗng} If p = ∅ then begin

p:=q return end

3.13

2.2 Một số phép toán trên danh sách liên kết đơn (tiếp)

d) Ghép hai danh sách liên kết đơn

3 {Tìm đến nút cuối danh sách p} p1:= p

While link(p1) # ∅ p1:=link(p1); {Ghép}

(8)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

Ưu nhược điểm danh sách liên kết đơn

l Với danh sách tuyến tính động, q trình xử lý ln có bổ sung, loại bỏ tổ chức danh sách liên kết hợp lý, tận dụng vùng nhớ nằm rải rác nhớ

l Chỉ có phần tử truy nhập trực tiếp, phần tử khác phải truy nhập qua phần tử đứng trước

l Tốn nhớ phải lưu trường infor link nút

3.15

3 Danh sách liên kết vòng

l Danh sách liên kết vòng (Circularly Linked List) dạng cải tiến danh sách liên kết đơn

l Trong danh sách liên kết vòng, trường địa nút cuối rỗng mà lại chứa địa nút danh sách

A1 A2 A3 A5

(9)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

3 Danh sách liên kết vòng (tiếp)

l Ưu nhược điểm danh sách nối vòng:

l Danh sách nối vòng làm cho việc truy nhập vào nút danh sách linh hoạt Ta truy nhập vào danh sách

một nút được, không thiết phải từ nút Nút nút

đầu tiên trỏ F trỏ vào nút

được

l Nhược điểm danh sách nối vòng xử lý khơng cẩn thận dẫn tới chu trình không kết thúc

3.17

3 Danh sách liên kết vòng (tiếp)

l Để khắc phục nhược điểm danh sách nối vòng ta đưa thêm vào nút đặc biệt gọi “nút đầu danh sách” (list head

node) Trường Infor nút không

chứa liệu, trỏ HEAD trỏ tới nút đầu danh sách cho phép ta truy nhập vào danh sách

A1 A2 A3

(10)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03

3 Danh sách liên kết vòng (tiếp)

l Việc dùng thêm nút đầu danh sách làm cho danh sách ln có nút nên khơng rỗng Danh sách có nút HEAD có

LINK(Head)= Head

l Các phép toán bổ sung loại bỏ nút

danh sách liên kết vòng tương tự danh sách liên kết đơn

Head

3.19

4 Danh sách liên kết kép

4.1 Giới thiệu

l Trong danh sách liên kết kép (double linked list) nút có cấu trúc gồm trường:

LEFT: Con trỏ trỏ tới nút đứng trước RIGHT: Con trỏ trỏ tới nút đứng sau INFOR: Chứa phần tử liệu

Ngày đăng: 01/04/2021, 15:45

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan