1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng cấu trúc dữ liệu và giải thuật chương 4 ths thiều quang trung

40 55 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 40
Dung lượng 1,23 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Danh sách liên kết• Định nghĩa: Danh sách liên kết DSLK là một danh sách mà các phần tử được kết nối với nhau nhờ vào vùng liên kết của chúng.. • Một phần tử của DSLK bao gồm 2 vùng chí

Trang 1

C HƯƠNG 4

K IỂU D ANH S ÁCH L IÊN K ẾT

GV Th.S Thiều Quang Trung Trường Cao đẳng Kinh tế Đối ngoại

Trang 2

• Khái niệm danh sách liên kết

Trang 3

Danh sách liên kết

• Định nghĩa: Danh sách liên kết (DSLK) là một danh

sách mà các phần tử được kết nối với nhau nhờ vào vùng liên kết của chúng

• Một phần tử của DSLK bao gồm 2 vùng chính:

– Vùng chứa thông tin

– Vùng chứa địa chỉ, còn gọi là vùng liên kết

• DSLK là cấu trúc dữ liệu động nên có thể thực hiện các phép thêm vào, loại bỏ phần tử trong khi chạy

chương trình

• Việc lưu trữ DSLK tốn bộ nhớ hơn danh sách đặc vì

Trang 4

Danh sách liên kết

• Các kiểu tổ chức DSLK:

– Danh sách liên kết đơn: mỗi phần tử liên kết với

phần tử đứng sau nó trong danh sách:

– Danh sách liên kết kép: mỗi phần tử liên kết với

các phần tử đứng trước và sau nó trong danh sách:

– Danh sách liên kết vòng: phần tử cuối danh sách

liên kết với phần tử đầu danh sách:

4

GV Thiều Quang Trung

Trang 6

Danh sách liên kết

• Các phép toán cơ bản trên danh sách liên kết:

1 Khởi tạo danh sách

2 Kiểm tra danh sách rỗng

3 Tìm kiếm 1 phần tử trong danh sách

4 Thêm 1 phần tử vào danh sách

5 Hủy 1 phần tử khỏi danh sách

Trang 7

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

• Định nghĩa: DSLK đơn là loại DSLK mà vùng địa chỉ

của mỗi phần tử chỉ chứa duy nhất một địa chỉ của phần tử tiếp theo

• Phần tử cuối cùng của DSLK đơn sẽ trỏ đến NULL

head

NULL

Trang 8

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

• Ví dụ: Ta có danh sách theo dạng bảng sau

→Ta có danh sách liên kết là :

Joe – Marta – Bill – Koch - Sahra

GV Thiều Quang Trung 8

Address Name Age Link

Trang 9

Cài đặt danh sách liên kết đơn

• Khai báo kiểu của 1 phần tử và kiểu danh sách liên kết đơn.

• Để đơn giản ta xét mỗi node gồm vùng chứa dữ liệu là kiểu

Trang 10

Ví dụ danh sách liên kết đơn

GV Thiều Quang Trung 10

Trang 11

Các phép toán trên DSLK đơn

1 Khởi tạo danh sách: Khi khởi tạo, DSLK rỗng, ta

đặt pHead = NULL

Trang 12

2 Kiểm tra danh sách rỗng: Kiểm tra pHead có

bằng NULL hay không

GV Thiều Quang Trung 12

Các phép toán trên DSLK đơn

Trang 13

3 Tìm kiếm 1 phần tử trong danh sách:

NODE* Search(LIST &list , int x)

Trang 14

4 Thêm 1 phần tử vào DSLK:

• Tạo node:

GV Thiều Quang Trung 14

// Gán thông tin cho phần tử p

Các phép toán trên DSLK đơn

Trang 15

4.1 Thêm vào đầu DSLK:

Các phép toán trên DSLK đơn

Trang 16

4.2 Thêm vào ngay sau phần tử q:

GV Thiều Quang Trung 16

Các phép toán trên DSLK đơn

Trang 17

5 Hủy 1 phần tử khỏi DSLK:

5.1 Hủy 1 phần tử ở đầu danh sách:

Các phép toán trên DSLK đơn

Trang 18

5.2 Hủy 1 phần tử đứng sau q:

GV Thiều Quang Trung 18

Các phép toán trên DSLK đơn

Trang 19

5.3 Hủy 1 phần tử có giá trị x:

Các phép toán trên DSLK đơn

Trang 20

6 Duyệt DSLK:

GV Thiều Quang Trung 20

Các phép toán trên DSLK đơn

Trang 22

7 Hủy toàn bộ DSLK:

GV Thiều Quang Trung 22

Các phép toán trên DSLK đơn

Trang 23

Nhận xét danh sách liên kết đơn

• Ưu và nhược điểm của DSLK đơn:

Trang 24

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

• Định nghĩa: DSLK kép (double linked list) là DSLK

mà mỗi phần tử có 2 vùng liên kết: một vùng liên kết đến phần tử đứng trước nó và một vùng liên kết đến phần tử đứng sau nó

GV Thiều Quang Trung 24

Trang 25

Cài đặt danh sách liên kết kép

Trang 26

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

• Các phép toán trên DSLK kép:

1 Khởi tạo danh sách (tương tự DSLK đơn)

2 Thêm 1 phần tử vào danh sách

3 Tìm kiếm 1 phần tử trong danh sach (tương tự DSLK

đơn)

4 Hủy một phần tử khỏi danh sách

5 Duyệt danh sách (tương tự DSLK đơn)

6 Hủy toàn bộ danh sách (tương tự DSLK đơn)

GV Thiều Quang Trung 26

Trang 27

Các phép toán trên DSLK kép

• Hàm bổ trợ tạo một Node mới

Trang 28

• Thêm 1 phần tử vào đầu danh sách

GV Thiều Quang Trung 28

Các phép toán trên DSLK kép

Trang 29

• Thêm 1 phần tử vào đầu danh sách

Các phép toán trên DSLK kép

Trang 30

• Thêm 1 phần tử vào sau phần tử q:

GV Thiều Quang Trung 30

Các phép toán trên DSLK kép

Trang 31

Các phép toán trên DSLK kép

Trang 32

• Thêm 1 phần tử vào trước phần tử q:

GV Thiều Quang Trung 32

Các phép toán trên DSLK kép

Trang 33

• Hủy 1 phần tử khỏi danh sách:

– Hủy phần tử ở đầu danh sách:

Các phép toán trên DSLK kép

Trang 34

• Hủy phần tử đứng sau phần tử q:

GV Thiều Quang Trung 34

Các phép toán trên DSLK kép

Trang 35

• Hủy phần tử đứng trước phần tử q:

Các phép toán trên DSLK kép

Trang 36

• Hủy phần tử có giá trị x:

GV Thiều Quang Trung 36

Các phép toán trên DSLK kép

Trang 37

1 Máy tính bỏ túi:

- Mô tả: xây dựng chương trình minh họa 1 máy tính

bỏ túi dạng đơn giản

- Cách biểu diển: Phép toán được nhập vào dưới dạng hậu tố

+ VD: tính a*(b+c) + biểu thức hậu tố: abc+*

- Ứng dụng stack để tính kết quả biểu thức

Ứng dụng của danh sách

Trang 38

2 Bài toán đa thức:

- Cộng, trừ, nhân, chia 2 đa thức

GV Thiều Quang Trung 38

Ứng dụng của danh sách

Trang 39

3 Bài toán tính giá trị biểu thức:

- Biểu thức dạng trung tố: là cách viết tự nhiên của

biểu thức

VD: 8+2*(5-3)

- Biểu thức dạng hậu tố(postfix): còn được gọi là dạng

ký pháp nghịch đảo Ba Lan (reverse Polish) Trong biểu thức dạng này, toán tử luôn đứng sau toán hạng của

VD: 8+2*(5-3) → 8253-*+

Ứng dụng của danh sách

Trang 40

GV: Thiều Quang Trung 40

Ngày đăng: 07/02/2020, 18:13

🧩 Sản phẩm bạn có thể quan tâm