... 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 ... Danhsáchliên kết
DSLK đơn – Các thao tác cơ sở
Xóa một node của danh sách
Xóa node đầu danh sách
Xóa node sau node q trongdanh sách
Xóa node có khoá k
50
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 ... kiếm có thể phải duyệt tất cả các phần 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 ... dàng thêm hoặc xóa các phần tử trongdanhsá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...
...
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...
...
}
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 trongdanh sá ch hay đế m số nút
trong danh sá ch
void ... t, trong
đó một danh sá ch liê n kế t chứa cá c phầ n tử có số thứ tự lẽ và một danh sá ch
liê n kế t chứa cá c phầ n tử có số thứ tự chẵ n trongdanh sá ch liê n kế t cũ.
10. - Tạ o một danh ... với x.
Do đâ y là danh sá ch liê n kế t nê n ta phả i tì m từ đầ u danh sá ch.
Hà m Search nế u tì m thấ y x trongdanh sá ch thì trả về địa chỉ của nút có trị
bằ ng x trongdanh sá ch, nế u...
...
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ếttrong 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 ... chính là các ô đang sống trong
trạng thái hiện tại, chúng có thể chết đi nhưng cũng có thể tiếp tục sống trong
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...
...
}
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 trongdanh sá ch hay đế m số nút
trong danh sá ch
void ... với x.
Do đâ y là danh sá ch liê n kế t nê n ta phả i tì m từ đầ u danh sá ch.
Hà m Search nế u tì m thấ y x trongdanh sá ch thì trả về địa chỉ của nút có trị
bằ ng x trongdanh sá ch, nế u ... 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
:...
... 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ệu danhsá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 trongdanh sách. 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 trongdanh sá ch hay đế m số nút
trong danh sá ch
void ... 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
: ... với x.
Do đâ y là danh sá ch liê n kế t nê n ta phả i tì m từ đầ u danh sá ch.
Hà m Search nế u tì m thấ y x trongdanh sá ch thì trả về địa chỉ của nút có trị
bằ ng x trongdanh sá ch, nế u...
... trước và
sau nó trongdanh sách.
- Danhsáchliênkết vòng: phần tử cuối danhsáchliênkết với phần tử đầu danh
sách.
1.3. Danhsáchliênkết đơn.
1.3.1. Khái niệm.
Danh sáchliênkết đơn là một ... danhsáchliênkết gồm có nhiều loại khác
nhau:
- Danhsáchliênkết đơn: mỗi phần tử liênkết với phần tử đứng sau nó trongdanh
sách.
- Danhsáchliênkết đôi /kép: mỗi phần tử liênkết với ... bằng danhsáchliênkết đơn
CHƯƠNG 1: CƠ SỞ LÝTHUYẾT
1. Tổng quan về danhsáchliên kết
1.1. Định nghĩa
Danh sáchliênkết là danhsách mà các phần tử ( Node) liênkết với nhau nhờ
vào vùng liên...