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: Các cấu trúc dữ liệu cơ bản - Đậu Ngọc Hà Dương

76 35 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 76
Dung lượng 1,05 MB

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

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu cơ bản - Đậu Ngọc Hà Dương có nội dung trình bày các kiến thức về danh sách liên kết, ngăn xếp, hàng đợi,... Mời các bạn cùng tham khảo!

Trang 1

C u trúc d  li u và gi i thu t ấ ữ ệ ả ậ

CÁC CẤU TRÚC DỮ LiỆU

CƠ BẢN

Giảng viên:

Trang 2

Nội dung trình bày

2

Trang 3

Danh sách liên kết

3

Trang 4

Nội dung

 Giới thiệu

 Các loại danh sách liên kết

 Các thao tác trên danh sách liên kết

 So sánh danh sách liên kết và mảng

4

Trang 7

Giới thiệu

7

 Thực tế:

 Không xác đ nh đ ị ượ c chính xác s  l ố ượ ng ph n t ầ ử

 Danh sách bệnh nhân: tăng/giảm.

 Danh sách sinh viên: tăng/giảm.

 Vùng nh  thay đ i trong quá trình s  d ng ớ ổ ử ụ

=> Không đủ vùng nhớ cấp phát liên tục.

Trang 8

Các loại danh sách liên kết

Trang 9

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

9

 Mỗi phần tử có MỘT liên kết đến phần tử phía sau nó

Trang 10

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

10

Trang 13

Phần tử trên danh sách liên kết

Trang 14

number id

name

Trang 15

Cài đặt

15

 Sinh viên tự viết phần cài đặt cho các ví dụ trên

Trang 16

Tổ chức

16

 Mỗi danh sách liên kết bao gồm:

 Con tr  đ n ph n t  đ u (ho c/và cu i) danh sách ỏ ế ầ ử ầ ặ ố

 (Các) ph n t  trên danh sách ầ ử

 Dữ liệu

 Các mối liên kết

Trang 18

Các thao tác trên danh sách liên kết

Trang 21

 Tạo node mới có dữ liệu là Data

 Cập nhật lại liên kết của pNode và node vừa tạo.

X

pNode

1

Trang 26

pHead

Trang 28

Danh sách liên kết là gì?

28

 Một dãy tuần tự các phần tử (node)

 Giữa hai phần tử có liên kết với nhau

 Các phần tử không cần phải lưu trữ liên tiếp

Trang 29

So sánh danh sách liên kết và mảng

 Cần xác định trước số phần tử

 Cần cấp phát vùng nhớ liên tục

đủ lớn để lưu trữ mảng lãng phí nếu không dùng hết.

 Truy xuất ngẫu nhiên, đơn giản, nhanh chóng

 Truy xuất tuần tự, danh sách

liên kết đơn chỉ có thể duyệt 1

chiều

 Cần nhiều bộ nhớ hơn để lưu

trữ các liên kết

Trang 31

Bài tập 1

31

 Cho một DSLK đơn, mỗi node trong DSLK lưu thông tin là 1 số nguyên và con trỏ đến node kế Tạo 2 DSLK đơn mới (không phá huỷ DSLK đã cho)

 M t danh sách ch a các s  l  c a danh sách đã ộ ứ ố ẻ ủcho

 M t danh sách ch a các s  ch n c a danh sách đã ộ ứ ố ẵ ủcho

Trang 32

Bài tập 1

32

In ra các đ ườ ng ch y ạ  t  nhiên t  DSLK đã cho:ự ừ

VÍ DỤ: DSLK ban đ u bi u di n các s : 1  5   6  4  8  3  7 ầ ể ễ ố

In ra các dãy số: 1 5 6

4 8

3 7

Trang 33

Bài tập 2

33

 Cho danh sách liên kết đơn L, lập giải thuật

thực hiện các phép sau đây:

Trang 34

Bài tập 3

34

 Hàm MoveToFront có tác dụng di chuyển 1 node trong xâu lên đầu xâu, như hình sau:

 Chọn kiểu khai báo hàm phù hợp và viết code

void MoveToFront (NODE pHead , NODE pTail , NODE pNode )

Lưu ý: các kí hiệu có thể là *, & hoặc khoảng

21

Trang 35

Ngăn xếp - stack

35

Trang 38

Giới thiệu

38

 Định nghĩa:

 Ngăn  x p  là  v t  ch a  các  đ i  ế ậ ứ ố

t ượ ng  làm  vi c  theo  c   ch   “ ệ ơ ế vào  sau ra tr ướ ” ( c Last In First Out)

 Đ i t ố ượ ng có th   đ ể ượ c thêm vào 

b t  kì  lúc  nào,  nh ng  ch   có  ấ ư ỉ đ i 

t ượ ng  vào  sau  cùng  m i  đ ớ ượ c  phép l y ra kh i ngăn x p ấ ỏ ế

6 5 4 3 2

Đỉnh

Đáy

Trang 39

Các thao tác trên ngăn xếp

Trang 40

Lưu trữ ngăn xếp

40

 Lưu trữ bằng mảng

 Khai báo m ng 1 chi u v i kích th ả ề ớ ướ ố c t i đa N.

 t là đ a ch  c a ph n t  đ nh c a ngăn x p   t s  thay  ị ỉ ủ ầ ử ỉ ủ ế → ẽ

đ i khi ngăn x p ho t đ ng ổ ế ạ ộ

Ngăn xếp rỗng thì giá trị của t là 0

 T o ngăn x p S và qu n lý ngăn x p b ng bi n t: ạ ế ả ế ằ ế

Data S[N];

Trang 42

Kiểm tra ngăn xếp rỗng

Trang 43

Kiểm tra ngăn xếp đầy

Trang 44

Thêm phần tử vào ngăn xếp (push)

Trang 45

Thêm phần tử vào ngăn xếp (push)

45

 Ví dụ:

4 3 2

5 4 3 2

Đỉnh = 3

Ngăn xếp ban đầu Ngăn xếp sau khi thêm push(5)

Đỉnh = 4

Trang 46

Lấy phần tử ra khỏi ngăn xếp (pop)

Trang 47

Lấy phần tử ra khỏi ngăn xếp (pop)

47

 Ví dụ:

3 2

4 3 2

Ngăn xếp ban đầu Ngăn xếp sau khi pop()

return 4;

Đỉnh = 3

Đỉnh = 2

Trang 48

Lấy thông tin đỉnh ngăn xếp

C u trúc d  li u và gi i thu t – HCMUS 2012 ấ ữ ệ ả ậ

Trang 49

Lấy thông tin đỉnh ngăn xếp

49

 Ví dụ

4 3 2

4 3 2

Ngăn xếp ban đầu Ngăn xếp sau khi gettop()

return 4;

Đỉnh = 3 Đỉnh = 3

Trang 52

⇒  Qui đ nh th  t   u tiên c a các phép toán  ị ứ ự ư ủ

⇒  Dùng d u ngo c đ  phân bi t th  t  th c hi n ấ ặ ể ệ ứ ự ự ệ

Trang 53

Trung tố Hậu tố

A + B A B + (A+B)*C A B + C *

Trang 54

Chuyển trung tố sang hậu tố

C u trúc d  li u và gi i thu t – HCMUS 2012 ấ ữ ệ ả ậ

Trang 55

Chuyển trung tố sang hậu tố

C u trúc d  li u và gi i thu t – HCMUS 2012 ấ ữ ệ ả ậ

Trang 56

Chuyển trung tố sang hậu tố

56

 Ví dụ 1: P = ( A + B ) * ( C - ( D + A ) )

( A + B ) * ( C - ( D + A ) )

( (

+ ( (

+ ( (

(

* (

(

* (

(

* (

(

-* (

( - (

* (

( - (

* (

+ ( - (

* (

+ ( - (

* (

(

-*

(

Q = A B + C D A + - *

Trang 57

Chuyển trung tố sang hậu tố

Trang 58

Ứng dụng khác của ngăn xếp

58

 Dùng biến đổi cơ số

 Lượng giá biểu thức hậu tố

 Trong trình biên dịch, ngăn xếp được sử dụng

để lưu môi trường các thủ tục

 Dùng trong một số bài toán của lý thuyết đồ thị

 Khử đệ qui đuôi

Trang 59

Hàng đợi - Queue

59

Trang 61

Giới thiệu

61

 Giới thiệu:

 Là v t ch  các đ i t ậ ứ ố ượ ng làm vi c theo qui t c  ệ ắ vào 

tr ướ c ra tr ướ (FIFO) c 

 Các đ i t ố ượ ng có th  đ ể ượ c thêm vào hàng đ i b t kì  ợ ấ lúc nào nh ng ch  có đ i t ư ỉ ố ượ ng thêm vào đ u tiên ầ  

m i đớ ượ l y ra kh i hàng đ iấ ỏ ợ

Trang 62

Các thao tác trên hàng đợi

62

 Thao tác cơ bản:

 Enqueue: Thêm 1 đ i t ố ượ ng vào cu i hàng đ i ố ợ

 Dequeue: L y đ i t ấ ố ượ ng   đ u ra kh i hàng đ i ở ầ ỏ ợ

 Thao tác khác:

 L u tr  hàng đ i ư ữ ợ

 Ki m tra hàng đ i r ng ể ợ ỗ

 Ki m tra hàng đ i đ y ể ợ ầ

Trang 63

Lưu trữ hàng đợi

63

 Lưu trữ bằng mảng:

 Khai báo m ng 1 chi u v i kích th ả ề ớ ướ ố c t i đa N.

 f là đ a ch  c a ph n t  n m   đ u, r là đ a ch  c a  ị ỉ ủ ầ ử ằ ở ầ ị ỉ ủ

Trang 64

 Hàng đ i khi xoay vòng: ợ

Trang 66

Kiểm tra hàng đợi rỗng

66

 Input:

 Output:

 TRUE n u hàng đ i r ng ế ợ ỗ

 FALSE n u hàng đ i không r ng ế ợ ỗ

 Hàng đợi rỗng:

 M ng: ô nh  đ u tiên không ch a d  li u ả ớ ầ ứ ữ ệ

Trang 67

Kiểm tra hàng đợi đầy

67

 Input:

 Output:

 TRUE n u hàng đ i đ y ế ợ ầ

 FALSE n u hàng đ i không đ y ế ợ ầ

 Hàng đợi đầy:

 M ng: ô nh  cu i hàng đ i đã ch a d  li u ả ớ ố ợ ứ ữ ệ

Trang 68

Thêm phần tử vào cuối hàng đợi

68

 Input: giá trị cần thêm

 Output:

 Giải thuật thêm phần tử (EnQueue)

 Ki m tra hàng đ i đã đ y ch a? ể ợ ầ ư

Trong tr ườ ng h p l u tr  b ng m ng ợ ư ữ ằ ả : ki m tra đi u ể ề

ki n xoay vòng ệ

 Thêm ph n t  vào cu i hàng đ i ầ ử ố ợ

Trang 69

Thêm phần tử vào cuối hàng đợi

Trang 70

Lấy phần tử đầu ra khỏi hàng đợi

70

 Input:

 Output: giá trị của phần tử đầu hàng đợi

 Giải thuật lấy phần tử ở đầu (DeQueue)

 Ki m tra hàng đ i có r ng không? ể ợ ỗ

 Xóa ph n t  đ u ra kh i hàng đ i ầ ử ầ ỏ ợ

 C p nh t đ a ch  ph n t  đ u hàng đ i ậ ậ ị ỉ ầ ử ầ ợ

Trong tr ườ ng h p l u tr  b ng m ng:  ợ ư ữ ằ ả ki m tra đi u  ể ề

Trang 71

Lấy phần tử đầu ra khỏi hàng đợi

DeQueue() = 1

Trang 72

Lấy thông tin đầu hàng đợi

72

 Chỉ lấy thông tin của đối tượng đầu hàng đợi

không hủy đối tượng khỏi hàng đợi

 Input: hàng đợi

 Output: giá trị của đối tượng đầu hàng đợi

 Giải thuật:

 Ki m tra hàng đ i r ng? ể ợ ỗ

Trang 73

Lấy thông tin đầu hàng đợi

Trang 75

a Bổ sung E vào hàng đợi

b Loại 2 phần tử khỏi hàng đợi

c Bổ sung I, J, K vào hàng đợi

d Loại 2 phần tử khỏi hàng đợi

e Bổ sung O vào hàng đợi

f = 1 r = 3

Trang 76

Hỏi và Đáp

76

Ngày đăng: 11/09/2021, 13:41

HÌNH ẢNH LIÊN QUAN

 Một số hình ảnh thông dụng: - Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu cơ bản - Đậu Ngọc Hà Dương
t số hình ảnh thông dụng: (Trang 37)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

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