Tải bản đầy đủ (.docx) (1 trang)

Duyệt danh sách liên kết Cấu trúc dữ liệu và giải thuật NEU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (57 KB, 1 trang )

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(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 tố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;



×