TOP Ðối với danh sâch liín kết đơn, khi biết được một nút ta chỉ có thể truy xuất đến nút đứng sau nó. Nếu muốn truy xuất đến nút đứng trước thì phải quay về đầu danh sâch ( Ta cần tạo một danh sâch liín kết kĩp để có thể truy xuất câc phần tử một câch dễ dăng hơn. Ta xem mỗi phần tử của danh sâch lă một ô. Ở mỗi ô ta dùng 2 con trỏ ở 2 đầu :
Con trỏ Next chỉ đến nút tiếp theọ
Con trỏ Prevous chỉ đến nút liền trước.
2. Khai bâo: TOP
Type ElementType = ...; { Kiểu phần tử trong danh sâch } DList= ^ CellType;
CellType = Record
Elements: ElementType; Next,Previous:DList; End;
Var List = DList;
3. Thủ tục khởi tạo danh sâch liín kết kĩp rỗng :
TOP
4. Hăm kiểm tra danh sâch liín kết kĩp rỗng : TOP
Function EmptyDList (L : DList):Boolean;
Begin
EmptyDList := ((L^.Next=Nil) and (L^.Previous=Nil)); End;
5. Thủ tục xen một phần tử văo danh sâch liín kết kĩp : TOP
Procedure InsertList ( x : ElementsType; p : DList; var List : DList);
Var Temp : DList; Begin
New (Temp);
Temp^.Elements := x; Temp^.Next := p^.Next; If p^.Next < > Nil then
p^.Next^.Previous := Temp;
Temp ^.previous := p; p^.Next := Temp; End;
Procedure DeleDlist (p : DList; Var List : Dlist); Begin
If not EmptyDList (List) then Begin
If p^.Next < > Nil then
p^.Next^.Previous := p^.Previous;
p^.Previous^.Next := p^.Next; Dispose (p); End Else Writeln ('Danh sach rong'); End;
BĂI TẬP CUỐI CHƯƠNG II
Băi 1 : Hêy giải thích vì sao thời gian chạy của thủ tục xóa một phần tử trong danh sâch (căi đặt bằng mảng) trong trường hợp tốt nhất lă O(1) vă xấu nhất lă O(n).
Băi 2 : Viết chương trình nhập văo một danh sâch câc số nguyín, in danh sâch theo yíu cầu : In danh sâch ra măn hình theo thứ tự như lúc nhập vă thứ tự ngược lúc nhập.
Băi 3 : Viết thủ tục sắp xếp một danh sâch câc số nguyín trong câc trường hợp :
1. Danh sâch được căi đặt bằng mảng. 2. Danh sâch được căi đặt bằng con trỏ.
Băi 4 : Viết câc thủ tục thực hiện yíu cầu sau :
1. Thím một phần tử văo một danh sâch đê có thứ tự (tăng hoặc giảm) sao cho ta được một danh sâch mới vẫn bảo đảm thứ tự.
2. Xóa một phần tử trong danh sâch liín kết đê có thứ tự.
Băi 5 : Viết thủ tục trộn 2 danh sâch đê có thứ tự (tăng hoặc giảm) để được một danh sâch mới vẫn bảo đảm thứ tự ban đầụ
Băi 6 : Viết thủ tục nhập văo một danh sâch câc số nguyín, loại bỏ câc phần tử trùng nhaụ Sau đó sắp xếp danh sâch theo thứ tự tăng (hoặc giảm). In danh sâch sau khi đê được sắp xếp.
Băi 7 : Ða thứcĠ được lưu trữ trong mây tính dưới dạng một danh sâch liín kết mă mỗi phần tử của danh sâch lă một Record gồm có 3 trường : lưu trữ hệ số, số mũ vă trường Next lă một con trỏ chỉ đến phần tử kế tiếp. Chú ý rằng câch lưu trữ đảm bảo thứ tự số mũ giảm dần của từng hạng tử trong đa thức. Hêy viết chương trình thực hiện câc công việc sau :
1. Lưu trữ đa thức. 2. Cộng 2 đa thức.
3. Tính độ phức tạp tính toân của giải thuật của thủ tục cộng 2 đa thức.
Băi 8 : Viết chương trình nhập văo một xđu ký tự, xếp chúng văo một danh sâch liín kết, dùng phím $ để bâo hết xđụ Duyệt qua danh sâch vă in danh sâch theo thứ
tự đảo ngược lại lúc nhập.
Băi 9 : Viết chương trình nhập văo một chuỗi dấu ngoặc vă kiểm tra xem chuỗi dấu
ngoặc đó đúng hay sai theo quan điểm toân học.
Băi 11 : Hình dưới đđy biểu diễn một mảng Space gồm có 10 phần tử , dùng để diễn tả danh sâch bằng con nhây vad 2 danh sâch L1, L2 đê có trong mảng :
Băi 12 : Ðể tiện việc truy nhập văo danh sâch, người ta tổ chức một danh sâch liín kết có dạng như hình vẽ sau :
Gọi lă danh sâch liín kết vòng. Hêy căi đặt một danh sâch nối kết vòng như vậỵ
CHƯƠNG 3 : CẤU TRÚC CĐY
Ị ỊNH NGHĨA VĂ CÂC KHÂI NIỆM CƠ BẢNĐ 1. ịnh nghĩaĐ
2. Câc khâi niệm cơ bản
3. Câc phĩp duyệt cđy quan trọng 4. Cđy có nhản vă cđy biểu thức
5. Quy tắc biểu diễn một biểu thức toân học trín cđy IỊ KIỂU DỮ LIỆU TRỪU TƯỢNG CĐY
1. Câc phĩp toân trín cđy 2. Căi đặt cđy
IIỊ CĐY NHỊ PHĐN 1. ịnh nghĩaĐ 2. Tính chất
3. Căi đặt cđy nhị phđn