Tài nguyên dạy học

Hỗ trợ trực tuyến

  • (Hotline:
    0918.441.667 -->Đông
    0947.411.201 -->Cường
    Email:
    quoccuongp.lhp@gmail.com
    )

Điều tra ý kiến

Bạn thấy trang này như thế nào?
Đẹp
Đơn điệu
Bình thường
Ý kiến khác

Thống kê

  • truy cập   (chi tiết)
    trong hôm nay
  • lượt xem
    trong hôm nay
  • thành viên
  • Ảnh ngẫu nhiên

    MiniMovie_Friends_170601.flv P_20170420_170252_vHDR_Auto.jpg Nhung_bi_an_cua_Ai_Cap__Phan_1.flv DSC_8440.jpg DSC_8282.jpg Qua_trinh_nguyen_phan3.flv Ky_la_cay_phat_tan_hat_giong_nho_tu_phat_no.flv CHUYEN_VE_HAI_HAT_LUA.flv IMG_16161.jpg IMG_16151.jpg IMG_16171.jpg IMG_16131.jpg IMG_16041.jpg IMG_16001.jpg IMG_15971.jpg DSC07293.jpg DSC07288.jpg Bai_Ca_Sinh_Vien__Various_Artists.mp3

    Thành viên trực tuyến

    1 khách và 0 thành viên

    Kiểu dữ liệu con trỏ

    Wait
    • Begin_button
    • Prev_button
    • Play_button
    • Stop_button
    • Next_button
    • End_button
    • 0 / 0
    • Loading_status
    Nhấn vào đây để tải về
    Báo tài liệu có sai sót
    Nhắn tin cho tác giả
    (Tài liệu chưa được thẩm định)
    Nguồn:
    Người gửi: Trường THCS Lê Hồng Phong (trang riêng)
    Ngày gửi: 18h:44' 05-06-2014
    Dung lượng: 114.0 KB
    Số lượt tải: 1
    Số lượt thích: 0 người
    Chương 9
    DỮ LIỆU KIỂU CON TRỎ


    I. KHAI BÁO
    Type
    = ^ ;
    Var
    :;

    Ví dụ 1:
    Type
    TroNguyen : ^integer;
    Var
    p, q: TroNguyen;

    Sau khai báo này các biến p và q là các biến con trỏ có thể trỏ đến các biến động có kiểu integer. Chương trình sẽ cấp phát 4 byte cho mỗi biến con trỏ. Còn vùng nhớ của các biến động chưa được cấp phát.

    Ví dụ 2:
    Type
    TroSv = ^ Sinhvien;
    Sinhvien = Record
    Hoten: String[20];
    Diem: real;
    Tiep: TroSv;
    End;
    Var
    p: TroSv;

    Trong ví dụ này, p là biến trỏ có thể trỏ đến các bản ghi có kiểu Sinhvien, trong bản ghi này lại có trường Tiep là một biến trỏ có thể trỏ đến biến động khác cũng có kiểu Sinhvien.

    II. LÀM VIỆC VỚI BIẾN ĐỘNG
    2.1. Cấp phát vùng nhớ
    Dùng thủ tục New theo cú pháp:
    New();
    Phép gán giữa hai biến trỏ được thực hiện nếu chúng có cùng kiểu. Sau phép gán p:=q; các con trỏ p và q cùng trỏ đến một địa chỉ. Do đó mọi thay đổi của p^ cũng làm thay đổi q^. Như vậy, cần phân biệt hai phép gán p:=q và p^:=q^. Ngoài ra, các con trỏ cùng kiểu có thể được so sánh với nhau bằng các toán tử quan hệ = và <>.
    Turbo Pascal cũng khai báo sẵn một con trỏ không trỏ tới một biến động nào gọi là con trỏ Nil. Giá trị con trỏ Nil là tương hợp với mọi kiểu con trỏ. Nil có thể được gán cho biến con trỏ để chỉ ra rằng con trỏ ấy hiện không được sử dụng. Chúng ta cũng có thể sử dụng Nil trong các phép so sánh.

    2.2. Giải phóng vùng nhớ
    Dùng thủ tục Dispose(p);
    Trong đó p là một biến con trỏ. Thủ tục Dispose cho phép trả lại bộ nhớ động đã được cấp phát bởi thủ tục New.

    III. DANH SÁCH ĐỘNG
    3.1. Khái niệm
    Chúng ta đã từng làm quen với kiểu mảng, lưu danh sách gồm nhiều thành phần có cùng kiểu. Mỗi thành phần là một biến tĩnh và số lượng thành phần của danh sách là cố định. Ở đây chúng ta đề cập đến một dạng danh sách động theo nghĩa: mỗi thành phần là một biến động và số lượng thành phần của danh sách có thể thay đổi. Mỗi biến động trong danh sách được gọi là một nút.

    3.2. Khai báo
    Để khai báo một danh sách động trước hết ta khai báo kiểu của mỗi nút trong danh sách.
    Type = ^ ;
    = Record
    Data: DataType;
    Next: ;
    End;
    Var First: ;
    First là địa chỉ của nút đầu tiên trong danh sách, dựa vào trường Tiep của nút này ta bết được địa chỉ của nút thứ hai, cứ như vậy ta biết được địa chỉ của tất cả các nút trong danh sách. Danh sách dạng này được gọi là danh sách liên kết đơn.

    3.3. Các thao tác thường gặp trên danh sách liên kết đơn
    Trong phần này chúng ta giả thiết rằng mỗi nút trong danh sách có hai trường: trường Info (lưu nội dung của biến động) và trường Next (lưu địa chỉ của nút tiếp theo). ta có khai báo danh sách như sau
    Type TroNut = ^Nut;
    Nut = Record
    Info: data; {data là kiểu dữ liệu đã định nghĩa trước}
    Next: TroNut;
    End;
    Var First:TroNut;

    3.3.1. Khởi tạo danh sách
    First:=Nil;

    3.3.2. Bổ sung một nút vào đầu danh sách
    {1. Tạo ra nút mới}
    New(p);
    p^.Info:=X;
    {2. Bổ sung vào đầu danh sách}
    p^.Next:=First;
    First:=p;

    3.3.3. Bổ sung một nút vào cuối danh sách
    Xuất phát danh sách không có nút nào cả. Nút mới thêm vào sẽ nằm cuối danh sách. Khi đó ta cần hai
     
    Gửi ý kiến