Môn: Cấu trúc dữ liệu và giải thuật Người soạn: Nguyễn Lê Đăng Khoa Nội dung: Danh sách liên kết đơn (thêm, xóa, tìm kiếm, sắp xếp)
Trang 1NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
DANH SÁCH LIÊN KẾT ĐƠN Người soạn: Nguyễn Lê Đăng Khoa
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
1
Trang 2NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
Trang 3NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
data next
Hình dung DSLK đơn như đoàn
tàu hỏa gồm các toa tàu được
nối với nhau bằng những móc
khóa
Từ đó Node gồm có 2 phần:
+ Data phần chứa dữ liệu (có thể
là số nguyên hoặc thông tin của
1 user)
+ Phần next là một con trỏ lưu
địa chỉ của Node kế tiếp
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
3
Trang 4NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
// ĐỊNH NGHĨA CẤU TRÚC NODE
Trang 5NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
// ĐỊNH NGHĨA CẤU TRÚC NODE
Node* taoNode(int x) {
Node* newNode = new Node;
Trang 6NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
// ĐỊNH NGHĨA CẤU TRÚC NODE
Node* taoNode(int x) {
Node* newNode = new Node;
Trang 7NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
// ĐỊNH NGHĨA CẤU TRÚC NODE
Node* taoNode(int x) {
Node* newNode = new Node;
Trang 8NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
// ĐỊNH NGHĨA CẤU TRÚC NODE
Node* taoNode(int x) {
Node* newNode = new Node;
Trang 9NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
// ĐỊNH NGHĨA CẤU TRÚC NODE
Node* taoNode(int x) {
Node* newNode = new Node;
Trang 10NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
Trang 11NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
2 Định nghĩa và xây dựng DSLK
// ĐỊNH NGHĨA VÀ KHỞI TẠO DANH SÁCH CHỨA NODE
struct list
{
Node* head = NULL;
Node* Tail = NULL;
Trang 12NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
Trang 13NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào đầu danh sách
void themDau(list& sl, Node* x) {
Trang 14NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào đầu danh sách
void themDau(list& sl, Node* x) {
Trang 15NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào đầu danh sách
void themDau(list& sl, Node* x) {
Trang 16NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào đầu danh sách
void themDau(list& sl, Node* x) {
Trang 17NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào đầu danh sách
void themDau(list& sl, Node* x) {
Trang 18NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào đầu danh sách
void themDau(list& sl, Node* x) {
Trang 19NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào đầu danh sách
void themDau(list& sl, Node* x) {
Trang 20NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào đầu danh sách
void themDau(list& sl, Node* x) {
Tail
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
20
Trang 21NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào cuối danh sách
void themCuoi(list& sl, Node* x) {
Trang 22NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào cuối danh sách
void themCuoi(list& sl, Node* x) {
Trang 23NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào cuối danh sách
void themCuoi(list& sl, Node* x) {
Trang 24NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào cuối danh sách
void themCuoi(list& sl, Node* x) {
Trang 25NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào cuối danh sách
void themCuoi(list& sl, Node* x) {
Trang 26NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào cuối danh sách
void themCuoi(list& sl, Node* x) {
Trang 27NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào cuối danh sách
void themCuoi(list& sl, Node* x) {
Trang 28NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào cuối danh sách
void themCuoi(list& sl, Node* x) {
Trang 29NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Thêm Node vào cuối danh sách
void themCuoi(list& sl, Node* x) {
Trang 30NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
Trang 31NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
Trang 32NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
32
Trang 33NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
33
Trang 34NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
34
Trang 35NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
35
Trang 36NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
36
Trang 37NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
37
Trang 38NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
Trang 39NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
Trang 40NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
Trang 41NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
Trang 42NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
Trang 43NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
3 Các thao tác thêm
// Thêm giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void themGiua(list &sl, Node *x, int k){
Trang 44NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
1 Định nghĩa và khởi tạo node
Trang 45NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node đầu
void xoaDau(list &sl){
if(ktDsRong(sl)) return;
Node *tmp = sl.head;
sl.head = sl.head->next;
if(sl.head == NULL) sl.Tail = NULL;
Trang 46NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node đầu
void xoaDau(list &sl){
if(ktDsRong(sl)) return;
Node *tmp = sl.head;
sl.head = sl.head->next;
if(sl.head == NULL) sl.Tail = NULL;
Trang 47NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node đầu
void xoaDau(list &sl){
if(ktDsRong(sl)) return;
Node *tmp = sl.head;
sl.head = sl.head->next;
if(sl.head == NULL) sl.Tail = NULL;
Trang 48NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node đầu
void xoaDau(list &sl){
if(ktDsRong(sl)) return;
Node *tmp = sl.head;
sl.head = sl.head->next;
if(sl.head == NULL) sl.Tail = NULL;
Trang 49NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node đầu
void xoaDau(list &sl){
if(ktDsRong(sl)) return;
Node *tmp = sl.head;
sl.head = sl.head->next;
if(sl.head == NULL) sl.Tail = NULL;
Trang 50NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node đầu
void xoaDau(list &sl){
if(ktDsRong(sl)) return;
Node *tmp = sl.head;
sl.head = sl.head->next;
if(sl.head == NULL) sl.Tail = NULL;
Trang 51NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node đầu
void xoaDau(list &sl){
if(ktDsRong(sl)) return;
Node *tmp = sl.head;
sl.head = sl.head->next;
if(sl.head == NULL) sl.Tail = NULL;
Trang 52NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node đầu
void xoaDau(list &sl){
if(ktDsRong(sl)) return;
Node *tmp = sl.head;
sl.head = sl.head->next;
if(sl.head == NULL) sl.Tail = NULL;
Trang 53NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node đầu
void xoaDau(list &sl){
if(ktDsRong(sl)) return;
Node *tmp = sl.head;
sl.head = sl.head->next;
if(sl.head == NULL) sl.Tail = NULL;
Trang 54NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trang 55NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trang 56NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trang 57NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trường hợp 2: Danh đã có Node
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
57
Trang 58NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trường hợp 2: Danh đã có Node
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
58
Trang 59NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trường hợp 2: Danh đã có Node
tmp www.fb.com/nguyenledangkhoa.2005 YTB: NGUYEN LE DANG KHOA - FB:
59
Trang 60NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trang 61NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trường hợp 2: Danh đã có Node
tmp www.fb.com/nguyenledangkhoa.2005 YTB: NGUYEN LE DANG KHOA - FB:
61
Trang 62NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trường hợp 2: Danh đã có Node
tmp www.fb.com/nguyenledangkhoa.2005 YTB: NGUYEN LE DANG KHOA - FB:
62
Trang 63NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trang 64NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trường hợp 2: Danh đã có Node
tmp www.fb.com/nguyenledangkhoa.2005 YTB: NGUYEN LE DANG KHOA - FB:
64
Trang 65NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trường hợp 2: Danh đã có Node
tmp www.fb.com/nguyenledangkhoa.2005 YTB: NGUYEN LE DANG KHOA - FB:
65
Trang 66NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trang 67NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trang 68NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
bool ktDsRong(list sl) {
return sl.head == NULL ? true : false;
}
//Xóa Node cuối
void xoaCuoi(list &sl){
Trường hợp 2: Danh đã có Node
YTB: NGUYEN LE DANG KHOA - FB: www.fb.com/nguyenledangkhoa.2005
68
Trang 69NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
// Xóa giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void xoaGiua(list &sl, int k){
Trang 70NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
// Xóa giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void xoaGiua(list &sl, int k){
Trang 71NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
// Xóa giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void xoaGiua(list &sl, int k){
Trang 72NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
// Xóa giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void xoaGiua(list &sl, int k){
Trang 73NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
// Xóa giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void xoaGiua(list &sl, int k){
Trang 74NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
// Xóa giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void xoaGiua(list &sl, int k){
Trang 75NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
// Xóa giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void xoaGiua(list &sl, int k){
Trang 76NGUYỄN LÊ ĐĂNG KHOA DANH SÁCH LIÊN KẾT ĐƠN
4 Các thao tác xóa
// Xóa giữa (với K hợp lệ ko thuộc vị trí
cuối hoặc đầu)
void xoaGiua(list &sl, int k){