Dạng bài tập số 3: dựa trên cơ sở thuật toán duyệt danh sách liên kết đơn sau đây: Procedure Linked Traverse (L: PointerType); Var CurrPtr: PointerType; Begin CurrPtr:=L; {truy nhập đến nút đầu của danh sách} While CurrPtr 0 do {vòng lặp duyệt danh sách} Begin Write(NodeCurrPtr.Data); {in ra dữ liệu nút hiện thời} CurrPtr:= NodeCurrPtr.Next {chuyển sang nút tiếp theo} End; end; Thủ tục xử lý danh sách cũng là các thuật toán xử lý cơ bản như: tính tổng, trung bình, tìm max, min. ⇒ Vẫn tuân thủ theo đúng nguyên tắc là thay thế lệnh xử lý dữ liệu của nút hiện thời bằng lệnh xử lý đặc trưng của thuật toán. ⇒ Trong bài kiểm tra các em phải thực hiện việc duyệt danh sách 2 lần, 1 lần để tính giá trị trung bình, lần 2 để đếm số nút có giá trị lớn hơn trung bình Procedure Linked Traverse(L: PointerType); Var CurrPtr: Pointer Type; Tong, dem, tb, soluong: real; Begin CurrPtr:=L; {truy nhập đến nút đầu của danh sách} While CurrPtr 0 do {vòng lặp duyệt danh sách} Begin Tong:=tong+NodeCurrPtr.Data; {xử lý dữ liệu nút hiện thời} Dem:=dem+1; CurrPtr:= NodeCurrPtr.Next {chuyển sang nút tiếp theo} End; Tb:=tongdem; {đếm số lượng lớn hơn tb} CurrPtr:=L; {truy nhập đến nút đầu của danh sách} While CurrPtr 0 do {vòng lặp duyệt danh sách} Begin IF NodeCurrPtr.Data>TB THEN soluong:=soluong+1; CurrPtr:= NodeCurrPtr.Next {chuyển sang nút tiếp theo} End; Write(soluong); {in ra kết quả} END;
Trang 1Dạng bài tập số 3: dựa trên cơ sở thuật toán duyệt danh sách liên kết đơn sau đây:
Procedure Linked Traverse (L: PointerType);
Var
CurrPtr: PointerType;
Begin
CurrPtr:=L; {truy nhập đến nút đầu của danh sách}
While CurrPtr <> 0 do {vòng lặp duyệt danh sách}
Begin
Write(Node[CurrPtr].Data); {in ra dữ liệu nút hiện thời}
CurrPtr:= Node[CurrPtr].Next {chuyển sang nút tiếp theo}
End;
end;
Thủ tục xử lý danh sách cũng là các thuật toán xử lý cơ bản như: tính tổng, trung bình, tìm max, min
Vẫn tuân thủ theo đúng nguyên tắc là thay thế lệnh xử lý dữ liệu của nút hiện thời bằng lệnh xử lý đặc trưng của thuật toán
Trong bài kiểm tra các em phải thực hiện việc duyệt danh sách 2 lần, 1 lần để tính giá trị trung bình, lần 2 để đếm số nút có giá trị lớn hơn trung bình
Procedure Linked Traverse(L: PointerType);
Var
CurrPtr: Pointer Type;
Tong, dem, tb, soluong: real;
Begin
CurrPtr:=L; {truy nhập đến nút đầu của danh sách}
While CurrPtr <> 0 do {vòng lặp duyệt danh sách}
Begin
Tong:=tong+Node[CurrPtr].Data; {xử lý dữ liệu nút hiện thời}
Dem:=dem+1;
CurrPtr:= Node[CurrPtr].Next {chuyển sang nút tiếp theo}
End;
Tb:=tong/dem; {đếm số lượng lớn hơn tb}
CurrPtr:=L; {truy nhập đến nút đầu của danh sách}
While CurrPtr <> 0 do {vòng lặp duyệt danh sách}
Begin
IF Node[CurrPtr].Data>TB THEN soluong:=soluong+1;
CurrPtr:= Node[CurrPtr].Next {chuyển sang nút tiếp theo}
End;
Write(soluong); {in ra kết quả}
END;