Cài đặt mạng và danh sách

4 740 0
Cài đặt mạng và danh sách

Đang tải... (xem toàn văn)

Thông tin tài liệu

Cài đặt mạng và danh sách

Mảng danh sáchQuang HưngMảng là một tập có thứ tự gồm mộtsố 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ử đượcthự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ầntử 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ảngcòn được đặc trưng bởi chỉ số (index) thể hiện thứ tự của phần tử đó trongmảng.Vector là mảng một chiều, mỗiphầ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 j. Tương tự, người ta mở rộng ra:mảng ba chiều, .,mảng n chiều.Danh sách có hơi khác với mảng ởchỗ: nó là một tập hợp có thứ tự nhưng bao gồm một số biến động các phần tử.Phép bổ sung phép loại bỏ một phần tử là phép thường xuyên tác động lên danhsách. Tập hợp các người đến khám bệnh cho ta hình ảnh một danh sách. Họ sẽ đượckhám theo một thứ tự. Số người có lúc tăng lên (do có người mới đến), có lúcgiảm đi (do bỏ về vì không chờ được). Một danh sách mà quan hệ lân cận giữa cácphần tử được hiển thị ra thì được gọi là danh sách tuyến tính. Như vậy, danhsách tuyến tính là một danh sách hoặc rỗng (không có phần tử nào) hoặc có dạng(a1, a2, ., an) với ai (1≤ i ≤ n) làcác dữ liệu nguyên tử. Trong danh sách tuyến tính luôn tồn tại một phần tử đầu a1, phần tử cuối an. Đối với mỗi phần tử ai bất kỳ với 1≤ i ≤ n-1 thì có một phần tử ai + 1 gọi là phần tử sau của ai với 2 ≤ i ≤ n thì có một phần tửai-1 gọi là phần tử trước ai. ai được gọi là phần tử thư i của danh sách tuyến tính n, n được gọi là độ dài hoặc kích thước của danh sách nó có giá trị thay đổi.Mỗi phần tử trong một danh sáchthườ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ạilà 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 địnhbằ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ầnxác định sẽ lấy ở đó ra. Loại địa chỉ này được gọi là con trỏ (pointer) hoặcmóc nối (link). Đối với một trang sách, ngoàiphép bổ sung loại bỏ còn có một số phép sau đây cũng hay được tác động:- Ghép hai hoặcnhiều danh sách - Tách một danhsách thành nhiều danh sách- Sao chép mộtdanh sách - Sắp xếp cácphần tử trong danh sách theo một thứ tự nhất định- Tìm kiếmtrong danh sách, .Stack hay danh sách kiểungăn xếpStack là một kiểu danh sách tuyếntính đặc biệt mà phép bổ sung phép loại bỏ luôn luôn thực hiện ở một đầu gọilà đỉ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ùnglạ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ảngCó thể lưu trữ stack bởi mộtvectơ 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ủaStack 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ổ sungphầ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 đỉnhStack }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 >= nthen Beginwriteln (Stacktràn);returnend ;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 đượ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 thenbeginwriteln("Stackcạn !");returnend;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 ứngdụng của Stack thông qua các bài toán: Đổi cơ số từ số nguyên thập phân sangnhị phân, . . nhiều danh sách- Sao chép mộtdanh sách - Sắp xếp cácphần tử trong danh sách theo một thứ tự nhất định- Tìm kiếmtrong danh sách, ...Stack hay danh sách kiểungăn. được). Một danh sách mà quan hệ lân cận giữa cácphần tử được hiển thị ra thì được gọi là danh sách tuyến tính. Như vậy, danhsách tuyến tính là một danh sách

Ngày đăng: 07/09/2012, 11:12

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan