...
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 ... nghĩa
Danh sáchliênkết đơ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ên ... ;
return (Len);
}
27
4.2. Danhsáchliênkết đơn (SLL)
4.2.1. Cấutrúcdữ liệu
Nội dung mỗi phần tử (nút) trongdanhsáchliênkết gồm 2
vùng Vùng dữliệu và Vùng liên kết
typedef struct SLLNode
{...
... bởi danhsáchliên kết, vòng tròn và có đầu. Đầu của mỗi
hàng có trờng col = 0, còn đầu của mỗi cột có trờng row = 0. Khi đó, cấutrúc
dữ liệu biểu diễn bảng trong hình 6.1 đợc minh hoạ trong ... valuetype
end;
ở đây danhsách có thể đợc cài đặt bởi một trong các cách mà ta đà xét
trong chơng 3. Tức là ta có thể cài đặt bởi danhsách kế cận (dùng mảng) hoặc
danh sáchliên kết. Các phép toán ... sách Change (NextChange) vào danh
sách Change (NextChange) thay cho việc đa chính các tế bào thuộc danhsách
Change(NextChange) vào danhsách Change (NextChange). Nói một cách
khác, danh sách...
... là một danhsách các đối tượng dữ liệu, một
trong hai đầu danhsách được xem là đầu hàng, còn đầu kia là
đuôi hàng. Chẳng hạn, hàng đợi có thể là danhsách các ký tự
(a, b, c, d), trong đó ... xếp, hàng đợi là CTDL tuyến tính. Hàng đợi
là một danhsách các đối tượng, một đầu của danhsách được
xem là đầu hàng đợi, còn đầu kia của danhsách được xem là
đuôi hàng đợi. Với hàng đợi, chúng ... trỏ
ngoài.
(b) Cài đặt hàng đợi bởi DSLK vòng tròn.
Trong mục 5.4, chúng ta đã nghiên cứu cách cài đặt danh
sách bởi DSLK, ở đó KDLTT danhsách đã được cài đặt bởi lớp
LList. Các phép toán hàng...
... 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 trongdanh 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 trongdanh 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ử ... 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 ... DANHSÁ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ở và kiểu có 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 ...
}
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ử 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):...
... nút nào trongdanhsá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 ... 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 ... 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 trongdanh 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 trongdanh sách, hiển thị lại danh
sách
Xóa phần tử thứ 4 trongdanh ... 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 ... 4 trongdanh sách, hiển thị lại danh sách
Thêm một phần tử vào đầu danh sách, hiển thị lại danh
sách
Thêm một phần tử vào sau phần tử thứ 3 trongdanh sách,
hiển thị danh sách
Tìm sinh...