Có hiện tượng co giãn, dịch chuyển các phần tử khi thực hiện thao tác bổ sung phần tử, hoặc loại bỏ phần tử, do đó là số lượng phép tính trong giả

Một phần của tài liệu Bài những đề thi và lời giải chi tiết cấu trúc dữ liệu (Trang 97 - 103)

- ngược với thứ tự nhập vào + Hủy một phần tử bất kỳ trong đa thức

4) có hiện tượng co giãn, dịch chuyển các phần tử khi thực hiện thao tác bổ sung phần tử, hoặc loại bỏ phần tử, do đó là số lượng phép tính trong giả

sung phần tử, hoặc loại bỏ phần tử, do đó là số lượng phép tính trong giải thuật tăng= > độ phức tạp tính toán cũnh tăng theo

ĐẠI HỌC THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN

………

Câu 1(3 điểm)

Cho cây nhị phân như hình vẽ:

Mã đề thi: 27

ĐỀ THI HẾT HỌC PHẦN Môn thi: Cấu trúc dữ liệu và giải thuật; Hệ: Chính quy Môn thi: Cấu trúc dữ liệu và giải thuật; Hệ: Chính quy

15 10 21 12 0 31 9

Anh(chị) hãy:

1) Nêu khái niệm cây nhị phân tìm kiếm, cây đã cho có phải là cây nhị phân tìm kiếm không? Giải thích tại sao?

2) Viết dạng cài đặt cây cân bằng bởi con trỏ.

3) Thêm một đỉnh có khoá x = 30 vào cây (minh họa vị trí được thêm trên cây, giải thuật thêm tương ứng)

Câu 2( 2 điểm)

Cho một danh sách kế tiếp biểu diễn cây thư mục (directory tree), mỗi phần tử gồm 2 thành phần: tên thư mục, vị trí của thư mục cha trên danh sách này (số nguyên chỉ thứ tự thư mục trong danh sách). Nếu là thư mục gốc thì giá trị thứ hai là 0. In cây thư mục này ra màn hình.

Câu 2 ( 3 điểm)

Cho một đa thức bất kz. Anh (chị) hãy:

1) Biểu diễn đa thức trên dưới dạng một danh sách liên kết đơn với mỗi phần tử là một cấu trúc chứa hệ số và số mũ của thành phần đó.

2) Viết các chương trình con tương ứng với các yêu cầu sau:

a) Tối giản một đa thức (gộp các thành phần có cùng số mũ lại và sắp xếp đa thức theo chiều số mũ giảm dần)

c) Hiển thị đa thức lên màn hình

………Hết……….

Thí sinh không được sử dụng tài liệu, không ghi vào đề thi

CB coi thi không giải thích gì thêm và nộp lại đề thi cho phòng chức năng theo quy chế của bộ Câu 1

1) (1đ)

Điều kiện 1: Khóa tại các đỉnh của cây con trái nhỏ hơn khóa tại gốc Điều kiện 2: Khóa tại gốc > khóa tại các đỉnh của cây con bên phải Điều kiện 3: Cây con bên trái và cây con bên phải đều là cây NPTK

* Cây nhị phân đã cho là cây NPTK vì nó thỏa mãn các điều kiện được nêu trong khái niệm cây NPTK 2) Dạng cài đặt cây bằng con trỏ(0.5đ)

Type BinaSearchTree = ^ Nut; Nut = Record

Key: integer;

Left, Right: BinaSearchTree;; End;

Var T : BinaSearchTree;

3) Thêm đỉnh có khóa x = 30 vào cây: (1.5đ)

* Hình ảnh cây sau khi thêm x:

* Viết thủ tục thêm một đỉnh x vào cây R: Insert(x, R):

- Sử dụng con trỏ phụ M chứa địa chỉ của nút cần thêm - Xin MT cấp phát ô nhớ cho M

- Đổ dữ liệu cần thêm vào ô nhớ có địa chỉ M 15 10 21 12 0 31 9 30

- Gắn M vào cây:

Nếu Cây rỗng (R = nil): R := M

Nếu cây không rỗng: Xác định vị trí thêm M: If (x<R^.info) then Insert (x, R^.Left)

Else if (x>R^.info) then Insert(x, R^.right); else thông báo x đã có trên cây

Câu 2:( 2đ)

Duyệt danh sách để hiển thị các nút trong danh sách theo hình dạng cây thư mục

Câu 3: Tương tự câu 2 đề 26

ĐẠI HỌC THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN

………

Câu 1( 1 điểm)

Nêu khái niệm ngăn xếp? ứng dụng ngăn xếp?

Câu 2 ( 5 điểm)

Cho một danh sách kế tiếp biểu diễn cây thư mục (directory tree), mỗi phần tử gồm 2 thành phần: tên thư mục, vị trí của thư mục cha trên danh sách này (số nguyên chỉ thứ tự thư mục trong danh sách). Nếu là thư mục gốc thì giá trị thứ hai là 0. Anh (chị) hãy:

1) Viết dạng cài đặt của cây thư mục bởi danh sách kế tiếp như trên. Cho ví dụ và minh họa bằng hình ảnh

Mã đề thi: 28

ĐỀ THI HẾT HỌC PHẦN Môn thi: Cấu trúc dữ liệu và giải thuật; Hệ: Chính quy Môn thi: Cấu trúc dữ liệu và giải thuật; Hệ: Chính quy

2) Viết giải thuật đếm xem trên cây có tất cả bao nhiêu thư mục

3) Viết giải thuật xoá thư mục “Bai tap” và tất cả các thư mục con trong nó 4) Viết chương trình con hiển thị cây thư mục này ra màn hình.

Câu 3 (2 điểm)

Hãy dùng stack ở dạng liên kết đơn (cài đặt ngăn xếp bởi con trỏ) để đảo ngược vị trí của tất cả các phần tử ở vị trí lẻ trong một DSLK đơn, có nút đầu danh sách được trỏ bởi con trỏ L; các phần tử trong danh sách là các số nguyên

………Hết……….

Thí sinh không được sử dụng tài liệu, không ghi vào đề thi

CB coi thi không giải thích gì thêm và nộp lại đề thi cho phòng chức năng theo quy chế của bộ Câu 1

- Ngăn xếp là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp và phép loại bỏ một phần tử ra khỏi ngăn xếp đều được thực hiện ở một đầu, đầu đó gọi là đỉnh của ngăn xếp

(0.5 đ)

- Cấu trúc ngăn xếp thường được áp dụng cho những bài toán có trình tự truy xuất ngược với trình tự lưu trữ. Ví dụ: (0.5 đ)

+ Bài toán chuyển đổi cơ số, tìm ước số chung của hai số nguyên, bài toán tính giá trị biểu thức, ....

+ Thường áp dụng trong một số bài toán tìm đường đi trong l{ thuyết đồ thị (lưu vết đường đi)

+ làm môi trường lưu trữ các biến toàn cục và cục bộ của các thủ tục trong chương trình dịch của ngôn ngữ lập trình.

...

1) Dạng cài đặt, cho ví dụ và minh họa bằng hình ảnh(1.5 đ)

+ Dạng cài đặt:

Const n = ….;

Type Nut = Record

TenThuMuc: String;

Vitri: 0..n;

End;

List = Array[1..n] of Nut; Var T: List;

+ Ví dụ: Cho cây thư mục như sau:

Hình ảnh cây thư mục trong bộ nhớ MT với các cài đặt trên như sau:

Số thứ tự TenThuMuc Vitri 1 \users \BT\ 0 2 Tin\ 1 3 Toan\ 1 4 BT1 2 5 Bt2 2 6 Bt3 2 7 BT1 3 8 BT2 3 \users \BT\ 1 Tin\ 2 Toan\ 3 BT1 4 Bt2 5 Bt3 6 BT1 7 BT2 8

9 Nil 0

… …

n nil 0

2) Đếm số lượng các thư mục trên cây(1 đ)

Fuction Dem(T: List): integer; Var i: 0..n; Begin i := 0; While (T[i].TenThuMuc<>nil) do i:=i+1; dem:=i; End;

Một phần của tài liệu Bài những đề thi và lời giải chi tiết cấu trúc dữ liệu (Trang 97 - 103)

Tải bản đầy đủ (PDF)

(109 trang)