Home / Lập trình / Pascal / Bài 11 – Con trỏ trong Pascal (tt)

Bài 11 – Con trỏ trong Pascal (tt)

Bài 11 - Con trỏ trong Pascal (tt)

Ứng dụng lớn nhất của con trỏ giống như phần mở đầu đã nói, tạo ra một danh sách liên kết thay cho mảng. Về danh sách liên kết các bạn có thể xem tại đây, rất đầy đủ, chi tiết bằng C rồi. (Nó cũng giống như Pascal thôi hehee).
Và dưới đây là một bài minh họa bằng Pascal về nhập xuất danh sách liên kết.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Program DSLK;
uses crt;
type
        {dinh nghia kieu sinhvien}
        sinhvien = record
                MSV, Hoten : string;
                Diem : real;
        end;
        {dinh nghia Plist va list}
        Plist = ^list;
        list = record
                data : sinhvien;
                next : Plist;
        end;
var
        first, last, newp : Plist;
        ch : char;
        i : integer;
BEGIN
        clrscr;
        writeln('Danh sach sinh vien su dung con tro - danh sach lien ket');
        writeln('-------------');
        writeln;
        i := 0;
        repeat
                inc(i);
                new(newp); {cap phat o nho}
                with newp^.data do
                begin
                        write('Nhap ma sinh vien thu ', i, ' : ');
                        readln(MSV);
                        write('Nhap ho ten : ');
                        readln(Hoten);
                        write('Nhap diem tong ket : ');
                        readln(Diem);
                        write('Tiep tuc ? (y/ n)');
                        readln(ch);
                        ch := upcase(ch);
                end;
                if first = nil then     {Gan phan tu dau tien}
                        first := newp
                else                    {Gan phan tu cuoi cung}
                        last^.next := newp;
                last := newp;           {Cap nhat con tro last}
                last^.next := nil;
        until ch = 'N';
        clrscr;
        writeln('Danh sach sinh vien su dung con tro - danh sach lien ket');
        writeln('-------------');
        writeln;
        newp := first;
        writeln('STT':5, ' | ', 'Ma sinh vien':20,' | ', 'Ho va ten' : 20,' | ', 'Diem':5);
        for i:= 1 to 50 do write('-');
        writeln;
        i := 0;
        while newp <> nil do
                with newp^ do
                begin
                        inc(i);
                        writeln(i:5,' | ', data.MSV:20, ' | ', data.Hoten:20, ' | ', data.Diem:5:2);
                        newp := next;
                end;
        readln;
END.

Check Also

Bài 9 - Kiểu bản ghi – Record

Bài 9 – Kiểu bản ghi – Record

Số người xem bài viết 6