CẤU TRÚC DỮ LIỆU
VÀ GIẢI THUẬT
Vũ Song Tùng
1
NỘI DUNG
2
Giới thiệu chung
Danh sách tuyến tính
Cây
Đồ thị
Sắp xếp
Tìm kiếm
I. Giới thiệu chung
3
Các kỹ thuật lập trình
Ngôn ngữ giả lập trình
Sơ lược về CTDL và giải thuật
I. Giới thiệu chung
4
• Lập trình hàm
– Chia các giai đoạn của chương trình vào các hàm
– Thể hiện những đoạn mã tương tự trong một hàm
– Ưu điểm
• Dễ quản lý
• Tiết kiệm dung lượng chương trình
I. Giới thiệu chung
5
• Lập trình hướng đối tượng
– Trừu tượng hóa các thành phần của chương trình
– Đặc điểm
• Tính đóng gói – các thuộc tính của một thành phần và các hàm
xử lý các thuộc tính đó được định nghĩa trong cùng một khối
• Tính đa hình – cho phép tạo ra nhiều hình thái của một loại
thành phần
• Tính kế thừa – cho phép sử dụng lại các định nghĩa đã có của
một thành phần để tạo ra một thành phần mới
I. Giới thiệu chung
6
• Các quy ước
Các
kiểu dữ liệu
Mô
tả
Tập
các số thực, nguyên và nguyên dương
Kiểu
bất kz
Mảng
chứa 𝓇 𝓁 + 1 phần tử kiểu
T
Dãy
Tập
hợp
I. Giới thiệu chung
7
• Các quy ước
Toán
tử
Mô
tả
Gán
So sánh
And, Or,
Not logic
++/−−
Làm
tròn xuống và lên
Nếu
C
đúng thực hiện
I
,
C
sai thực hiện
J
Dãy các
phần tử
Tập
hợp các phần tử
;
Ngắt
các biểu thức
I. Giới thiệu chung
8
• Biểu thức
Loại
Cú
pháp
Khai
báo biến
Điều kiện
Lặp
xác định
Lặp
không xác định
I. Giới thiệu chung
9
• Biểu thức
Loại
Cú
pháp
Tạo
con trỏ
Cấp
phát bộ nhớ
Giải
phóng bộ nhớ
Lấy
địa chỉ
Lấy
nội dung trong con trỏ
Truy cập
thành viên của con trỏ
I. Giới thiệu chung
10
• Hàm và thủ tục
I. Giới thiệu chung
11
• Hướng đối tượng
I. Giới thiệu chung
12
• Cấu trúc mảng
• Tập hợp các phần tử cùng kiểu
– được sắp xếp liên tiếp trong bộ nhớ
– được xác định vị trí bằng chỉ số
• Thường dùng để lưu trữ các danh sách tuyến tính có
kích thước cố định
I. Giới thiệu chung
13
• Cấu trúc liên kết
• Tập hợp các phần tử (item) lưu trữ dữ liệu (info) và
địa chỉ liên kết (link) đến phần tử khác
• Dùng để lưu trữ danh sách động hoặc các cấu trúc
phi tuyến
…
x
y
x
y
I. Giới thiệu chung
14
• Giải thuật đệ quy
– Giải thuật gọi lại chính nó, gồm 2 thành phần:
• Điều kiện dừng đệ quy
• Gọi đệ quy
– Áp dụng giải thuật đệ quy khiến cho thuật toán
trở nên mạch lạc
I. Giới thiệu chung
15
• Độ phức tạp của thuật toán O(…)
– Số lượng trung bình (T
cp
) của phép toán phức tạp nhất
trong thuật toán
– Độ phức tạp của các thuật toán sắp xếp và tìm kiếm
trong dãy n phần tử:
Thuật
toán
Độ
phức tạp
SelectSort
O
(n
2
)
InsertSort
O
(n
2
)
BubbleSort
O
(n
2
)
QuickSort
O
(nlog
2
n)
HeapSort
O
(nlog
2
n)
LinearSearch
O
(n)
BinarySearch
O
(log
2
n)
II. Danh sách tuyến tính
16
Ngăn xếp
Hàng đợi
Danh sách liên kết
II. Danh sách tuyến tính
17
• Dãy các phần tử được thêm vào (push) và
lấy ra (pop) tại cùng một đầu của dãy
II. Danh sách tuyến tính
18
• Định nghĩa ngăn xếp bằng mảng
++
−−
II. Danh sách tuyến tính
19
• Dãy các phần tử được thêm vào (enqueue)
và lấy ra (dequeue) tại hai đầu khác nhau
của dãy
II. Danh sách tuyến tính
20
• Định nghĩa hàng đợi bằng mảng
++
++
−−
II. Danh sách tuyến tính
21
• Danh sách liên kết 2 chiều
• Dãy các phần tử liên kết với phần tử phía sau (next)
và phía trước (prev) trong dãy
II. Danh sách tuyến tính
22
• Mô hình
Danh sách danh sách
danh sách
…
…
II. Danh sách tuyến tính
23
• Định nghĩa –
II. Danh sách tuyến tính
24
• Định nghĩa –
II. Danh sách tuyến tính
25
• Định nghĩa –