1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng cấu trúc dữ liệu chương 4 TS trần cao đệ

45 216 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

void UNION SET a,SET b,SET& c... while Acurrent!=NULL && Bcurrent!=NULL {... ElementType; // Kieu du lieu trong tu dien typedef int Position; int MEMBERElementType X, SET L{ for Position

Trang 1

Ch ng 4: T P H P

Trang 2

t

Trang 3

Th t c ASSIGN(A,B) gán A cho B ( t c là B:=A )

Hàm MIN(A) cho ph n t bé nh t trong 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

Trang 4

CÀI T T P

– Khi toàn th t p h p là t p h p con c a m t

t p h p các s nguyên n m trong ph m vi

nh t 1 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 là vect bít),

thu c t p h p

KHÔNG thu c t p h p

Trang 5

• Ch ng h n t p h p A={1,3,5,8} đ c bi u di n trong m ng có 10 ph n t nh sau:

0 0 1 0 0 1 0 1 0 1

10 9

8 7 6 5 4 3 2 1

const maxlength = 100;

// giá tr ph n t l n nh t trong t p h p s nguyên không âm

typedef int SET [maxlength];

Trang 6

void UNION (SET a,SET b,SET& c)

Trang 7

Cài đ đ t b ng danh sách liên k t

• T p h p có th cài đ t b ng danh sách liên k t, trong đó m i ph n t c a danh sách là m t

thành viên c a t p h p

không quan tr ng nh ng n u m t danh sách liên k t

danh sách

• Ch ng h n n u t p h p A đ c bi u di n b ng m t danhsách có th t t ng thì hàm MEMBER(x,A) có th th c hi n

vi c so sánh x m t cách tu n t t đ u danh sách cho đ n khi g p m t ph n t y ≥ x ch không c n so sánh v i t t c các ph n t trong t p h p

Trang 8

• A = {1 3 5 6 7 9 10 }

Trang 9

• Tìm giao c a hai tâp h p

– N u ds không có th t

for (m i x thu c A ) { Duy t danh sách B xem x có thu c B không N u có thì x thu c giao c a hai t p h p A và B;

Trang 10

• 1 3 5 8 9 10

Trang 11

typedef Cell* SET;

Th t c INTERSECTION(A,B,C) trong tr ng h p cài

Trang 12

while ((Acurrent!=NULL) && (Bcurrent!=NULL)) {

Trang 13

• Phép toán hop, hi u có th vi t t ng t (xem

Trang 14

Thêm ph n t vào t p h p t ch c nh danh sách có

// P dang luu tru vi tri de xen phan tu X vao

if (P->next!=NULL) && (P->next->element!=x){

Trang 15

free(T);

}

}

Trang 16

Ki m tra s hi n di n c a ph n t trong t p h p (ds không có th t )

int MEMBER(ElementType X, SET L){

Trang 18

Cài đ đ t t đ đ i n b ng m ng

Khai báo

#define MaxLength // So phan tu toi da

typedef ElementType; // Kieu du lieu trong tu dien

typedef int Position;

int MEMBER(ElementType X, SET L){

for (Position P=1; P <= L.Last; P++)

if (L.Data[P-1] == X) return 1;

return 0;

Trang 19

printf ("\nPhan tu da ton tai trong tu dien");

for (Position Q=1; (Q<=L.Last)&& (L.Data[Q-1]!=X); Q++) ;

//xóa b ng cách gán ph n t cu i vào ph n t b xóa

if ( L.Data[Q-1]==X) {

L.Data[Q-1]=L.Data[L.Last-1];

L.Last ;

}

Trang 20

• Cài đ t t đi n b ng m ng đòi h i t n n phép so sánh đ

hay không thông qua hàm MEMBER

Trang 21

B ng b m

Trang 22

INTERNET 7

8

6

WINDOWS XP 5

WINWORD

4 3 2 1 0

NETWORK s n m đâu?

Trang 24

+++++ 4

3 2 1 0

a b

d

Tim e biet h(e)=3

c

Trang 25

typedef Node* Position;

typedef Position Dictionary[B];

Trang 26

Ki m tra m t thành viên trong t đi n đ c cài b ng b ng b m m

– tính đ a ch c a nó trong b ng b m, t c là ph i tính h(x)

– Duy t danh sách c a bucket đ c tr b i D[h(x)] Gi i thu t nh sau:

int MEMBER(ElementType X, Dictionary D){

Trang 27

void INSERT_SET(ElementType X, Dictionary& D)

Trang 28

void DELETE_SET(ElementType X, Dictionary& D){

int Bucket, Done;

Trang 29

}

Trang 30

Cài đ đ t b ng b m đ óng

ph i xét dãy các bucket h(x),h1(x),h2(x), cho đ n khi tìm th y x ho c tìm th y m t v trí tr ng.

– n u hk(x) là v trí tr ng đ c g p đ u tiên thì x không th đ ctìm g p m t v trí nào xa h n n a (đi u đó ch đúng v i tr ng

h p ta không h xoá đi m t ph n t nào trong b ng b m)

– N u chúng ta ch p nh n phép xoá thì chúng ta qui c r ng

ph n t b xóa s đ c thay b i m t giá tr đ c bi t, g i là

Deleted, giá tr Deleted không b ng v i b t k m t ph n t nàotrong t p h p đang xét vào nó c ng ph i khác giá tr Empty

– Empty c ng là m t giá tr đ c bi t cho ta bi t ô tr ng

Trang 31

Khai báo

#define B 101

#define Deleted "++++++++++ »

#define Empty "**********"

typedef char* ElementType;

typedef ElementType Dictionary [B];

Ki m tra s t n t i c a ph n t trong t đi n

int MEMBER(ElementType x, Dictionary A){

Trang 32

Thêm ph n t vào t đi n

void INSERT_SET(ElementType x,Dictionary& A){

Trang 33

552 52501552516

1246

134 34600134689

0367

181 ho c 81629181604

5402

h(x) g m 3 s gi a

x2

x

Trang 34

nh g p gi y, các ch s cùng

n m t i m t v trí sau khi g p

d c x p l i th ng hàng v inhau 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á 17046329 g p haibiên vào ta có

923046710

C ng l i ta có 1679 1679 mod1000= 679 là k t qu b m

khoá đã cho

Trang 35

HÀNG U TIÊN (priority queue)

– INSERT đ thêm ph n t vào hàng u tiên và

– DELETEMIN đ xoá ph n t ra kh i hàng v i ph n t đ c xóa có

đ u tiên bé nh t.

Trang 36

bình phân n a danh sách.

• KHÔNG th cài đ t hàng u tiên b ng b ng

b m

Trang 38

• th c hi n DELETEMIN ta ch

vi c tr ra nút g c c a cây và lo i

b nút này Tuy nhiên n u lo i b

nút này ta ph i xây d ng l i cây

Trang 39

Thêm m t ph n t vào cây

• t o m t nút m i là lá n m m c cao nh t và

ngay bên ph i các lá đang có m t trên m c này.

ta thêm nút m i vào bên trái nh t m c m i

Cho nút này "n i d n lên" b ng cách đ i ch nó

v i nút cha c a nó n u nút cha có đ u tiên l n

h n

Trang 40

thêm nút 4 vào cây

Trang 41

}

Trang 42

Thêm m t ph n t vào hàng u tiên hay thêm m t nút vào cây có

Trang 43

// Tim nut be nhat trong hai nut con cua i

if ((p(L.Data[2*i])<p(L.Data[2*i+1])) || (2*i==L.Last)) j=2*i;

Trang 44

for (int i=1;i<=n ; i++){

printf("nhap phan tu thu %d ",i);

Trang 45

Bài t p ch ng

Ngày đăng: 03/12/2015, 08:14

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm