Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
135,21 KB
Nội dung
- Procedure Initialize; var i:integer; Begin For i:=0 to M T[i].key:=free; R:=M+1; End; c Thêm khóa vào bảng băm - Hàm THEM_KHOA(k:integer) thực việc thêm khóa k vào bảng băm - Giá trị hàm trả vị trí phần tử thêm vào bảng băm đầy - Nếu có khóa k bảng hàm cho biết vị trí khóa bảng băm mà khơng thêm vào khóa - Phần tử vị trí ln vị trí trống, sử dụng để đảm bảo việc tìm kiếm ln kết thúc thành cơng, đống vai trò phần tử cầm canh Function THEM_KHOA(k:integer):integer; Var i,j :integer; Begin I:=H(k)+1; {0100 begin writeln(' so phan tu ma ban nhap vao la qua lon !nhap lai voi so phan tu nho hon 100'); readln(n); end ; for i:=0 to 100 bangbam[i]:=''; for i:=0 to n-1 begin writeln('nhap gia tri thu',i+1); readln(a); if bangbam[h(a)]='' then begin bangbam[h(a)]:=a ; writeln('gia tri cua ',a,' bang bam la',h(a)); end else if bangbam[h(a)]=a then begin repeat writeln('da co sau tren co so du lieu ! de nghi nhap mot sau khac') ; readln(a); until bangbam[h(a)]='' ; bangbam[h(a)]:=a; writeln('gia tri bam cua sau da nhap la ',h(a)); end else if bangbam[h(a)]a then begin writeln('da xay va cham tai vi tri ',h(a),' bang bam'); j:=h(a) ; repeat j:=j+1 ; until bangbam[j]=''; bangbam[j]:=a; writeln('gia tri bam cua chuoi ',a,' sau giai quyet va cham la ',j); end; end; writeln('ban co muon thuc hien thao tac tim kiem khong? Y\N'); readln(ch); if ((ch='Y') or (ch = 'y')) then timkiem ; readln; end Bài tập giải phương pháp dây truyền program bai1; type banghi=record ten:string; end; elementtype=banghi; point=^usernode; usernode=record data:elementtype; next:point; end; bangbam=array[0 12] of point; var f:text; userRec:banghi; userT:bangbam; found:boolean; loc:integer; p:point; ten:string; c:char; dem:integer; procedure khoitao(var T:bangbam); var i:integer; begin for i:=0 to 12 T[i]:=nil; end; function hambam(ten:string):integer; var tong:integer; i:integer; begin tong:=0; for i:=1 to length(ten) tong:=tong+ord(ten[i]); hambam:=tong mod 11; end; procedure timkiem(T:bangbam;item:elementtype); begin loc:=hambam(item.ten); p:=T[loc]; found:=false; dem:=1; while not found and (pnil) if p^.data.ten=item.ten then begin found:=true; writeln('da co o vi tri ',loc,'-',dem); end else begin dem:=dem+1; p:=p^.next; end; end; procedure nhap(var T:bangbam;item:elementtype); begin timkiem(T,item); if found=false then begin new(p); p^.data:=item; p^.next:=T[loc]; T[loc]:=p; writeln('da dien vao vi tri ',loc,'-',dem); end; end; procedure ghi; var i:integer; begin for i:=1 to 11 begin write('',i,': '); begin p:=userT[i]; while pnil begin write('',p^.data.ten,' '); p:=p^.next; end; writeln; end; end; end; procedure doc; begin end; begin khoitao(userT); begin repeat writeln('Nhap ten: ');readln(userrec.ten); nhap(userT,userrec); write('ban co muon nhap nua khong (y/n) ?');readln(c); until c='n'; write('ban co muon xem bang bam khong (y/n) ?'); readln(c); if c='y' then ghi; writeln; writeln('Cac khoa co cung vi tri thi co cung mot dong'); writeln('Cac khoa co vi tri khac thi khac dong'); readln; end; end Bài 2: Giả sử ký tự mã hoá sau : ‘A’=1, ‘B’=2, ….’Z’=26 Dùng bảng băm với 11 vị trí hàm băm h(i)=average mod 11 , average giá trị trung bình mã số ký tự đầu cuối I, bảng băm nhận chèn định danh sau theo thứ tự : Beta , rate, freq, alpha, mean, sum, num, bar, wage, pay, kappa Dùng: a.Phương pháp thăm dị tuyến tính b Phương pháp dây chuyền ... hàm băm thứ hai Chú ý, hàm băm thứ hai h2 phải chọn cẩn thận vài khía cạnh, khơng chương trình khơng hoạt động tốt Yếu tố thứ ba việc thiết kế bảng băm việc chọn bảng băm Dĩ nhiên dáng điệu hàm. .. dùng hàm băm với mục số nguyên trước hết ta mã hố mục số ngun; ví dụ, tên mã hố tổng mã số ASCII vài tất giá trị kí tự Chương trình giải số toán hàm băm: Bài 1: dùng bảng băm với 11 vị trí hàm băm. .. bang băm nhận sau chèn số nguyên sau theo thư tự : 26 , 42, 5, 44, 92, 59, 40, 36, 12, 60, 80 Dùng : a Thăm dị tuyến tính b Phương pháp dâu truyền Để giai va chạm để giải toán ta xây dựng hàm băm