Professional Documents
Culture Documents
AND
DOUBLE LINKED LISTS
NHÓM 4
• Hồ Thái Long
Danh sách • Nguyễn Tường Phương Uyên
thành viên • Phan Công Tú
• Nguyễn Anh Khoa
NỘI DUNG
head 5 6 7 9 /
Thêm
Xóa
Sửa
Tìm kiếm
…
CIRCULAR LINKED LISTS.
head 5 6 7 9 X
head 5 6 7 9
head 5
Việc triển khai danh sách liên kết vòng rất dễ dàng và gần giống với việc triển khai danh
sách liên kết đơn, với điểm khác biệt duy nhất là, trong danh sách liên kết vòng, Nút cuối
cùng sẽ trỏ tới node Đầu danh sách. Trong danh sách liên kết đơn, Node cuối cùng chỉ là
NULL.
CIRCULAR LINKED LISTS.
Ứng dụng thực tế nơi danh sách liên kết vòng được sử dụng là Máy tính cá nhân, nơi
nhiều ứng dụng đang chạy cùng lúc. Tất cả các ứng dụng đang chạy được giữ trong
một danh sách liên kết tròn và hệ điều hành cung cấp một khoảng thời gian cố định
cho tất cả các ứng dụng đang chạy. Hệ điều hành tiếp tục lặp lại danh sách được liên
kết cho đến khi tất cả các ứng dụng được hoàn thành.
Một ví dụ khác có thể là trò chơi Nhiều người chơi. Tất cả Người chơi được lưu giữ
trong Danh sách liên kết hình tròn và con trỏ tiếp tục di chuyển về phía trước khi cơ
hội của người chơi kết thúc.
IN DANH SÁCH LIÊN KẾT VÒNG
head 5 6 7 9
THÊM MỘT NODE TRONG DANH SÁCH LIÊN KẾT VÒNG
head 5 6 7 9
9 /
Ta muốn thêm node có giá trị bằng 9 vị trí 2 trong danh sách liên
kết vòng trên
THÊM MỘT NODE TRONG DANH SÁCH LIÊN KẾT VÒNG
head 5 6 7 9
P = head
THÊM MỘT NODE TRONG DANH SÁCH LIÊN KẾT VÒNG
head 5 6 7 9
for(i=0;i<index-1;i++)
p=p->next;
THÊM MỘT NODE TRONG DANH SÁCH LIÊN KẾT VÒNG
head 5 6 7 9
t->data=x;
t->next=p->next;
p->next=t;
THÊM MỘT NODE TRONG DANH SÁCH LIÊN KẾT VÒNG
head 5 6 7 9
9
THÊM MỘT NODE VÀO ĐẦU DANH
head 5 6 7 9
9
THÊM MỘT NODE VÀO ĐẦU DANH
head 5 6 7 9
9
while(p->next!=Head)p=p->next;
p->next=t;
t->next=Head;
Head=t;
XOÁ MỘT NODE TRONG DANH SÁCH LIÊN KẾT
VÒNG
head 5 6 7 9
XOÁ NODE Ở ĐẦU
p
head 5 6 7 9
head 5 6 7 9
XOÁ NODE Ở ĐẦU
head 5 6 7 9
p->next=Head->next;
XOÁ NODE Ở ĐẦU
head 6 7 9
Delete Head;
Head = p->next;
XOÁ NODE Ở VỊ TRÍ BẤT KÌ
head 5 6 3 7 9
p q
for(i=0;i<index-1;i++)
p=p->next;
head 5 6 3 7 9
q = p->next;
XOÁ NODE Ở VỊ TRÍ BẤT KÌ
head 5 6 3 7 9
p->next = q->next;
XOÁ NODE Ở VỊ TRÍ BẤT KÌ
head 5 6 3 9
head 5 6 3 9
delete q;
SẮP XẾP TRONG DANH SÁCH LIÊN KẾT
VÒNG
new_node->next = current->next;
current->next = new_node;
}
head 12 56
SẮP XẾP TRONG DANH SÁCH LIÊN KẾT
VÒNG
int arr[] = { 12, 56, 2, 11, 1, 90 };
Case 3: If value is smaller than head's
value then we need to change next of last
head 12 56 node
head
/ 5 6 7 9 /
THÊM MỘT NODE TRONG DANH SÁCH LIÊN
KẾT ĐÔI
Thêm ở
Thêm ở vị
đầu danh
trí bất kì
sách
THÊM Ở ĐẦU DANH SÁCH
p P = new Node;
p->data = x;
p->prev = NULL;
/ x
head
/ 5 6 7 9 /
THÊM Ở ĐẦU DANH SÁCH
/ x p->next = head;
head
/ 5 6 7 9 /
THÊM Ở ĐẦU DANH SÁCH
p
head->prev = p;
head = p;
/ x
head
5 6 7 9 /
THÊM Ở ĐẦU DANH SÁCH
head
/ x 5 6 7 9 /
THÊM Ở VỊ TRÍ BẤT KÌ
head / 5 6 7 9 /
head / 5 6 7 9 /
head / 5 6 7 9 /
T = new Node;
t->data = x;
t->prev = p;
t->next=p->next;
THÊM Ở VỊ TRÍ BẤT KÌ
Thêm ở vị trí thứ 2
x
p
head / 5 6 7 9 /
if(p->next)
p->next->prev=t;
p->next = t;
THÊM Ở VỊ TRÍ BẤT KÌ
Thêm ở vị trí thứ 2
head / 5 6 x 7 9 /
THÊM Ở VỊ TRÍ BẤT KÌ
Thêm ở vị trí thứ 2
head
/ 5 6 7 9 /
head / 5 6 x 7 9 /
XOÁ MỘT NODE TRONG DANH SÁCH
LIÊN KẾT ĐÔI
Xoá node
Xoá node
ở vị trí bất
ở đầu
kì
XOÁ NODE Ở ĐẦU
head / 5 6 8 7 9 /
head
/ 6 8 7 9 /
p = head;
head =head->next;
if(head)
head / 5 /
head ->prev = NULL;
delete p;
XOÁ NODE Ở VỊ TRÍ BẤT KÌ
Xoá node thứ 3
head / 5 6 8 7 9 /
head / 5 6 8 7 9 /
for(i=0;i<index;i++)
p=p->next;
XOÁ NODE Ở VỊ TRÍ BẤT KÌ
head / 5 6 8 7 9 /
p->prev->next = p->next;
if(p->next)
p->next->prev = p->prev;
XOÁ NODE Ở VỊ TRÍ BẤT KÌ
head / 5 6 8 9 /
head / 5 6 8 9 /
Delete p;
Liên kết đôi
Array List
SẮP XẾP TRONG DANH SÁCH LIÊN KẾT ĐÔI
/ 5 2 8 7 9 /
first
/ 5 2 8 /
second
7 9 /
SẮP XẾP TRONG DANH SÁCH LIÊN KẾT ĐÔI
SẮP XẾP TRONG DANH SÁCH LIÊN KẾT ĐÔI
first second
/ 6 /
/ 5 8 /
/ 6 8 /
/ 5 / 6 8 /
DANH SÁCH LIÊN KẾT VÒNG ĐÔI
head 5 6 8 9
SO SÁNH
TÀI LIỆU THAM KHẢO
https://www.geeksforgeeks.org/merge-sort-for-doubly-linked-list/
https://www.geeksforgeeks.org/sorted-insert-for-circular-linked-list/
Soure code from: Abdul Bari
BÀI THUYẾT TRÌNH ĐẾN ĐÂY LÀ KẾT THÚC
CẢM ƠN CÁC BẠN VÀ THẦY ĐÃ LẮNG NGE