CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc ĐÁP ÁN ĐỀ THI TỐT NGHIỆP CAO ĐẲNG NGHỀ KHOÁ 2 (2008 - 2011) NGHỀ: LẬP TRÌNH MÁY TÍNH MÔN THI: LÝ THUYẾT CHUYÊN MÔN NGHỀ Mã đề số: DA LTMT - LT17
Nội dung Điểm
Câu I. Phần bắt buộc
a. Phương pháp biểu diễn danh sách liên kết kép
1 1,0
- Danh sách liên kết kép là một cấu trúc dữ liệu bao gồm 1 tập hợp các phần tử, trong đó mỗi phần tử là một nút, trong mỗi nút có chứa hai liên kết tới nút liền trước và liền sau nút đó.
- Cấu trúc 1 nút của danh sách liên kết kép
Lptr INFO Rptr
Trong đó:
+ INFO: là trường chứa thông tin (dữ liệu) của nút
+ Lptr: là con trỏ chứa địa chỉ của nút liền trước (bên
trái) nút này trong danh sách.
+ Rptr: là con trỏ chứa địa chỉ của nút liền sau (bên
phải) nút này trong danh sách.
- Danh sách liên kết kép luôn được quản lý bởi hai con trỏ trỏ: một vào nút cực trái của danh sách và một trỏ vào nút cực phải của danh sách.
- Một danh sách liên kết kép được biểu diễn tổng quát như sau:
R
L
b. - Thêm một nút có thông tin là X vào trước nút M đang trỏ, nếu không tồn tại nút M thì chèn vào đầu cực trái
Trang: 1/5
void themtruocM(L, R, X, M) { // Tạo nút mới new<= avail; new->info=X; if(L==NULL); {L=R=new; new->rptr=new->lprt=NULL;} else { // Tìm nút M P=L; while(p!=M && p!=NULL) p=p->rptr; if(P!=NULL) // tìm thấy nút M If(M==L) // M trùng với nút cực trái {new->rptr = M; M->lptr=new;
new->lptr=NULL; L=new; }
{ p=M->lptr;
else
New->rptr=M; M->lptr=new; p->rptr=new; new->lptr=p;}
else // Không tìm thấy nút M {new->rptr = M; M->lptr=new;
new->lptr=NULL; L=new; } }
}
1,0
while(dem
switch { case L==R: {L=R=NULL; break;} case
L==p:
{L=L->rptr;
L-
>lptr=NULL;break;}
case
R==p:
{R=R->lptr;
R-
>rptr=NULL;break;}
default: {q=p->lptr; M=p->rptr;
q->rptr=M;
M->lptr=q;
break;}
} free(p);
}
else cout<<”Khong ton tai nút thu ”< 1,0 - Xóa nút thứ k trong danh sách.
void xoa_nut_thu_k(L, R, M)
{
// Tìm nút thứ k
if(L== NULL) count<<”Danh sach rong”;
else
{ dem=1; p=L; FX ={A, B, C}
FX ={A, B, C, D} 2 FX ={A, B, C, D, E} 1,0 FX ={A, B, C, D, E, G, H} a. Tính (AB)+
- Gọi X={A, B}
- Do AB C nên
- Do B D nên
- Do CD E nên
- Do CE GH nên FX ={A, B, G} FX ={A, B, C, G}
FX ={A, B, C, D, G} FX ={A, B, C, D, E, G} 1,0 FX ={A, B, C, D, E, G, H} b. Tính (BG)+
- Gọi X={B, G}
- Do G A nên
- Do AB C nên
- Do B D nên
- Do CD E nên
- Do CE GH nên 3 0,25
0,25 0,1
0,15 0,25 0,5 0,1 ………, ngày ………. tháng ……. năm ……… II. Phần tự chọnTrang: 2/5
#include"conio.h"
#include"iostream.h"
#include"string.h"
#include"stdio.h"
class diem
{
private:
char *mahs;
char *hoten;
float t,l,h;
public:
diem()
{
mahs=new char[10];hoten=new char[40];
t=0;l=0;h=0;
}
~diem()
{
delete mahs;
delete hoten;
}
void nhap()
{
cout<<"\nMa hoc sinh:";gets(mahs);
cout<<"\nHo va ten:"; gets(hoten);
fflush(stdin);
cout<<"diem toan:";cin>>t;
cout<<"diem ly:";cin>>l;
cout<<"diem hoa:";cin>>h;
}
Trang: 3/5
float tongdiem()
{
return t+l+h;
}
void hienthi()
{
cout<<"\n"<
Trang: 4/5
(ds[i].tongdiem()>tg)
void BD::tongdiem_Max()
{
float tg=0.0;
int max,i;
for(i=0;i
void main()
{
BD ds;
ds.nhapBD();
ds.hienthiBD();
ds.tongdiem_Max();
getch();
}
Trang: 5/5

