Hotline: 024.62511017

024.62511081

  Trang chủ   Sản phẩm   Phần mềm Dành cho nhà trường   Phần mềm Hỗ trợ học tập   Kho phần mềm   Liên hệ   Đăng nhập | Đăng ký

Tìm kiếm

School@net
 
Xem bài viết theo các chủ đề hiện có
  • Hoạt động của công ty (726 bài viết)
  • Hỗ trợ khách hàng (498 bài viết)
  • Thông tin tuyển dụng (57 bài viết)
  • Thông tin khuyến mại (80 bài viết)
  • Sản phẩm mới (216 bài viết)
  • Dành cho Giáo viên (549 bài viết)
  • Lập trình Scratch (3 bài viết)
  • Mô hình & Giải pháp (156 bài viết)
  • IQB và mô hình Ngân hàng đề kiểm tra (127 bài viết)
  • TKB và bài toán xếp Thời khóa biểu (242 bài viết)
  • Học tiếng Việt (183 bài viết)
  • Download - Archive- Update (289 bài viết)
  • Các Website hữu ích (70 bài viết)
  • Cùng học (92 bài viết)
  • Learning Math: Tin học hỗ trợ học Toán trong nhà trường (78 bài viết)
  • School@net 15 năm (154 bài viết)
  • Mỗi ngày một phần mềm (7 bài viết)
  • Dành cho cha mẹ học sinh (124 bài viết)
  • Khám phá phần mềm (122 bài viết)
  • GeoMath: Giải pháp hỗ trợ học dạy môn Toán trong trường phổ thông (36 bài viết)
  • Phần mềm cho em (13 bài viết)
  • ĐỐ VUI - THƯ GIÃN (363 bài viết)
  • Các vấn đề giáo dục (1210 bài viết)
  • Bài học trực tuyến (1037 bài viết)
  • Hoàng Sa - Trường Sa (17 bài viết)
  • Vui học đường (275 bài viết)
  • Tin học và Toán học (220 bài viết)
  • Truyện cổ tích - Truyện thiếu nhi (180 bài viết)
  • Việt Nam - 4000 năm lịch sử (97 bài viết)
  • Xem toàn bộ bài viết (8223 bài viết)
  •  
    Đăng nhập/Đăng ký
    Bí danh
    Mật khẩu
    Mã kiểm traMã kiểm tra
    Lặp lại mã kiểm tra
    Ghi nhớ
     
    Quên mật khẩu | Đăng ký mới
     
    Thành viên có mặt
    Khách: 10
    Thành viên: 0
    Tổng cộng: 10
     
    Số người truy cập
    Hiện đã có 89585434 lượt người đến thăm trang Web của chúng tôi.

    Mảng và danh sách

    Ngày gửi bài: 20/10/2006
    Số lượt đọc: 7951

    Mảng là một tập có thứ tự gồm một số cố định các phần tử. Không có phép bổ sung phần tử hoặc loại bỏ phần tử được thực hiện đối với mảng. Thường chỉ có các phép tạo lập mảng, tìm kiếm một phần tử của mảng, lưu trữ một phần tử của mảng. Ngoài giá trị, một phần tử của mảng còn được đặc trưng bởi chỉ số (index) thể hiện thứ tự của phần tử đó trong mảng.

    Vector là mảng một chiều, mỗi phần tử ai của nó ứng với một chỉ số i. Ma trận là mảng hai chiều, mỗi phần tử aij ứng với hai chỉ số i và j.

    Tương tự, người ta mở rộng ra: mảng ba chiều,...,mảng n chiều.

    Mỗi phần tử trong một danh sách thường là một bản ghi (gồm một hoặc nhiều trường). Ví dụ: danh mục điện thoại là một danh sách tuyến tính, mỗi phần tử của nó ứng với một đơn vị thuê bao, nó gồm ba trường:

    -Tên đơn vị hoặc tên chủ hộ thuê bao.

    -Địa chỉ

    -Số điện thoại

    Mỗi một phần tử được xác định bằng địa chỉ của chúng trong bộ nhớ trong. Thường thì có hai cách để xác định được địa chỉ của một phần tử trong danh sách. Cách thứ nhất là dựa vào những đặc tả của dữ liệu cần tìm. Địa chỉ thuộc loại này được gọi là địa chỉ tính được (computed ađress). Cách này thường hay được sử dụng trong các ngôn ngữ lập trình để tính địa chỉ các phần tử của vector, của ma trận để tính địa chỉ lệnh thực hiện tiếp theo trong quá trình thực hiện chương trình đích. Cách thứ hai là lưu trữ các địa chỉ cần thiết đó ở một chỗ nào đó trong bộ nhớ, khi cần xác định sẽ lấy ở đó ra. Loại địa chỉ này được gọi là con trỏ (pointer) hoặc móc nối (link).

    Đối với một trang sách, ngoài phép bổ sung và loại bỏ còn có một số phép sau đây cũng hay được tác động:

    - Ghép hai hoặc nhiều danh sách

    - Tách một danh sách thành nhiều danh sách

    - Sao chép một danh sách

    - Sắp xếp các phần tử trong danh sách theo một thứ tự nhất định

    - Tìm kiếm trong danh sách,...

    Stack hay danh sách kiểu ngăn xếp

    Stack là một kiểu danh sách tuyến tính đặc biệt mà phép bổ sung và phép loại bỏ luôn luôn thực hiện ở một đầu gọi là đỉnh (top). Bạn có thể hình dung nó như cơ cấu của một hộp chứa đạn súng. Lắp đạn vào hay lấy đạn ra cũng chỉ ở một đầu hộp. Viên đạn mới nạp vào sẽ nằm ở đỉnh còn viên nạp vào đầu tiên thì nằm ở đáy (bottom). Viên nạp vào sau cùng lại chính là viên lên nòng súng trước tiên.

    Nguyên tắc vào sau ra trước như vậy của Stack được gọi là danh sách kiểu LIFO (Last-In-First-Out). Stack có thể rỗng hoặc bao gồm một số phần tử.

    Lưu trữ Stack bằng mảng

    Có thể lưu trữ stack bởi một vectơ lưu trữ S gồm n phần tử kế tiếp. Nếu T là địa chỉ của phần tử ở đỉnh của Stack thì T sẽ có giá trị biến đổi khi có giá trị biến đổi khi Stack hoạt động (vì vậy người ta gọi T là một biến trỏ). Khi Stack rỗng, ta quy ước T = 0 và mỗi lần bổ sung một phần tử mới vào Stack thì T sẽ tăng lên 1. Khi một phần tử bị loại ra khỏi Stack, T sẽ giảm đi 1.

    Sau đây là thuật giải bổ sung và loại bỏ đối với Stack:

    Procedure PUSH (S, T, X)

    {

    giải thuật này thực hiện bổ sung phần tử X vào Stack lưu trữ bởi vectơ S có n phần tử. T là con trỏ trỏ tới đỉnh Stack }

    1. { Kiểm tra xem Stack có tràn không tức là khi S không còn chỗ để tiếp tục lữu trữ các phần tử của Stack nữa }

    If T >= n then

    Begin

    writeln (Stack tràn);

    return

    end ;

    2. {Chuyển con trỏ}

    T:= T+1;

    3. {Bổ sung phần tử mới X}

    S[T]:= X;

    4. return;

    Function POP(S, T)

    {hàm này thực hiện việc loại bỏ phần tử ở đỉnh Stack S đang trỏ tới T, phần tử loại bỏ sẽ được thu nhận và được đưa ra }

    1. {kiểm tra xem Stack có cạn không khi Stack đã rỗng (empty) tức là không còn phần tử nào để loại bỏ nữa}

    if T<=0 then

    begin

    writeln("Stack cạn !");

    return

    end;

    2. {chuyển con trỏ }

    T:=T-1;

    3. {đưa phần tử bị loại ra}

    POP:= S[T+1];

    4. return;

    Các bạn có thể khảo sát các ứng dụng của Stack thông qua các bài toán: Đổi cơ số từ số nguyên thập phân sang nhị phân,...

    Theo nguồn THNT



     Bản để in  Lưu dạng file  Gửi tin qua email


    Những bài viết khác:



    Lên đầu trang

     
    CÔNG TY CÔNG NGHỆ TIN HỌC NHÀ TRƯỜNG
     
    Phòng 804 - Nhà 17T1 - Khu Trung Hoà Nhân Chính - Quận Cầu Giấy - Hà Nội
    Phone: 024.62511017 - 024.62511081
    Email: kinhdoanh@schoolnet.vn


    Bản quyền thông tin trên trang điện tử này thuộc về công ty School@net
    Ghi rõ nguồn www.vnschool.net khi bạn phát hành lại thông tin từ website này
    Site xây dựng trên cơ sở hệ thống NukeViet - phát triển từ PHP-Nuke, lưu hành theo giấy phép của GNU/GPL.