lí thuyết.
1:cài dặt bằng mảng.
2:cài đặt bằng con trỏ.
3:cây.
4:danh sach lien ket kép.
6:hàng đợi.
Bắt đầu ôn:
Câu 1( 3 điểm)
1) Th liu tinh sn ) c lc cao?
2) liu tinh c l ) bit?
3) Ti sao ch s dng c liu tinh u v vic t
ch d liu ca mng dng thc t ?. Mt s ng dng
phi cn s du lii l ?
mng d th hi
Câu 1
1) C liu tinh c ng l lic
sn trong lp i l vic s di (1 đ)
3) M liu ting, bn ghi, tp tin, (1 đ)
liu ti ly c nhu cu
d liu ln ca mi bn cht cng d li
trong thc t i ta c lii l . (0.5 đ)
u qu
dng c liu mng (c h
c hi
tt c h u s ng h c t l (0.5 đ)
Câu 1( 2 điểm)
quy phn thu tru
) minh ha ?
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 mng
Ưu điểm
i. truy cn t c tip i vi mi phn
t
ii. c hii d
Nhược điểm
iii. a b nh: Hing gi ch i
iv. B hn ch b tip trong b nh
v. li gii hn nh trong thanh ghi d li
thanh ghi stack
vi. ch chuyn t khi thc hi sung
phn t, hoc loi b phn t i thut
phc theo
b) t bi con tr
Ưu điểm:
- nh (Hing gi ch
t bi mng)
- C lit bi con tr ng,
nh c c gii hn b
i vi c li
- n t m nhng v n dc
nhn m k tit bi
Type list = record
Ele: array[1 n]of integer;
Count: 0 n;
end;
Var L: list;
tng vu:
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) Loi 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) Hin th (1 đ)
procedure Hienthi(l:list);
var i: integer;
+ Tc sinh: (1 đ)
procedure taoDS(var l:list);
var M: hocsinh;
begin
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,i,L);
end;
end;
p:TH2B t u danh
(1 đ)
procedure insert (M: hocsinh, k: integer, var L: list);
var i: integer;
begin
i:=L.count;
while i>k do
begin
L.Eles[i]:=L.Eles[i-1];
i:=i-1;
end;
L.Eles[k]:= M;
L.count:=L.count +1;
end;
c khi gi th tp l c a hc sinh c
nh M
Giớitinh: boolean;
Diachi, trinhdo, chucdang: string;
` Next: ^ Canbo;
end;
List = ^Canbo;
Var L: List;
2) m s trong ( 1 đ)
- S dng bi ng trong u dem:= 0 ,
- S dng con tr ph M duyt t n cun
- In bi
3) Hin th : ( 1 đ)
S dng con tr ph M duyt t n cun hin
th :
4) Loi b n tui v : ( 1 đ)
n tui v , gi s v c tr bi p
b2) Loi b v
b3) Lp ln khi ht v y
- thu kin ta duyt t p:=L
dng
- loi b hc sinh v p:
a) Di chuyn con tr ph n v c p:
M:=L;
While M^.next <>p do M:=M^.next;
b) Bt, gt, gi
M^.next:=p^.next;
Dispose(p);
Câu 3( 4 điểm )
Hc sinh khi 12 d thi ht hc k i ng. Mn qu
writeln(‘Nhap hoc sinh thu i : ’);
M^.info.SBD:=SBD;
write(‘Nhạp ho ten: ’); readln(M^.info.Hoten);
write(‘Nhạp Lớp: ’); readln(M^.info.lop);
write(‘Nhạp Điem toan: ’); readln(M^.info.toan);
write(‘Nhạp Điemly: ’); readln(M^.infor.ly);
write(‘Nhạp Điem hoa: ’); readln(M^.infor.hoa);
write(‘Nhạp Điem NgoaiNgu: ’); readln(M^.info.ngoaingu);
M^.next := L;
L:= M;
i:= i+1;
end;
end;
b) Sp xng l tng l 01
(1 đ)
c) Loi b tt c m <5 ra kh, bit r
+ ly+ hoa+ ngoaingu)/4: (1 đ)
m trung <5, gi s v
b2) Loi b hc sinh v
b3) Lp ln khi ht v y
- c sinh thu kin ta duyt t y
ng
- loi b hc sinh v a di chuyn con tr n v n v c
K, thc hin loi b: q^.next:=p^.next; dispose(p);
(0.5 đ)
- Nhp s
- Duyt t n cuy, hoc duyng.
Duy i s u
bt luy, np theo trong danh
3) Procedure remove_first(var m: list; var L:list )(loi b phn t ti
phn t sau khi b loi b kh (0.5 đ)
Begin
if (L<>nil) then M:=L; L:=L^.next;
End;
4) Procedure remove_last(var M:list; var L:list)(loi b phn t cu ti
u khi loi b kh(0.5 đ)
var p,q:list;
Begin
if L<>nil Then
Begin
p:=L; q:=p^.next;
while (q^.next<>nil) do
begin
p:q; q:=q^.next;
end;
M:=q; p^.next:=nil;
End;
End;
2) tạo một hàng đợi và một ngăn xếp chứa n phần tử (1 đ)
a)Tạo ngăn xếp
procedure taoNgănxep(var Top:list);
var n, i, x:integer;
Begin
writeln(‘Nhap n=’); readln(n);
for i:= 1 to n do
write(‘Nhạp gia trị =’); readln(x); insert_first(x, Top);
End;
b) Tạo hàng đợi
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;
cnh th (1 đ)
Duy nh gc(i:=1), kim tra xem cha c
nu = k, kt lu, dng gii thut, nu cha cnh ting
p lng (found = true),
hoc duyt h t luy
Câu 3( 3 điểm ) 3
Cho m ca tc con
Anh(ch
1) Vit dn k ca mnh, s dng con tr
2) c c t
3) c? \users \BT\
1 KB
Tin\
2 KB
Toan\
1KB
BT1
C:=C^.nextsibling;
While (C<>nil) do
Begin
postOrder(C);
C:= C^.nextsibling;
End;
Tong:=tong+T^.kichco;
end;
End;
Câu 3( 3 điểm )
u din biu thc sau:
3*4+(12+b)/6
T u thc va dng, anh (ch
1) Vit dng con tr,
2) Vit th tc duy t c, sau
3) Vit biu thi dng tin t, hu t? nhi kt qu duy
theo th t c, sau?
Lg: Câu 3
Dựng cây: (0.5 đ)
1) Dt: (0.5 đ)
Type Tree=^nut;
Nut= record
Info: string;
Left, right: Tree;
End;
Var T: Tree;
Câu 3 (2 điểm)
Cho m : 15
10
21
12
0
31
45
9
1
2
3
4
5
6
7
Anh (ch
a mnh (vit d
nh)
2) D nh c
c nh t
Câu 3(bài làm)
1) a mnh (1 đ)
* Dt
Const n= 50;
45
9
2) D (1 đ)
Câu 3 (2 điểm):Anh (ch m(binary search tree)? Ti ta
l m thun ln vi
kii mnh ra khi
th hi
Lg: Câu 3
m (0.5 đ) a mu kin:
u kinh c i gc
u kin 2: i gnh ci
15
10
- vic truy cc tip, t truy c
i vi mi phn t
Hn ch: - n ta b nh
t bi con tr
m: - a b nh
Hn ch: - Truy cn t p tun t, bao gi
gc, truy cm
-
Câu 2(4 điểm ):Cho m t dt
ng con tr, gc cc tr bi con tr R. Vi dt th tc
ng vu cu sau:
1) T u kin d
2) C
3) Loi b
4) m s nh hi
lG: Câu 2
+ D dng con tr: (0.5 đ)
Type TreeBSearch = ^Nut;
Nut = Record
Infor: Integer;
Left, Right: TreeBSearch;
End;
Var R : TreeBSearch;
+ T m: (1 đ)
- Vit th t
* S dng con tr ph M cha ch cn
* Xin MT c cho M
d liu c a ch M
* G
Nng (R = nil): R := M