1. Trang chủ
  2. » Công Nghệ Thông Tin

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

9 10 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 436,95 KB

Nội dung

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 cung cấp cho người học các kiến thức: Giới thiệu về danh sách liên kết, danh sách liên kết đơn, danh sách liên kết vòng, danh sách liên kết kép, cài đặt ngăn xếp và hàng đợi bằng danh sách liên kết đơn.

1 Giới thiệu danh sách liên kết Sử dụng trỏ để tổ chức lưu trữ danh sách tuyến tính tạo cấu trúc liệu danh sách liên kết l Mỗi phần tử danh sách lưu trữ phần tử nhớ mà ta gọi nút (node) Mỗi nút bao gồm số ô nhớ liền kề nằm chỗ nhớ Trong nút thơng tin ứng với phần tử, cịn có địa nút liền kề l CHƯƠNG DANH SÁCH LIÊN KẾT GV Ngô Công Thắng Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin Website: dse.vnua.edu.vn/ncthang Email: ncthang@vnua.edu.vn Ngô Công Thắng Danh sách liên kết chia thành danh sách liên kết đơn, danh sách liên kết vòng danh sách liên kết kép l Danh sách liên kết đơn dùng làm cấu trúc lưu trữ cho cấu trúc ngăn xếp hàng đợi Giới thiệu danh sách liên kết Danh sách liên kết đơn Danh sách liên kết vòng Danh sách liên kết kép Cài đặt ngăn xếp hàng đợi danh sách liên kết đơn Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.3 Giới thiệu danh sách liên kết (tiếp) CHƯƠNG DANH SÁCH LIÊN KẾT Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 l 3.2 Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.4 2.1 Quy tắc tổ chức danh sách liên kết đơn (tiếp) 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 l l l l l LINK Để tổ chức lưu trữ danh sách liên kết phải có: Ta ký hiệu: l l Ngơ Cơng Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.5 Phải có phương tiện chia nhớ thành nút nút truy nhập vào trường Phải có chế để xác định nút sử dụng chưa sử dụng (nút trống) 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 P ⇐ AVAIL phép lấy nút trống có địa P (cấp phát nút) P ⇒ AVAIL phép thu hồi nút có địa P Ngô Công Thắng 2.1 Quy tắc tổ chức danh sách liên kết đơn (tiếp) Nút cuối danh sách khơng có nút đứng sau nên trường địa rỗng, không chứa địa chỉ, ta ký hiệu ∅ l Để truy nhập vào tất nút danh sách phải có địa nút đầu tiên, cần phải có trỏ F trỏ tới nút l Nếu danh sách rỗng qui ước F = ∅ A1 Ngơ Cơng Thắng A2 A3 Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.7 2.2 Một số phép toán danh sách liên kết đơn l F Bài giảng Cấu trúc liệu giải thuật - Chương 03 A4 ∅ 3.6 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 Cho danh sách liên kết đơn F, M trỏ trỏ tới nút danh sách Viết thủ tục bổ sung phần tử liệu X vào sau nút M l Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.8 2.2 Một số phép toá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 INSERT(F,M,X) {Tạo nút mới} new ⇐ AVAIL INFOR(new):=X; LINK(new):= ∅; Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.9 {Thực bổ sung: Nếu danh sách rỗng bổ sung nút vào thành nút Nếu danh sách không rỗng bổ sung nút vào sau nút M} If F=∅ then F:=new Else begin LINK(new):=LINK(M); LINK(M):=new; end; Return Bài giảng Cấu trúc liệu giải thuật - Chương 03 b) Loại bỏ nút khỏi danh sách - Vào: F, M - Ra: Không {Cho danh sách liên kết đơn F, loại bỏ nút trỏ M khỏi danh sách.} Procedure DELETE(F,M) { Trường hợp danh sách rỗng} If F=∅ then begin Write(‘danh sách rỗng’) Return end Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.11 2.2 Một số phép toán danh sách liên kết đơn (tiếp) 2.2 Một số phép toán danh sách liên kết đơn (tiếp) Ngơ Cơng Thắng 2.2 Một số phép tốn danh sách liên kết đơn (tiếp) 3.10 b) Loại bỏ nút khỏi danh sách {Nút trỏ M nút danh sách } If M=F then begin F:=LINK(F) M ⇒ AVAIL Return end Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.12 2.2 Một số phép toán danh sách liên kết đơn (tiếp) 2.2 Một số phép toán danh sách liên kết đơn (tiếp) c) Ghép hai danh sách liên kết đơn {Tìm đến nút đứng trước nút M } P:=F; While LINK(P) # M P:=LINK(P) {Loại bỏ nút trỏ M} LINK(P):=LINK(M) {Hủy nút M} M ⇒ AVAIL Return Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 {Tìm đến nút cuối danh sách p} p1:= p While link(p1) # ∅ p1:=link(p1); {Ghép} Link(p1):=q; Return 3.13 2.2 Một số phép toán danh sách liên kết đơn (tiếp) {Danh sách trỏ q rỗng} If q = ∅ then Return {Trường hợp danh sách trỏ p rỗng} If p = ∅ then begin p:=q return end Bài giảng Cấu trúc liệu giải thuật - Chương 03 Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.15 Ưu nhược điểm danh sách liên kết đơn c) 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 Ghep(p,q) Ngô Công Thắng Ngô Công Thắng 3.14 Với danh sách tuyến tính động, 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 l Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.16 Danh sách liên kết vòng Danh sách liên kết vòng (tiếp) 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 l 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 Head A1 F Ngô Công Thắng A2 A3 A5 Bài giảng Cấu trúc liệu giải thuật - Chương 03 A1 3.17 Danh sách liên kết vòng (tiếp) l Ưu nhược điểm danh sách nối vịng: Ngơ Cơng Thắng l Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.18 A3 Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.19 Danh sách liên kết vòng (tiếp) 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 nút được, không thiết phải từ nút Nút nút trỏ F trỏ vào nút 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 A2 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 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 Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.20 4.2 Các phép toán danh sách liên kết kép Danh sách liên kết kép 4.1 Giới thiệu l Danh sách liên kết kép (double linked list) danh sách mà nút có trỏ, trỏ tới nút đứng trước trỏ tới nút đứng sau l Cấu trúc nút sau: LPTR INFOR a) Chèn thêm nút vào danh sách l Chèn phần tử liệu X vào trước nút M danh sách liên kết kép L, R RPTR LPTR: Con trỏ trỏ tới nút đứng trước RPTR: Con trỏ trỏ tới nút đứng sau INFOR: Trường thông tin Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.21 Ngô Công Thắng LPTR nút cực trái RPTR nút cực phải có giá trị ∅ l Để truy nhập vào danh sách chiều ta phải dùng trỏ: Con trỏ L trỏ vào nút cực trái, trỏ R trỏ vào nút cực phải l Khi danh sách rỗng L = R = ∅ l L Ngơ Cơng Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 C 3.22 Vào: L,R,M,X - Ra: Không có {Thủ tục bổ sung phần tử X vào trước nút M DSLK kép L, R} Procedure Insert(L,R,M,X) {Tạo nút mới} new ⇐ AVAIL IF new= ∅ then begin write(‘Hết nhớ’); return; end; INFOR(new) := X LPTR(new):=RPTR(new):= ∅ - R B 3.23 4.2 Các phép toán danh sách liên kết kép 4.1 Giới thiệu (tiếp) A Bài giảng Cấu trúc liệu giải thuật - Chương 03 Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.24 b) Loại bỏ nút khỏi danh sách liên kết kép a) Chèn thêm nút vào danh sách {Trường hợp danh sách rỗng} If L=R=∅ then begin L:=R:=new ; Return; end {M trỏ tới nút cực trái} If M=L then begin RPTR(new):= L; LPTR(L):= new; L:=new; Return; end Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 Cho danh sách liên kết kép L, R M trỏ trỏ tới nút danh sách cần loại bỏ - Vào: (L,R), M - Ra: Khơng có {Thủ tục loại bỏ nút trỏ M DSLK kép L, R} Procedure Delete(L, R, M) { Trường hợp danh sách rỗng } If L=R=∅ then begin Write(‘ danh sach rong ‘) Return end l 3.25 3.27 {Loại bỏ} Case L= R: Begin {Danh sach nút M} L:= ∅ R:= ∅ end M=L: Begin { Nút cực trái bị loại } L:=RPTR(L) LPTR(L):= ∅ end {Bổ sung vào DS trước M} RPTR(LPTR(M)):=new LPTR(new):=LPTR(M) LPTR(M):=new RPTR(new):=M {Kết thúc} Return Bài giảng Cấu trúc liệu giải thuật - Chương 03 Bài giảng Cấu trúc liệu giải thuật - Chương 03 b) Loại bỏ nút khỏi danh sách liên kết kép a) Chèn thêm nút vào danh sách Ngô Công Thắng Ngô Công Thắng 3.26 Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.28 Cài đặt ngăn xếp hàng đợi danh sách liên kết đơn b) Loại bỏ nút khỏi danh sách liên kết kép M=R: Begin { Nút cực phải bị loại } R:=LPTR(R) RPTR(R):= ∅ end ELSE RPTR(LPTR(M)):=RPTR(M) LPTR(RPTR(M)):=LPTR(M) End Case M ⇒ AVAIL; {Hủy nút M} {Kết thúc} Return Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 - Vào: T, X - Ra: Khơng có {Thủ tục bổ sung phần tử X vào ngăn xếp T lưu trữ DSLK đơn} Procedure Push(Var T,X) 1) {Tạo nút mới} new AVAIL; Pop:=Tg; Return Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.30 Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3.32 Cài đặt ngăn xếp hàng đợi danh sách liên kết đơn 5.2 Cài đặt Queue danh sách liên kết đơn - Vào: (F, R), X - Ra: Không có {Thủ tục bổ sung phần tử X vào lối sau hàng đợi (F, R) lưu trữ DSLK đơn} Procedure Qinsert(F,R,X) 1) {Tạo nút mới} new AVAIL; Pop:=Tg; Return Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3 .30 Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3 .32 Cài đặt ngăn xếp hàng đợi danh... phép bổ sung, loại bỏ phần tử l Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3 .34 Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 03 3 .36

Ngày đăng: 20/05/2021, 03:36

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN