... 6: Danhsáchliên kết
Giới thiệu - Danhsáchliên kết
11
Danh sáchliênkết vòng : phần tử cuối danhsáchliênkết
với phần tử đầu danh sách:
A B X Z Y
A B C D
Chương 6: Danhsáchliên kết
DSLK ... new_node vào đầu danh sách
38
Chương 6: Danhsáchliên kết
Nội dung
Giới thiệu
Danh sáchliênkết đơn (Single Linked List)
Danh sáchliênkết đôi (Double Linked List)
Danh sáchliênkết vòng ... vào danh sách: Có 3 vị trí thêm
Gắn vào đầu danh sách
Gắn vào cuối danhsách
Chèn vào sau nút q trong danh sách
Chú ý trường hợp danhsách ban đầu rỗng
30
Chương 6: Danhsáchliên kết
DSLK...
... Danhsáchliênkết (Linked List)
1.Khái niệm: Danhsáchliênkết (linked list) là một cấu trúc dữ liệu bao gồm một nhóm các nút (nodes) tao
thành một chuỗi. Thông thường mỗi nút gồm dữ liệu ... tử.
Phân loại:
•
Danh sách tuyến tính (Linear list):
•
Danh sách vòng (circular list):
•
Danh sáchliênkết đôi (Double list):
Cấu trúc:
Data: Thành phần chứa một hay nhiều biến dữ liệu.
Next ptr: ... trong danhsách mà không cần phải cấp phát hoặc tổ chức lại trật
tự của mảng.
•
Cấp phát bộ nhớ động
Nhược điểm:
•
Một danhsáchliênkết đơn giản không cho phép truy cập ngẫu nhiên dữ liệu.
•
Chính...
...
ngtuananh_vn@yahoo
.com
8
Ví dụ tạo danhsáchliênkết đơn các
số nguyên
typedef struct Node {
int infor;
Node * next;
};
Node *L;
ngtuananh_vn@yahoo
.com
2
Danh sáchliênkết đơn
ngtuananh_vn@yahoo
.com
35
3. ...
ngtuananh_vn@yahoo
.com
5
infor Next
Dữ liệu
Trường liênkết
L
3
Next
7
Next
8
DANH SÁCHLIÊNKẾT ĐƠN
ngtuananh_vn@yahoo
.com
50
TH2: Xóa nút p ở giữa danh sách
2
F
5
L
3
P
4 NIL
q
1. q->next = p->next
2. ... giữa danh sách
4. LOẠI BỎ MỘT NÚT RA KHỎI DSLK ĐƠN
PROCEDURE DELETE ( L, M )
1
4
3
10
L
12
Bước 1. Tìm đến nút đứng trước M
P
M
q
ngtuananh_vn@yahoo
.com
5
infor Next
Dữ liệu
Trường liên kết...
... n của danh sá ch liê n kế t, và Last
trỏ đế n phầ n tử cuối của danh sá ch liê n kế t.
struct Linked_List;
{ First NODEPTR;
Last NODEPTR;
};
II. Các phép toán trên danhsáchliên kết
: ... TOáN TRÊN CấU TRúC
DANHSáCHLIÊNKếT (LINKED LIST)
I. Khái niệm:
Cấ u trúc danh sá ch liê n kế t là cấ u trúc động, việ c cấ p phá t nút và giả i
phóng nút trê n danh sá ch xả y ra khi ...
}
II.3. Duyệ t danh sách
: Thông thường ta hay duyệ t danh sá ch liê n kế t để thực
hiệ n một công việ c gì đó, như liệ t kê dữ liệ u trong danh sá ch hay đế m số nút
trong danh sá ch
void...
...
Hình 18.5 – Danhsáchliênkết gián tiếp.
Chương 18 – Ứng dụng danhsáchliênkết và bảng băm
Giáo trình Cấu trúc dữ liệu và Giải thuật
401
Chương 18 –
ỨNG DỤNG DANHSÁCHLIÊNKẾT VÀ
BẢNG ... của
mỗi bản ghi sẽ tăng 100% do phải chứa thêm các con trỏ liênkết trong các danh
sách liên kết. Tuy nhiên, bản thân bảng băm nối kết sẽ có kích thước rất nhỏ mà
vẫn có thể chứa số bản ghi ...
danh sách để xác nhận sự có mặt của một phần tử hay không không hiệu quả
bằng phương pháp băm như chúng ta đã biết. Đối với bất kỳ một ô nào có trong
Chương 18 – Ứng dụng danhsáchliên kết...
... n của danh sá ch liê n kế t, và Last
trỏ đế n phầ n tử cuối của danh sá ch liê n kế t.
struct Linked_List;
{ First NODEPTR;
Last NODEPTR;
};
II. Các phép toán trên danhsáchliên kết
: ... TOáN TRÊN CấU TRúC
DANHSáCHLIÊNKếT (LINKED LIST)
I. Khái niệm:
Cấ u trúc danh sá ch liê n kế t là cấ u trúc động, việ c cấ p phá t nút và giả i
phóng nút trê n danh sá ch xả y ra khi ...
}
II.3. Duyệ t danh sách
: Thông thường ta hay duyệ t danh sá ch liê n kế t để thực
hiệ n một công việ c gì đó, như liệ t kê dữ liệ u trong danh sá ch hay đế m số nút
trong danh sá ch
void...
... return 1;
}
}
Cấu trúc danhsáchliênkết III.7
III.2. Danhsáchliênkết (DSLK)
III.2.1. Định nghĩa danh sách
Cho kiểu dữ liệu T. Kiểu dữ liệudanhsách TL gồm các phần tử thuộc ... tử: tạo danh sách, duyệt danh sách, tìm một đối tượng
(thỏa một tính chất nào đó) trên danh sách, chèn một đối tượng vào danh sách, hủy
m
ột đối tượng khỏi danh sách, sắp xếp danhsách theo ... nối (hay liênkết và gọi là danhsáchliên kết) ở dạng
tường minh: mỗi
phần tử ngồi thành phần thơng tin về dữ liệu cịn chứa thêm liênkết (địa chỉ)
đến phần tử kế tiếp trong danh sách. Khi...
... n của danh sá ch liê n kế t, và Last
trỏ đế n phầ n tử cuối của danh sá ch liê n kế t.
struct Linked_List;
{ First NODEPTR;
Last NODEPTR;
};
II. Các phép toán trên danhsáchliên kết
: ... sáchliên kết
:
II.1. Tạo danh sách
:
a. Khởi tạ o danh sá ch
(Initialize): dùng để khởi động một danh sá ch liê n
kế t, cho chương trì nh hiể u là hiệ n tạ i danh sá ch liê n kế t chưa có ... Copy_List trê n danh sá ch liê n kế t để tạ o ra một danh sá ch liê n kế t
mới giống danh sá ch liê n kế t cũ.
5. Ghép một danh sá ch liê n kế t có địa chỉ đầ u là First2 và o một danh sá ch liê...