Viết dạng cài đặt của ma trận thưa đã cho bằng danh sách liên kết

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 104 - 109)

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

b)Viết dạng cài đặt của ma trận thưa đã cho bằng danh sách liên kết

b) Viết chương trình cho phép nhập, xuất ma trận

Câu 2 (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í chẵn 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……….

Mã đề thi: 29

ĐỀ 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

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: Tương tự câu 1 đề 12

Câu 2

a) (1 đ) Ma trận sẽ thay bằng một danh sách liên kết đơn, danh sách này sẽ lưu các phần tử có nghĩa của ma trận, mỗi phần tử trong ma trận được tổ chức dưới dạng một nút. Cấu trúc 1 nút trong danh sách là một bản ghi gồm 4 trường có dạng:

chỉ số hàng Chỉ số cột Giá trị Next b) Dạng cài đặt của ma trận(1 đ)

Type Nut = Record

ChiSoHang, ChiSoCot: integer; Giatri: integer;

Next: ^Nut; End;

Matran = ^nut;

c) Nhập (1 đ), xuất ma trận (1 đ): Tương tự như nhập, xuất danh sách liên kết đơn thông thường

Câu 3:

Cách làm tương tự câu 3 đề 28, tuy nhiên xét các phần tử ở vị trí chẵn thay vì xét các phần tử ỏ vị trí lẻ

ĐẠI HỌC THÁI NGUYÊN

KHOA CÔNG NGHỆ THÔNG TIN ĐỀ THI HẾT HỌC PHẦN

………

Câu 1( 2 điểm)

Nêu khái niệm cây nhị phân (binary tree)? Các cách cài đặt ? ưu nhược điểm của từng dạng cài đặt ?

Câu 2 ( 5 điểm)

Cho 3 danh sách móc nối đơn chứa các số nguyên, lần lượt có nút đầu tiên trong danh sách được trỏ bởi L1, L2, L3. Anh (chị) hãy:

a) Viết dạng cài đặt của danh sách

b) Viết các giải thuật tương ứng với các yêu cầu sau:

1. Ghép danh sách L2 vào danh sách L1 và cho con trỏ L trỏ tới nút đầu danh sách tổng hợp

2. Ghép danh sách L3 vào trước danh sách L2 và L1 vào sau L2 và cho con trỏ L trỏ tới danh sách tổng hợp

3. Loại bỏ tất cả các số 0 trong danh sách L ra khỏi danh sách 4. Hiển thị danh sách L lên màn hình

( Giả sử cả 3 danh sách đều khác rỗng ).

Câu 2 (1 điểm)

Hãy dùng stack ở dạng liên kết(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: Tương tự câu 1 đề 29

Câu 2:

a) Dạng cài đặt của danh sách: (1 đ) Type Nut = record

infor: integer;

` Next: ^ nut;

end;

List = ^Nut;

Var L, L1, L2, L3: List;

b) Ghép L2 vào sau L1, L trỏ tới danh sách kết quả: (1 đ)

Procedure Ghep1(L1, L2, var L): if (L2 = nil) then L:=L

else if(L1 = nil) then L:= L2 else Begin

M:=L1;

While(M^.next<>nil)do M:=M^.next; M^.next := L2;

End;

c) Ghép L3 vào trước L2, L1 vào sau L2, L trỏ tới danh sách kết quả(1 đ)

Procedure Ghep2(L1, L2, L3, var L): Begin

Ghep1(L2, L1, M); Ghep1(L3, M, L ); End;

d) Loại bỏ tất cả các số 0 ra khỏi danh sách L(1 đ)

Kiểm tra xem danh sách L có rỗng hay không? Nếu rỗng trở về chương trình chính, nếu không rỗng thực hiện loại bỏ như sau:

- Sử dụng con trỏ phụ q duyệt tử đầu đến cuối danh sách, nếu q^.info =0 thì gọi thủ tục loại bỏ phần tử được trỏ bởi q trong danh sách

- Viết thủ tục loại bỏ phần tử được trỏ bởi con trỏ q trong danh sách L:

a) Giả sử đã biết vị trí con trỏ q

b) Sử dụng con trỏ phụ p di chuyển đến vị trí trước q: P:= L;

While p^.next<> q do p:= p^.next;

c) Loại bỏ phần tử ở vị trí q:

p^.next := q^.next; dispose(q);

q:= p^.next;// lưu vị trí tiếp theo vị trí loại bỏ để còn loại bỏ tiếp

e) Hiển thị danh sách L(1 đ)

procedure Hienthi(l:list); var i: integer;p: list;

begin

writeln(‘Danh sách cac so nguyen la:’); p: =L; while p<>nil do begin write(p^.info:6); p:=p^.next; end; end; Câu 3 Tương tự câu 3 đề 28

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 104 - 109)