Tải bản đầy đủ (.pdf) (109 trang)

Bài những đề thi và lời giải chi tiết cấu trúc dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 109 trang )

 i gii chi tit c liu
I H
  TIN
………………



Câu 1( 3 điểm)
1) Th  liu tinh sn ) c lc cao?
2)  liu tinh c l ) bit?
3) Ti sao ch s dng c liu tinh   u v vic t
ch d liu ca mng dng thc t ?. Mt s ng dng
phi cn s d lii l ? 
mng dng  th hi
Câu 2( 3 điểm )
Gi s ta cn qup ch t dt ca c
xbng mng. Vi cp vt th tn t 
v  k k t p n t i th t 
p t 
Câu 3( 2 điểm )
Anh ( Ch mt l dng cp rp cho vic gii
quyu c th hi


i
Mã đề thi: 02
ĐỀ 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
Câu 1
1) C liu tinh c ng l lic 
s lp i l vic s di (1 đ)


3) M liu ting, bn ghi, tp tin, (1 đ)
 liu ti l c nhu cu
 d liu ln ca mi  bn cht cng d li
trong thc t i ta c lii l . (0.5 đ)
 u qu 
  dng c liu mng (c  h 
c hi
  tt c h u s ng h hc t l (0.5 đ)

Câu 2
+ Dp s dng mng: (1 đ)
const n = <số phần tử tối đa trong ngăn xếp>;
type Stack = Record
Top: 0 n ;
Element : array [1 n] of integer;
End;
n t p S  v   p: (2 đ)

Ki    u r   p, N p
ng: Kim tra xem s k nhu l
xp, ny (top-k+1) phn t k t p ra mp phn t phn t
 ( top  k+1) phn t t p ph m b
i trt t n t u sau khi loi b phn t  v  tg
ng t vit)
Câu 3
(1 đ)
- Cng cho nh truy xuc v
:
c s chung ca hai s 
biu thc,

ng ng trong mt s  th t

 c b c t
ch c l
(1 đ)
- Ph  th hi






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ộ


I H
ĐỀ 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
  TIN
………………


Câu 1( 2 điểm)
 quy phn thu tru
 )  minh ha ?
Câu 2( 3 điểm ) 3
Gi s cn qu  theo mt th
t t dng cha ca mnh s dng mng. V
vii thuc  p t 

Câu 3( 3 điểm ) 3
Cho m ca t






Anh(ch
1) Vit dn k ca mnh, s dng con tr
2)  c c  m t 
3)  c?

Mã đề thi: 03
\users \BT\
1 KB
Tin\
2 KB
Toan\
1KB
BT1
8 KB
Bt2
10 kB
Bt3
6 KB
BT1
9KB
BT2
10 kB

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
 quy phn thu tr hin
 ch gii s ng d lin, ta gii s ng d li
 a, c th g n gng hy ra suy bing
hc x ng ca chin thu tr (1 đ)
: (1 đ)
Chy chm mt gii thu  
 -1)!, (n-n+1) = 1! = 1.(v a)
Câu 2
+ Dng cha ca mnh: (1 đ)
Const n = <số các đỉnh tối đa trên cây>;
Type Node = Record
Info: Integer;
parent: 0 n;
End;
Tree = Array [1 n ] of Node;
Var T: Tree;
nh th k: (1 đ)
parent (T, k) := T[k].parent;
 cnh th  (1 đ)
Duy nh gc(i:=1), kim tra xem cha c
nu = k, kt lu, dng gii thut, nu cha cnh ting
p lng (found = true),
hoc duyt h  kt luy
Câu 3
+ Dn k ca mnh: (1 đ)

Type Tree = ^Nut;
Nut = record
Tenthumuc: string;
Kichco:integer;
EldestChild, Nextsibling:Tree;
End;
Var T: Tree;
+ Duy th t  nh tc cc (1 đ)
  (1 đ)
- Bi c}
- Procedure postOder(T : tree, var tong:integer);
Var C: tree;
Begin
if (T=nil) then exit;
else
begin
C:=t^.eldestChild;
postOrder(C);
C:=C^.nextsibling;
While (C<>nil) do
Begin
postOrder(C);
C:= C^.nextsibling;
End;
Tong:=tong+T^.kichco;
end;
End;


I H

  TIN
………………


Câu 1( 2 điểm)
m ca gii thu  quy (vit b pascal) i
t qu  Gi ti sao?
Function Tinh(n,x: byte): Longint;
Begin
If n = 1 then Tinh := x
Else Tinh := n* Tinh(n-1,x);
End;
Câu 2( 4 điểm )
Gi s m cn qu, mi  cn qu: H 
, gia ch, chc danh . Anh(ch) hla chn mt c li
qu  
Mã đề thi: 04
ĐỀ 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
- D li nh trong
- Thun l
- Tit ki nh nht.
Vi c lia chn. Anh(ch
1) Vit dt ca c li
2) Vit gii thut m s  
3) Hin th  
4) Loi b nhn tui v t rng nam: 60 tui; n: 55 tu 
Câu 3( 2 điểm )
?  bi mng, b
m ca tng dng c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
m ca gii thu quy: ( 1 đ)
- Trong gii thu quy bao gi i g
- Sau mi li gi  c cc thu nh c
- ng hp suy bic gii quyt theo m
gii thu
+ Kt qu c quy  ( 1 đ)
n = 1 cho kt qu 
n = 2 cho kt qu 2*x
n = 3 cho kt qu 

n = n cho kt qu 
Câu 2
1) C liu la ch ( 1 đ)
Dt
Type Canbo = record
Hoten: String;
Năm sinh : integer;
Giớitinh: boolean;
Diachi, trinhdo, chucdang: string;
` Next: ^ Canbo;
end;
List = ^Canbo;

Var L: List;
2) m s  trong  ( 1 đ)
- S dng bi ng  trong u dem:= 0 ,
- S dng con tr ph M duyt t n cun  

- In bi
3) Hin th  : ( 1 đ)
S dng con tr ph M duyt t n cun  hin
th  :
4) Loi b  n tui v : ( 1 đ)

 n tui v , gi s v c tr bi p
b2) Loi b   v 
b3) Lp ln khi ht v y
-   thu kin ta duyt t p:=L 
dng
-  loi b hc sinh  v p:
a) Di chuyn con tr ph n v c p:
 M:=L;
 While M^.next <>p do M:=M^.next;
b) Bt, gt, gi
 M^.next:=p^.next;
 Dispose(p);

Câu 3
t c  mt tp hp hu hn bin t thuc
t lng  (0.5 đ)
 i mni con tr ti
ng:
t bi mng: ( 0.5 đ)

Const n=maxlist;
Type list = record
Eles: array[1 n]of integer;
Count: 0 n;
end;
Var L: list;
t bi con tr: (0.5 đ)

type list=^nut;
nut = record
infor: item;
next:list;
end;
var l,f:pqueue;
  qu 
Ưu nhược điểm của từng các cài đặt danh sách: (0.5 đ)
a) i mng
Ưu điểm
i. truy cn t c tii vi mi phn
t
ii. c hii d 

Nhược điểm
iii. a b nh: Hing gi ch  i
iv. B hn ch b tip trong b nh
v.  li gii h nh trong thanh ghi d li
thanh ghi stack
vi. ch chuyn t khi thc hi sung
phn t, hoc loi b phn t         i thut
 phc t

b) t bi con tr
Ưu điểm:
-  nh (Hing gi ch  
t bi mng)
- C liu danh st bi con tr ng,
 nh c c gii hn b
i vi c li
- n t m  nhng v n dc
nhn m k tit bi
mng
Nhược điểm:
- T truy cn t i
vi mi phn t (truy cp tun t mt chiu)
- T phn t c li phn t c
- mi phn t  a ch ca
 


I H
  TIN
………………


Câu 1( 2 điểm)
m ca gii thu quy. Gi s ng s 
 c

Q(a,b) =

Câu 2( 3 điểm )

Gi s cn qu t    t d    ng
mng, vi ct, vic hi
sau:
ng c 
Mã đề thi: 05
{
0 nu a<b
Q(a-b, b)+1 nu a>=b
ĐỀ 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
2) Loi b ra kh 
3) Hin th 
Câu 3( 3 điểm )
  u din biu thc sau:
3*4+(12+b)/6
T u thc va dng, anh (ch
1) Vit dng con tr,
2) Vit th tc duy t c, sau
3) Vit biu thi dng tin t, hu t? nhi kt qu duy
theo th t c, sau?


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
m ca gii thu quy: (1 đ)
- Trong gii thu quy bao gi i g
- Sau mi li g c cc thu nh c
- Bao gi ng hp suy bin ng hc bi 

dng ca gii thut)  c gii quyt theo m   i
thu
 (1 đ)
Câu 2
+ Dạng cài đặt danh sách bởi mảng: (0.5 đ)
Const n=maxlist;
Type list = record
Ele: array[1 n]of integer;
Count: 0 n;
end;
Var L: list;
 tng vu cu:
1) ng c  (0.5 đ)
function Trungbinh(l:list): integer;
var i, tam: integer;
Begin
for i:=1 to n do tam:= tam+L.Ele[i];
Trungbinh:=tam;
End;
2) Loi b s  (1 đ)
procedure Loaibo(var L: list);
var k,i:integer; found: boolean;
Begin
found:= false;
k:=1;
while (not found)and(k<=L.count) do
if(L.Ele[k]=3) then
begin
for i:=k to L.count-1 do L.Ele[i]:=L.Ele[i+1];
L.count:= L.count -1;

end;
if (not found) then writeln(‘So 3 khong co trong danh sách để loại bỏ’);
End;
3) Hin th  (1 đ)
procedure Hienthi(l:list);
var i: integer;
begin
writeln(‘Danh sách cac so nguyen la:’);
for i:=1 to l.count do write(l.Ele[i]:6);
end;
Câu 3
Dựng cây: (0.5 đ)




1) Dt: (0.5 đ)
Type Tree=^nut;
Nut= record
Info: string;
Left, right: Tree;
End;
+
*
3
4
/
+
6
12

b
Var T: Tree;
 tc duy t c, sau:
Gi s c T,  tc duy
 Th tc duy t c: (0.5 đ)
Procedure Preorder(T: Tree);
Begin
Write(T^.info);
Preorder(T^.left);
Preorder(T^.right);
End;
 Th tc duy t sau: (0.5 đ)
Procedure postorder(T: Tree);
Begin
Postorder(T^.left);
Postorder(T^.right);
Write(T^.info);
End;
2) Biu thc tin t , hu t 
c) + Biu thc tin t: (0.5 đ)
+*34/+12b6 => Biu thi kt qu duy t c
+ Biu thc hu t: (0.5 đ)
34*+12b+6/ => Biu thi kt qu duy t sau

I H
  TIN
ĐỀ 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
………………




Câu 1( 2điểm)
t i bi mng, con tr? m ca tng
dt?
Câu 2( 5 điểm )
Gi s ta cn quc sinh, mi hc sinh gm nh 
Lm tng kt, xp loi hc lc . Anh(ch) h:
1) Vit d
2) V ng vu sau:
a) T p t b
b) c l
c) p loi hc l
+ Nm tng kt< 5: Xp loi yu
+ Nm tng kp lo
+ Nm tng kt <8 : Xp lo
+ Nm tng kp loi gii
d) Sp sng ln
ng lp,
Câu 3( 1 điểm )
Anh ( Ch mt lng d dng c lic
gii quyc thun li h th hiu



Mã đề thi: 06

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
-  sung mt phn t c
thc hin  mu c gi sau - Real), p ly mt phn t ra kh
c thc hin  u kia (lc - Front) (0.5 đ)
- hi:
Cài đặt bởi mảng: (0.5 đ)
const n=maxqueue;
type queue= record
ele:array[1 n]of item;
L,F,count:0 n;
end;
Ưu điểm:
- truy cp nhanh, trc tin mi phn t
-  thc hin
Nhược điểm:
-  nh, hic g ch  y
n
- B gii hn bng k tip trong b nh
- C  c c
hoc thanh ghi stack
Cài đặt bởi con trỏ: (0.5 đ)
type pqueue=^nut;
nut= record
infor: item;
next:pqueue;
end;
var l,f:pqueue;
Ưu điểm:
-  hin tng gi ch  y  nh
- C c

c c
-  hn ch bng k  nhn t trong
 nm  nhng v  nht thit phi
ng v  tip
Nhược điểm:
- Mi t cha con tr
Ưu nhược điểm của từng dạng cài đặt: (0.5 đ)

:Câu 2
+ Dạng cài đặt: (0.5 đ)
Type Hocsinh = record
Hoten: String;
Lớp : String;
DiemTK: float;
xeploai: string;
` Lptr, Rptr: ^ Hocsinh;
end;
DoubleList = ^Hocsinh;
Var L, R: DoubleList;
+ Tm n hc sinh: (1 đ)
procedure taoDS(var L,R:doublelist);
var M: doublelist;
begin
L:=R:=nil; {khoi tao danh sach rong}
write(’nhap so hoc sinh trong danh sách n= ’); readln(n);
for i:=1 to n do
begin
writeln(‘Nhap hoc sinh thu i : ’);
write(‘Nhạp ho ten: ’); readln(M^.Hoten);
write(‘Nhạp Lớp: ’); readln(M^.lop);

write(‘Nhạp Điem tong kết: ’); readln(M^.DiemTK);
insert(M,,L, R);
end;
end;
 tc tr b
procedure Insert(M: doublelist, Var L, R: DoubleList);
Var
Begin
if (L=nil)and(R=nil) then
begin
M^.Lptr:=nil; M^.Rptr:=nil;
L:=M; R:=M;
end
else
begin
R^.Rptr:=M; M^.Lptr:=R; M^.Rptr:=nil; R:=M;
end;
End;
c sinh hc l (1 đ)
- S dng bim s i hc l
- S dng con tr ph M duyt t  n cu        

- In bi
+ Xp loi hc lc: (1 đ)
- S dng con tr p duyt t hn hc sinh cu
n hp loi hc lc cho h
cho c  dnh if honh case of

+ Sp xng ln (1 đ)
 s dng mp x sp xp d li

kt,   dng gii thut sp xp chn trc ti  d  p
cn:gi t c ni dung c
Giải thuật:
Procedure ListSelection_Sort(var L: List)
Var p, q, min: List;
Begin
p:=L;
While (p<>nil) do
Begin
q:=p^.next;
min:=p;
While (q<>nil) do
Begin
If (q^.infor<min^.infor) then min:=q;
q:=q^.next;
End;
Hoanvi(min^.infor,p^.infor);
P:=P^.next;
End;
End;

+ Hin th  ng lp: S dng con tr M duyt t n cui danh
 c sp theo lp  , duyn th tin v 
(0.5 đ)
M: = L; p:=M;
writeln(‘Các sinh vien lop M^.lop la:’);
While (M<> nil) do
Begin
Write(M^. hoten);
Write(M^. Lop);

Write(M^. sbd);
P:=M;
M := M^.next;
If (M^.lop<>p^.lop) then writeln(‘Các sinh vien lop M^.lop la:’);
End;
Câu 3
- Bu thc tin t th, kh  quy,
(0.5 đ)
- (0.5 đ)

I H
  TIN
………………


Câu 1( 1 điểm)
 quy, gii thu  v mt gii thu quy?
Câu 2( 3 điểm )
i s v ci s  nh


Acker(m,n) =
a) nh xem  n gng vng hp suy bi 
b) i sao? .
c) Vit gii thu  Acker(n,m), v c nhp t 
Câu 3( 4 điểm )
Hc sinh khi 12 d thi ht hc k i ng. Mn qu
  p
1.  dng c li  
d thi. Vit dng ca c

Mã đề thi: 07
ĐỀ 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
{
n+1 nu m=0
Acker(m-1,1) n
Acker(m-1, Acker(m, n-1)) n
2. c him v sau:
- Nhv  u kin dp SBD = rng)
- Hin th  thi theo lp
- Loi b                 
(toan+ly+hoa+ngoaingu)/4)
-  

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
 quy: Mc g quy nt b phn hoc
i dng c (0.5 đ)
+ Gii thu i thua li gi quy. Li gi i gii c
c thc hin bi li gii c c (0.5 đ)
Câu 2
a) n gc ng vng hp suy bin  
(1 đ)
b) 
Acker (1,3) = Acker (0, Acker(1,2));
Acker (1,2) = Acker (0, Acker(1,1));
Acker (1,1) = Acker (0, Acker(1,0));
Acker (1,0) = Acker (0,1)=2;

Vy => Acker (1,3) = 5 (1 đ)
c) Vit gii thu   (1 đ)
Function Acker(m,n: integer):integer;
Begin
If(m=0)then Acker:= n+1
Else
If(n=0)then Acker:=Acker(m-1,1)
Else Acker:= Acker(m-1, Acker(m,n-1));
End;
Câu 3
1) D (0.5 đ)
Type Thisinh = Record
SDB, Hoten, Lop: String;
Toan, ly, hoa, ngoaingu: real;
End;
List = ^ node;
Node = Record
Info: Sinhvien;
Next: list;
End;
Var L: list

a) Nh (1 đ)
procedure taoDS(var l:list);
var M: hocsinh, SBD: string, i: integer;;
begin
write(’nhap so bao danh của hoc sinh dau tiên, SBD = ’); readln(SBD);
while SDB<>’’ do

×