... chức theo danhsách đặc
d. Tổ chức theo danhsáchliên kết
e. Ứng dụng
3. Danhsáchliênkết
Danh sáchliênkết là danhsách mà các phần tử
được kết nối với nhau nhờ các vùng liên kết.
Mỗi ...
2. Danhsáchliên kết
1. Viết thuật toán tạo danhsáchliênkết chứa các số
nguyên nhập từ bàn phím, sau đó hiển thị danh
sách vừa tạo
2. Viết thuật toán chèn phần tử vào danhsáchliênkết ... trong danh
sách liên kết
4. Viết thuật toán đếm số nút trong danhsáchliên kết
5. Viết thuật toán tính giá trị trung bình của các phần
tử trong danh sách
6. Viết thuật toán đảo ngược một danh sách...
...
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...
... trong danh 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 cấutrúc lưu ... 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ó trong danh
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...
...
khác, danhsáchliênkết chia thành các loại khác nhau:
Danh sáchliênkết đơn
Danh sáchliênkết đôi/kép
Danh sách đa liênkết
Danh sáchliênkết vòng (vòng đơn, vòng đôi)
Mỗi loại danh ... danh sách
3. Danhsách đặc
Định nghĩa
Biểu diễn danhsách đặc
Các thao tác trên danhsách đặc
Ưu nhược điểm và ứng dụng
1. Danhsáchliên kết
Định nghĩa
Danh sáchliênkết đơn
Danh ... đơn
Danh sáchliênkết kép
Ưu nhược điểm của danhsáchliên kết
1. Danhsách hạn chế
Hàng đợi
Ngăn xếp
Ứng dụng của danhsách hạn chế
BÀI TẬP
29
4.2. Danhsáchliênkếtđơn (tt)
4.2.1. Cấu trúc...
... THUậT TOáN TRÊN CấUTRúCDANHSáCHLIÊNKếT (LINKED LIST)
I. Khái niệm:
Cấ u trúcdanh 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 ... 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
:
II.1. Tạo danh sách
:
a. Khởi tạ o danh sá ch
(Initialize): ...
}
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...
... THUậT TOáN TRÊN CấUTRúCDANHSáCHLIÊNKếT (LINKED LIST)
I. Khái niệm:
Cấ u trúcdanh 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 ... 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
:
II.1. Tạo danh sách
:
a. Khởi tạ o danh sá ch
(Initialize): ...
}
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ấutrúcdanhsá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ử ...
Chương III
CẤU TRÚCDANHSÁCHLIÊNKẾT
III.1. Giới thiệu kiểu dữliệu con trỏ
III.1.1. So sánh kiểu dữliệu tĩnh và kiểu dữliệu động
Do đặc điểm và hạn chế của các kiểu dữliệu cơ sở ... kiểu dữliệu động cơ sở là con trỏ, ta có thể xây dựng các kiểu dữ
liệu động phong phú khác có nhiều ứng dụng trên thực tế như: danhsáchliênkết
động, cấutrúc cây, đồ thị, …
Cấutrúc danh...
... THUậT TOáN TRÊN CấUTRúCDANHSáCHLIÊNKếT (LINKED LIST)
I. Khái niệm:
Cấ u trúcdanh 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 ... 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
:
II.1. Tạo danh sách
:
a. Khởi tạ o danh sá ch
(Initialize): ...
}
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...
... nút cuối của danhsáchliênkết đơn.
3. Viết 1 hàm nối 2 danhsáchliênkếtđơn thành 1 danhsáchliênkết đơn.
4. Viết 1 hàm để copy một danhsáchliênkết thành 1 danhsáchliênkết khác giống ... nút nào trong danhsách bằng cách lần theo vòng liên kết.
7.2 Danhsáchliênkết kép
Danh sáchliênkết kép là danhsáchliênkết mà mỗi nút có hai trường liên kết:
một trường liênkết chỉ nút ... LOẠI DANHSÁCHLIÊNKẾT KHÁC
7.1 Danhsáchliênkết vòng
Danh sáchliênkết vòng là danhsáchliênkết nhưng trường next của nút cuối chỉ
nút đầu tiên của danh sách.
Hình vẽ sau đây mô tả danh sách...
... mới vào danhsách theo vị trí
Sắp xếp danhsách theo chiều tăng dần
KHAI BÁO CẤUTRÚCDỮ LIỆU
Khai báo Cấutrúcdữliệu MẪU
L=NULL -> ds L rỗng
struct Item {
Các thành phần dữ liệu;
};
Khai ... NODE TRÊN DANH SÁCH
A
F
B
C
E
L
Q
Q
Giả sử cần tìm node có
infor là C trong danh sách
Q
Tìm thấy và con
trỏ Q trỏ vào
node tìm được
KHAI BÁO CẤUTRÚCDỮ LIỆU
Khai báo Cấutrúcdữliệu MẪU
L1/L2=NULL ... 1;
Else return 0;
}
Khởi tạo danhsách rỗng
Kiểm tra danhsách rỗng
Duyệt danh sách
Tìm kiếm một node trên danh sách
Bổ sung node mới vào đầu danh sách
Bổ sung node mới vào trước/sau...
... cấutrúcdữliệu của danh sách
Nhập mới 5 phần tử cho danh sách
Hiển thị danhsách lên màn hình
Xóa phần tử đầu tiên trong danh sách, hiển thị lại danh
sách
Xóa phần tử thứ 4 trong danh ... 0;
}
BIỂU DIỄN CẤUTRÚCDỮ LIỆU
Giả sử các phần tử của danhsách có kiểu dữliệu
là “Item”
Độ dài của danhsách là một số nguyên dương N
Danh sách được biểu diễn bởi một cấutrúc gồm
hai ... tạo danhsách rỗng (creat)
Kiểm tra danhsách rỗng (empty)
Kiểm tra danhsách đầy (full)
Bổ sung một phần tử vào danhsách (add)
Loại bỏ một phần tử khỏi danhsách (remove)
Sắp xếp danh...