...
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. ... PHẦNTỬ SAU MỘT PHẦNTỬ KHÁC
PROCEDURE INSERTAFTER(L,M,X)
CHÈN X SAU NÚT CÓ M.
10
L
M
TH 2. CHÈN X VÀO CUỐI
Bước 2
Bước 1
12
P
ngtuananh_vn@yahoo
.com
20
3. THÊM MỘT PHẦNTỬ SAU MỘT PHẦNTỬ KHÁC
PROCEDURE ...
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. delete p
ngtuananh_vn@yahoo
.com
19
3. THÊM MỘT PHẦN...
... các phầntử đứng trước và
sau nó trongdanh sách.
- Danhsáchliênkết vòng: phầntửcuốidanhsáchliênkết với phầntử đầu danh
sách.
1.3. Danhsáchliênkết đơn.
1.3.1. Khái niệm.
Danh sách ... danhsáchliênkết gồm có nhiều loại khác
nhau:
- Danhsáchliênkết đơn: mỗi phầntửliênkết với phầntử đứng sau nó trongdanh
sách.
- Danhsáchliênkết đôi/kép: mỗi phầntử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ầntử ( Node) liênkết với nhau nhờ
vào vùng liên...
... 6: Danhsáchliên kết
Giới thiệu - Danhsáchliên kết
11
Danh sáchliênkết vòng : phầntửcuốidanhsáchliênkết
với phầntử đầu danh sách:
A B X Z Y
A B C D
Chương 6: Danhsáchliên kết
DSLK ... lý:
Xuất các phầntửtrongdanh sách
Đếm các phầntửtrongdanh sách
Tính tổng các phầntửtrongdanh sách
Tìm tất cả các phầntửdanhsách thoả điều kiện nào đó
Hủy toàn bộ danhsách (và ... 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...
... phầntửcuối cùng, xóaphầntử ngẫu nhiên hay chèn
thêm, tìm 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 ... tính.
•
Dễ dàng thêm hoặc xóa các phầntử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 ... 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: Tham chiếu trỏ đến phầntử kế tiếp trong cấu trúc.
Head: biến tham chiếu trỏ đến phần tử...
...
Cá c phầ n tửtrongdanh sá ch đ ược kế t nối với nhau theo chùm liê n kế t như
hì nh trê n:
- First là con trỏ chỉ đế n phầ n tử đầ u của danh sá ch liê n kế t
- Phầ n tửcuối của danh sá ch ... n tử đầ u tiê 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ách ... toán trên danhsá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...
... tử của mảng table.
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 DANH ... 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ỉ mở và bảng băm nối kết. Các
phần tử sẽ chứa trong bảng băm chỉ có kích thước nhỏ: mỗi phầntử chỉ cần chứa
một con trỏ đến một ô đang sống. Như vậy, với bảng băm nối kết, kích thước của
mỗi...
...
Cá c phầ n tửtrongdanh sá ch đ ược kế t nối với nhau theo chùm liê n kế t như
hì nh trê n:
- First là con trỏ chỉ đế n phầ n tử đầ u của danh sá ch liê n kế t
- Phầ n tửcuối của danh sá ch ...
}
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 tử đầ u tiê 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 danh sách...
... 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ầntử kế tiếp trongdanh sách. Khi ... }
}
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ầntử thuộc kiểu
T được ... tiếp trongdanhsách
hoặc trị NULL đối với nút cuốidanh sách.
Phầntử đầu Tail Phầntử cu
ối
Head
Data Next Data Next Data •
Con trỏ chỉ đến Con trỏ rỗng NULL
phần tử đầu danh sách...
...
}
c. Xóa phầ n tử đầ u của danh sá ch
(Delete_First): muốn xóa 1 phầ n tử khỏi
danh sá ch liê n kế t thì ta phả i kiể m tra xem danh sá ch có rỗng hay không. Nế u
danh sá ch có phầ n tử thì ...
Cá c phầ n tửtrongdanh sá ch đ ược kế t nối với nhau theo chùm liê n kế t như
hì nh trê n:
- First là con trỏ chỉ đế n phầ n tử đầ u của danh sá ch liê n kế t
- Phầ n tửcuối của danh sá ch ... n tử đầ u tiê 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 danh sách...