Chủ Nhật, 3 tháng 3, 2013

Một số bài tập pascal về danh sách liên kết đơn


Bài tập số 1
Dùng ngôn ngữ lập trình Pascal để thực hiện công việc sau:
Tạo một danh sách liên kết đơn n phần tử (n>0) chứa các số nguyên ngẫu nhiên. Hãy in ra giá trị và các vị trí của phần tử nhỏ nhất trong danh sách. 
Bài tập số 2

Dùng ngôn ngữ lập trình Pascal để thực hiện công việc sau:
Tạo một danh sách liên kết đơn n phần tử (n>0) chứa các số nguyên ngẫu nhiên. Hãy in ra giá trị và các vị trí của phần tử lớn nhất trong danh sách.

code:

PROGRAM DANHSACH_NOIDON; 
VAR Type Contro = ^SoNguyen;
 SoNguyen = Record 
Value: Integer;
            Next: Contro;
            End;
            P:Contro;
 /*Cac ham va thu tuc dung trong chuong trinh*/ 
Procedure TaoDanhsach(Var P: Contro);
(*Thu tuc tao moi danh sach lien ket don chua cac so nguyen ngau nhien, so phan tu nhap tu ban phim*) 
Var Q,R: Contro; I,n: Interger; 
Begin
            Write(“Nhap co phan tu cua danh sach: ”); Readln(n);
 P:=Nil; R:=P; For i:=1 to n do
Begin
New(Q);
Q^.Value := Random(32767);
 If P=Nil then P:=Q
Else R^.Next:=Q; R:=Q;
End;
End;
Procedure HienthiDanhsach(P: Contro);
(*Thu tuc hien thi danh sach P ra man hinh*)
 Var P:Contro;
Begin
If P=Nil then
Begin
Write(“Danh sach rong”);
Exit(1);
End;
R:=P;
While R<>Nil do
Begin
Write(R^.Value:5);
R:=R^.Next;
End;
End;
Function Min_DS (P: Contro): Integer;
(*Ham tim so nho nhat trong danh sach*)
Var R: Contro; X: Integer;
Begin
X:=P^.Value; R:=P^.Next;
While R<>Nil
Begin
If R^.Value < X then X:=R^.Value; R:=R^.Next;
End;
Min_DS:=X;
End;
Function Max_DS (P: Contro): Integer;
(*Ham tim so lon nhat trong danh sach*)
Var R: Contro; X: Integer;
Begin
X:=P^.Value; R:=P^.Next;
While R<>Nil
Begin
If R^.Value > X then X:=R^.Value;
R:=R^.Next;
End;
Max_DS:=X;
End;
Procedure SoNhoNhat (P: Contro);
(*Thu tuc hien thi so nho nhat va danh sach dia chi cua cac so nho nhat*)
Var X: integer; R:Contro;
Begin
X:=Min_DS(P);
Writeln(“So nho nhat co trong danh sach: ”,X);
Writeln(“Vi tri:”);
R:=P;
While R<>Nil do
Begin
If R^.Value = X then Writeln(R);
R:=R^.Next;
End;
End;
Procedure SoLonNhat (P: Contro);
(*Thu tuc hien thi so lon nhat va danh sach dia chi cua cac so lon nhat*)
Var X: integer; R:Contro;
Begin
X:=Max_DS(P);
Writeln(“So lon nhat co trong danh sach: ”,X);
Writeln(“Vi tri:”);
R:=P;
While R<>Nil do
Begin
If R^.Value = X then Writeln(R);
R:=R^.Next;
End;
End;
BEGIN
Writeln(“TAO DANH SACH LIEN KET DON”);
TaoDanhsach(P);
Writeln(“DANH SACH VUA TAO”);
HienThiDanhsach(P);
SoNhoNhat(P);
SoLonNhat(P);
Readln;
END.

Không có nhận xét nào: