Tải bản đầy đủ (.ppt) (18 trang)

slide tài liệu danh sách móc nối

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (505.93 KB, 18 trang )

01/25/15 Ngô Duy Nam
1
Câu hỏi 1:
Nêu khái niệm cấu trúc dữ liệu dạng mảng

KIỂM TRA BÀI CŨ
Câu hỏi 2:
Mảng có phép bổ sung, loại bỏ phần tử không?
Tại sao?

01/25/15 Ngô Duy Nam
2
Mô hình đoàn tàu hỏa
- Mỗi toa tàu tương ứng với một ô nhớ trong mảng.
- Số toa tàu là cố định
h.khách h.khách h.khách h.khách h.khách h.khách
01/25/15
Ngô Duy Nam
3
Ch
Ch
ương
ương
5
5
:
:
Danh sách móc nối
Danh sách móc nối
I. Một số khái niệm
- Danh sách là một tập có thứ tự bao gồm một số


biến động các phần tử.
- Mỗi toa tàu tương ứng với một ô nhớ trong danh sách.
- Số toa tàu là biến động
h.khách h.khách h.khách h.khách h.khách h.khách
01/25/15
Ngô Duy Nam
4
- Phần tử đầu tiên trong danh sách được quản lý
bởi một con trỏ (thường được kí hiệu bởi
L,P,Q,M, )
- Danh sách rỗng là danh sách không chứa phần
tử nào.
01/25/15
Ngô Duy Nam
5
- Mỗi phần tử trong danh sách thường là một bản
ghi gồm một hoặc nhiều trường.
01/25/15
Ngô Duy Nam
6
II. Các dạng danh sách móc nối
1. Danh sách móc nối đơn
1.1. Định nghĩa phần tử trong danh sách
- Mỗi phần tử trong danh sách được thể hiện bởi
nút có dạng sau:
- Trong đó:
+ Data: Chứa thông tin
+ Link: Chứa địa chỉ của nút tiếp theo nếu có,
không có chứa địa chỉ rỗng (ký hiệu Null)
Data

Link
01/25/15
Ngô Duy Nam
7
h.khách h.khách h.khách h.khách h.khách h.khách
Link
Data
01/25/15
Ngô Duy Nam
8
Ví dụ 1:
Type
DS=^nut;
Nut= record
Data: Data Type;
Link: DS;
End;
Var
L:DS;
Data Link
L
01/25/15
Ngô Duy Nam
9
1.2. Truy cập vào từng trường ở mỗi nút trong danh sách
Cú pháp:
<tên con trỏ>^.<tên trường>
Ví dụ: Cho một danh sách sau:
5
L

9 11
M
L^.Data ->?
L^.Link ->?
01/25/15
Ngô Duy Nam
10
1.3. Các phép toán
01/25/15 Ngô Duy Nam
11
MÔ HÌNH CÂY NHỊ PHÂN
46
36
26
45
66
56 76
X=37
Cây nhị phân tìm kiếm
<>><
Mô hình
CNF có phải
là CNF tìm
kiếm?
01/25/15 Ngô Duy Nam
12
MÔ HÌNH CÂY NHỊ PHÂN TÌM KIẾM
46
36
26 45

66
56 76
46
36
26 45
66
56 76
37
01/25/15 Ngô Duy Nam
13
MÔ HÌNH CÂY NHỊ PHÂN TÌM KIẾM
46
36
26 45
66
56 76
46
36
26 45
66
56 76
01/25/15 Ngô Duy Nam
14
Ý tưởng
Bước 1: Sắp xếp dãy số đó theo trình tự tăng dần.
Bước 2: Tìm vị trí phần tử giữa của mảng.
463626 45 6656 76
Mảng K:
1 2 3 4 5 6 7
Sử dụng các phương pháp sắp xếp như: Chọn, chèn,…

l:=1;r:=n; ĐK: (l<r)
m:=|(l+r)/2|
Cách xác định vị
trí pt giữa của
mảng k
l:=
r:=
m:=|(l+r)/2|
01/25/15 Ngô Duy Nam
15
Ý tưởng
- So sánh X với k[m]
- Nếu X=k[m] thì kết thúc
Nếu X<k[m] hoặc X>k[m] thì quay lại từ Bước 2
+ Tìm pt giữa của dãy
+ So sánh
Bước 3: Với giá trị phần tử giữa của mảng đem so sánh
với X. Nếu bằng thì kết thúc, còn sang bước 4
Bước 4: Lặp lại Bước 2 và Bước 3 cho đến khi tìm được X
hoặc không tìm được X
463626 45 6656 76
Mảng K:
1 2 3 4 5 6 7
l:=
463626 45 6656 76
Mảng K:
1 2 3 4 5 6 7
l:=
r:=
m:=|(l+r)/2|

m:=|(l+r)/2|
r:=
l:=
r:=
m:=|(l+r)/2|
X<k[m] X>k[m]
01/25/15 Ngô Duy Nam
16
Ý tưởng
Bước 3: Với giá trị phần tử giữa của mảng đem so sánh
với X. Nếu bằng thì kết thúc, còn sang bước 4
- So sánh X với k[m]
- Nếu X=k[m] thì kết thúc
Bước 4: Lặp lại Bước 2 và Bước 3 cho đến khi tìm được X
hoặc không tìm được X
Nếu X>k[m] hoặc X<k[m] thì quay lại từ Bước 2
+ Tìm pt giữa của dãy
+ So sánh
Bước 2: Tìm vị trí phần tử giữa của mảng.
l:=1;r:=n; ĐK: (l<r)
m:=|(l+r)/2|
6059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210
01/25/15 Ngô Duy Nam
17
Ví dụ vận dụng
Cho mảng k gồm 5 pt: 7 8 13 17 34
Cho X = 34
Sử dụng thuật toán tìm kiếm nhị phân, kiểm
tra X có tồn tại trong mảng k hay không ? (yêu
cầu chạy chậm từng bước theo thuật toán).

01/25/15 Ngơ Duy Nam
18
Viết chương trình bài tập 3
BÀI THỰC HÀNH 4: SỬ DỤNG CÂU LỆNH ĐIỀU KIỆN IF …THEN
a. Lưu chương trình với tên
Bacanhtamgiac.pas
b. Chạy chương trình .
Xin chân thành cảm ơn q thầy cơ!
Xin chân thành cảm ơn q thầy cơ!
Chúc các em học tập tốt !
Chúc các em học tập tốt !

×