Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 45 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
45
Dung lượng
374,56 KB
Nội dung
Ch ng 4: T P H P TS Tr n Cao N m 2007 KHÁI NI M T P H P • Khái ni m t p h p c ng nh toán h c, s t p h p thành viên (members) ho c ph n t (elements) – T t c ph n t c a t p h p khác – T p h p có th có th t ho c th t KI U D • • • • • • • • • • LI U TR U T T PH P NG Th t c UNION(A,B,C) nh n vào tham s A,B,C; tr k t qu t p h p C = A ∪B Th t c INTERSECTION(A,B,C) nh n vào tham s A,B,C; k t qu t p h p C = A ∩ B Th t c DIFFERENCE(A,B,C) nh n vào tham s A,B,C; k t qu t p h p C = A\B Hàm MEMBER(x,A) N u x ∈ A hàm cho k t qu (đúng), ng c l i cho k t qu (sai) Th t c MAKENULL_SET(A) t o t p h p A t p r ng Th t c INSERT_SET(x,A) thêm x vào t p h p A Th t c DELETE_SET(x,A) xoá x kh i t p h p A Th t c ASSIGN(A,B) gán A cho B ( t c B:=A ) Hàm MIN(A) cho ph n t bé nh t t p A Hàm EQUAL(A,B) cho k t qu TRUE n u A=B ng c l i cho k t qu FALSE CÀI • TT PH P Cài đ t t p h p b ng vector Bit – Khi toàn th t p h p t p h p c a m t t p h p s nguyên n m ph m vi nh t n ch ng h n – Dùng m t m ng ki u Boolean có n ph n t đ cài đ t t p h p (ta g i vect bít), • • Ph n t th i c a m ng giá tr TRUE n u i thu c t p h p Ph n t th i c a m ng giá tr FALSE n u i KHÔNG thu c t p h p • Ch ng h n t p h p A={1,3,5,8} đ c bi u di n m ng có 10 ph n t nh sau: 10 1 0 0 const maxlength = 100; // giá tr ph n t l n nh t t p h p s nguyên không âm typedef int SET [maxlength]; T o m t t p h p r ng void MAKENULL_SET(SET& a){ int i; for(i=0;i[...]... gi a làm k t qu c a hàm b m" x x2 h(x) g m 3 s 540 2 291816 04 181 ho c 816 0367 001 346 89 1 34 346 1 246 01552516 552 525 2983 08898289 898 982 gi a 33 Ph ng pháp tách • Tách: tách khóa ra t ng đo n r i x p các đo n thành hàng đ c canh th ng m t đ u r i có th c ng chúng l i r i áp d ng ph ng pháp chia đ có k t qu b m • ví d : khoá 17 046 329 tách thành 329 046 017 c ng l i ta đ c 392 392 mod 1000 = 392 là... Acurrent=Acurrent->next; Bcurrent=Bcurrent->next; } else if (Acurrent->elementelement) Acurrent=Acurrent->next; A: 1, 4, 6, 7, 8, 11 else Bcurrent=Bcurrent->next; } B: 1,3 ,4, 5,7,10 Ccurrent->next=NULL; } A ∩ B = 1, 4, 7 12 • Phép toán hop, hi u có th vi t t ng t (xem nh bài t p) • Phép ASSIGN(A,B) chép các các ph n t c a t p A sang t p B, chú ý r ng ta không đ c làm b ng l nh gán đ n gi n B=A!... n t c a t đi n ngay trong m ng 0 – Chi n l c th tuy n tính hi(x)=(h(x)+i) mod B 2 Ví d B=8 và các ph n t c a t đi n là a,b,c,d có giá tr b m l n l t là: h(a)=3, h(b)=0, h(c) =4, h(d)=3 4 c +++++ Tim e biet h(e)=3 b 1 3 5 a d 6 7 24 Cài đ t b ng b m m Khai báo #define B typedef ElementType; typedef struct Node{ ElementType Data; Node* Next; }; typedef Node* Position; typedef Position Dictionary[B];... m t i m t v trí sau khi g p d c x p l i th ng hàng v i nhau r i có th c ng l i r i áp d ng ph ng pháp chia (mod) đ cho k t qu b m • Ví d : khoá 17 046 329 g p hai biên vào ta có 923 046 710 C ng l i ta có 1679 1679 mod 1000= 679 là k t qu b m khoá đã cho 34 HÀNG U TIÊN (priority queue) Khái ni m hàng u tiên • Hàng u tiên là m t ki u d li u tr u t ng t p h p đ c bi t, trong đó m i ph n t có m t đ u tiên... h(ElementType x){ int i,sum=0; for (i=0;i > h(x) x Ch s Ph n t {0 B-1} h(x) B ng b m 21 #define B … typedef char* ElementType; int h(ElementType x){ int i,sum=0; for (i=0;ielement next; else break; // P dang luu tru vi tri de xen phan tu X vao if (P->next!=NULL) && (P->next->element!=x){ T=(SET)malloc(sizeof(Cell)); T->element=X; T->next=P->next; P->next=T; } } 14 Xoá ph n t ra kh i t p h p t ch c nh danh sách có th t ng void DELETE_SET(ElementType X, SET& L) { SET T,P; P=L; while (P->next!=NULL) if (P->next->elementnext; else break; if (P->next!=NULL) ... v i r i ch n m t s ch s gi a làm k t qu c a hàm b m" x x2 h(x) g m s 540 2 291816 04 181 ho c 816 0367 001 346 89 1 34 346 1 246 01552516 552 525 2983 08898289 898 982 gi a 33 Ph ng pháp tách • Tách:... l t nút có khóa nh nh t
"); while (L.Last>0) printf("%d
", DeleteMin(L)); getch(); } 44 Bài t p ch ng 45 ... chia (mod) đ cho k t qu b m • Ví d : khoá 17 046 329 g p hai biên vào ta có 923 046 710 C ng l i ta có 1679 1679 mod 1000= 679 k t qu b m khoá cho 34 HÀNG U TIÊN (priority queue) Khái ni m hàng