Trong khoa học máy tính, cấu trúc dữ liệu là cách sắp xếp hợp lý dữ liệu trong bộ nhớ máy tính để có thể sử dụng hiệu quả. Cấu trúc dữ liệu cho phép dữ liệu được thêm, xóa, lưu trữ và duy trì theo cách có cấu trúc. Python hỗ trợ hai loại cấu trúc dữ liệu
- Các kiểu dữ liệu không nguyên thủy. Python có danh sách, tập hợp và từ điển dưới dạng các kiểu dữ liệu không nguyên thủy, cũng có thể được coi là cấu trúc dữ liệu dựng sẵn của nó
- Cấu trúc dữ liệu do người dùng định nghĩa. Các cấu trúc dữ liệu không được python hỗ trợ nhưng có thể được lập trình để phản ánh chức năng tương tự bằng cách sử dụng các khái niệm được python hỗ trợ là các cấu trúc dữ liệu do người dùng xác định. Có nhiều cấu trúc dữ liệu có thể được thực hiện theo cách này
- danh sách liên kết
- Cây rơm
- Xếp hàng
- Cây
- đồ thị
- Bản đồ băm
danh sách liên kết
Danh sách liên kết là một cấu trúc dữ liệu tuyến tính, trong đó các phần tử không được lưu trữ tại các vị trí bộ nhớ liền kề. Các phần tử trong danh sách liên kết được liên kết bằng con trỏ như trong hình bên dưới.
Chương trình
Python3
llist
=
[
____3,
'second'
,
'third'
]
print
=
0
print
=
2
=
3
=
4=
5____16
=
4=
8____16
[
0[
1,
[
3=
6
print
=
0
print
=
2
[
9'second'
=
6
print
=
0
print
=
2
đầu ra
['đầu tiên', 'thứ hai', 'thứ ba']
['thứ nhất', 'thứ hai', 'thứ ba', 'thứ sáu', 'thứ tư', 'thứ năm']
['thứ nhất', 'thứ ba', 'thứ sáu', 'thứ tư', 'thứ năm']
Cây rơm
Ngăn xếp là một cấu trúc tuyến tính cho phép dữ liệu được chèn và xóa từ cùng một đầu, do đó tuân theo hệ thống nhập sau xuất trước [LIFO]. Chèn và xóa lần lượt được gọi là push[] và pop[]
Chương trình
Python3
'first'
6=
[
____3,
'second'
,
'third'
]
print
,
6
print
=
2
,
9
'second'
0=
5=
6
'second'
0=
8=
6
print
,
6
print
=
2
,
0
,
1=
,
3,
6
print
,
6,
7,
8,
9
print
=
2
'third'
2
'third'
3
print
,
6
đầu ra
['đầu tiên', 'thứ hai', 'thứ ba']
['thứ nhất', 'thứ hai', 'thứ ba', 'thứ tư', 'thứ năm']
thứ năm
['thứ nhất', 'thứ hai', 'thứ ba', 'thứ tư']
Xếp hàng
Hàng đợi là một cấu trúc tuyến tính cho phép chèn các phần tử từ đầu này và xóa từ đầu kia. Do đó, nó tuân theo phương pháp First In First Out [FIFO]. Đầu cho phép xóa được gọi là đầu hàng đợi và đầu kia được gọi là đầu cuối hàng đợi.
Chương trình
Python3
'third'
6=
[
'first'
,
'second'
,
'third'
]
print
]
6
print
=
2
,
9
print
0=
5=
6
print
0=
8=
6
print
]
6
print
=
2
=
00
print
=
02____103,
9
=
05
,
1=
,
3]
6
print
=
11,
7,
8,
9
print
=
2
'third'
2
=
18=
03____49
print
]
6
đầu ra
['đầu tiên', 'thứ hai', 'thứ ba']
['thứ nhất', 'thứ hai', 'thứ ba', 'thứ tư', 'thứ năm']
Đầu tiên
thứ năm
['thứ hai', 'thứ ba', 'thứ tư', 'thứ năm']
Cây
Cây là một cấu trúc dữ liệu phi tuyến tính nhưng có thứ bậc. Phần tử trên cùng được gọi là gốc của cây vì cây được cho là bắt đầu từ gốc. Các phần tử ở phần cuối của cây được gọi là lá của nó. Cây phù hợp để lưu trữ dữ liệu không được kết nối tuyến tính với nhau mà tạo thành một hệ thống phân cấp.
Chương trình
Python3
=
23 =
24
=
25=
26 =
27=
28=
29
=
30=
28=
32=
=
34
=
30=
28=
37=
=
39
=
30=
28=
42=
=
39
=
26 =
46=
28=
48
=
25=
50 =
28=
52
=
30print
____155=
28=
57
=
30=
46=
28=
61
=
30=
46=
28=
65
,
1=
=
68'first'
=
6
=
71=
=
68'second'
=
6
=
76=
=
68'third'
=
6
=
81
đầu ra
Đầu tiên
thứ hai
ngày thứ ba
đồ thị
Biểu đồ là cấu trúc dữ liệu phi tuyến tính bao gồm các nút và cạnh. Các nút đôi khi còn được gọi là đỉnh và các cạnh là các đường hoặc cung nối hai nút bất kỳ trong biểu đồ. Đồ thị bao gồm một tập hợp hữu hạn các đỉnh [hoặc nút] và tập hợp các Cạnh kết nối một cặp nút
Chương trình
Python3
=
23 =
83
=
25=
26 =
27=
28=
88
=
30=
28=
91=
=
93
=
30=
28=
96=
97 =
=
39
=
23 [
01
=
25=
26 =
27=
28[
06
=
30=
28[
09=
[
11
=
30=
28=
32=
[
=
39]
[
19=
28[
09
=
25=
26 [
24=
28[
26
=
30[
28=
[
30
=
30[
32____197 =
=
28[
36
=
30=
28[
36=
[
28
=
30[
28=
[
45
=
30[
32____197 =
=
28[
51
=
30=
28[
51=
[
28
=
25=
26 [
59____128=
48
=
30[
63 [
64[
65 [
66=
55=
28[
69
[
70print
=
55[
73=
96[
75[
76=
[
78
[
70[
80=
=
28[
83
[
70[
85 [
86
[
87print
=
55[
90=
96[
75[
93=
[
78
[
87[
80=
[
99=
97
'first'
01=
'first'
03______304=
6
'first'
06=
03______4'first'
09=
6
'first'
06,
8,
[
1=
6
'first'
06[
1____4'first'
09=
6
'first'
06=
03____4[
1=
6
'first'
26
đầu ra
Danh sách kề của đỉnh 0
đầu -> 3 -> 2
Danh sách kề của đỉnh 1
cái đầu -> 3
Danh sách kề của đỉnh 2
đầu -> 3 -> 0
Danh sách kề của đỉnh 3
đầu -> 0 -> 2 -> 1
Bản đồ băm
Bản đồ băm là cấu trúc dữ liệu được lập chỉ mục. Bản đồ băm sử dụng hàm băm để tính toán chỉ mục có khóa vào một mảng các nhóm hoặc vị trí. Giá trị của nó được ánh xạ tới vùng chứa với chỉ mục tương ứng. Chìa khóa là duy nhất và bất biến. Trong Python, từ điển là ví dụ về bản đồ băm
Chương trình
Python3
=
26 'first'
28
=
25[
63 'first'
31____265 'first'
33
=
30print
____336'first'
37'first'
38
'first'
39=
'first'
41=
03=
52'first'
,
,
8=
52'second'
,
'first'
09=
52'third'
'first'
53