1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập thực tập cơ sở môn hệ thống thông tin

66 486 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Bài tập thực tập cơ sở môn hệ thống thông tin
Tác giả Ths. Tô Văn Nam
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Hệ thống thông tin
Thể loại bài tập
Năm xuất bản 2007
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 66
Dung lượng 1,31 MB

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

Nội dung

Các nút còn l i, mỗi nút phải có chính xác m t cành vào... Các nút không phải nút g c ho nú ợc g i là nút trung gian hay nút trong internal node.. sâu của cây bằn sâu của nút lá sâu nh

Trang 1

Ths Tô Văn Nam

N n n Mssv: 20070095

Trang 2

4

I n n n 4

II n an n n n 4

A 5

I T n an 5

1 Các khái ni m ản v cây 5

2 Cây nhị phân 7

II T n an an n 12

1 ịn n ĩa danh sách 12

2 Danh sách liên k t trong mảng liên t c 14

3 n a 17

B n n 18

I n 18

1 năn 18

2 năn 18

II n a n 18

1 a ô n a 18

2 a ô n 20

III n 21

1 m n ản 21

2 m n 21

3 m n 22

C T n 23

I n 23

1 T n n tsort 23

2 n a a 23

3 n a 23

Trang 3

6 T 25

7 T n ị 27

II a n 27

III n n 30

IV n n n 31

D n n n n 31

E T am ả 66

Trang 4

I

N i dung: Giả s bi u th c toán h ợc bi u di n b i cây bi u th c, có g c tr

b i T, mỗi nút trên cây có cấu trúc :

struct Nut {

Kieu : Byte {phân lo i nút trên cây } struct

N *L TR, *R TR /*G ịa ch g c cây con trái và

g c cây con phải của nó */

}

Ý n ĩa ủa ng gi n n mô ả n n 6, u ‘’ Cấu trúc

gi li u và giải thu “

Yêu c u : Vi n n n ực hi n các yêu c u sau :

1 Nh n bi t các thành ph n tham gia vào bi u th c: Bi n, hằng, dấu

phép toán và lo i của nó

2 T o cây bi u th c bi u di n m t bi u th

3 L p bảng SYM-V LUE c vào giá trị các bi n có trong bi u

th c , chuy n các xâu ký tự bi u di n các hằng có trong bi u th c

K ú ợt thực t p sinh viên phải:

 N m ợc ph n lý thuy t trong giáo trình Cấu trúc gi li u và giải thu t

Trang 5

float Heso; /*H s */

};

Giả s danh sách các s h n ợ bằng mảng m t chi u

Yêu c u: Vi rì c hi n các yêu c u sau:

S p x p mảng theo th tự giảm d n của n S m n p x p là

K ú ợt thực t p sinh viên phải:

 N m ợc ph n lý thuy t trong giáo trình Cấu trúc gi li u và giải thu t

 N m ợc các kỹ thu t l p trình, s d ng thành th o ngôn ng l n c

 T ợt tác phong làm vi c t p th cùng giải quy t m t vấn

 Sa ợt thực t p, nhóm sinh viên phải làm báo cáo thực t p có n i dung :

A

I c

1

M t cây (tree) - hình 9.1- g m m t t p h u h n các nút (node) và m t t p h u

h n các cành (branch) n i gi a nú n nú i là cành vào (indegree),

n a i nút g i là cành ra (outdegree) S cành ra từ m t nút g i là b c

(degree) của nú N u cây không rỗng thì phải có m t nút g i là nút g c (root),

nút này không có cành vào Cây trong hình 9.1 có M là nút g c Các nút còn l i, mỗi nút phải có chính xác m t cành vào Tất cả nú u có th có 0, 1, ho c nhi u

n cành ra

Trang 6

Nút lá (leaf) ợ ịn n ĩa n nú ủa cây mà s cành ra bằng 0 Các nút

không phải nút g c ho nú ợc g i là nút trung gian hay nút trong (internal

node) Nút có s cành ra khác 0 có th g i là nút cha (parent) của các nút mà cành ra

của n , nú n ũn ợc g i là các nút con(child) của nó Các nút cùng

a ợc g i là các nút anh em (sibling) v i nhau.Nút trên nút cha có th g i là nút

ông (grandparent, trong m t s bài toán ún a ũn n g n n trình

bày giải thu t)

Theo hình 9.1, các nút lá g m: N, B, D, T, X, E, L, S; các nút trung gian g m: A,

C, O, Y Nút Y là cha của hai nút T và X T và X là con của Y, và là nút anh em v i

nhau

nk sao cho ni là nút cha của nút ni+1 v ≤ < Chi u dài (length) đ ờng đ này là s

n n n , -1 Mỗ nú n u dài bằn 0 n chính nó Trong

m t cây, từ nút g n mỗi nút còn l i ch có duy nhất m t n

i v i mỗi nút n i, đ sâu (depth) hay còn g i là m c (level) của nó chính là

chi n n ất từ nút g n nó c ng 1 Nút g c có m c bằng 1 Chi u

nút lá có chi u cao bằng 1 Chi u cao của cây bằng chi u cao của nút g c sâu

của cây bằn sâu của nút lá sâu nhất, nó luôn bằng chi u cao của cây

Trang 7

M t cây có th ợc chia thành nhi u cây con (subtree) M t cây con là bất kỳ

m t cấ ú n i của nút g Nú u tiên của cây con là nút g c của nó và

ô n i ta dùng tên của nú n g i cho cây con Cây con g c A (hay g i t t

là cây con A) g m các nút A, N, C, B M n ũn chia thành nhi u cây

con khác Khái ni m cây con dẫn n ịn n ĩa n sau:

Đị ĩ : M t cây là t p các nút mà

- là t p rỗng, ho c

- có m t nút g i là nút g c có không ho c nhi n, n ũn là cây

Các cách bi u di n cây

T ôn ng có 3 cách bi u di n cây: bi u di n bằn thị – hình 9.1a, bi u

di n bằng cách canh l – hình 9.1b, và bi u di n bằng bi u th c có dấu ngo c – hình 9.1c

2 ị

1 C đị ĩ

Đị ĩ : M t cây nhị phân ho c là m t cây rỗng, ho c bao g m m t nút g i là

nút g c (root) và hai cây nhị n ợc g i là cây con bên trái và cây con bên phải

của nút g c

L ằn ịn n ĩa n ịn n ĩa n c cho m t cấ ú c tả

cây nhị n n m t ki u d li u trừ ợng, chúng ta c n ch ra các tác v có th

thực hi n trên cây nhị n n ản của m t cây nhị phân t ng quát

ún a n n có th là t o cây, giải phóng cây, ki m tra cây rỗng, duy ,…

ịn n ĩa n ôn an m n cách hi n thực của cây nhị phân trong b

nh Chúng ta sẽ thấy ngay rằng m t bi u di n liên k t là tự nhiên và d s d ng,

n n n thự n mảng liên t ũn thích hợ ịnh n ĩa n

ũn ôn an m n các khóa ho c cách mà chún ợc s p th tự Cây nhị

n ợc dùng cho nhi u m n có tìm ki m truy xuấ ,

chúng ta c n gi m ịn n ĩa ng quát

Trang 8

T m é a n c tính chung của cây nhị phân, chúng ta hãy

quay v ịn n ĩa ng quát và nhìn xem bản chấ quy của nó th hi n n nào

trong cấu trúc của m t cây nhị phân nh

T ng hợp th nhất, m ng hợ ản ôn n an n , là

m t cây nhị phân rỗng

Cách duy nhấ xây dựng m t cây nhị phân có m t nút là nú c và

cho hai cây con trái và phải là hai cây rỗng

V i cây có hai nút, m t trong hai sẽ là g c và nút còn l i sẽ thu c cây con Ho c

cây con trái ho c cây con phải là cây rỗng, và cây còn l i ch a chính xác ch m t nút

N v y có hai cây nhị phân khác nhau có hai nút Hai cây nhị phân có hai nút có th ợc

i v ng hợp cây nhị phân có ba nút, m t trong chúng sẽ là g c, và hai nút

còn l i có th ợc chia gi a cây con trái và cây con phải theo m t trong các cách sau:

2 + 0 1 + 1 0 + 2

Do có th có hai cây nhị phân có hai nút và ch có m t cây rỗn , ng hợp th

nhất trên cho ra hai cây nhị n T ng hợp th a, n ự, cho thêm hai cây

Trang 9

duy nhất m t cây nhị phân có m nú n n ng hợp này ch có m t cây nhị phân

Tất cả ún a năm n ị phân có ba nút:

xây dựng cây này là m n n ng hợp l n n

Chúng ta b t u từ g c của cây và xem các nút còn l n cách phân chia gi a

cây con trái và cây con phải Cây con trái và cây con phải lúc này sẽ là các ng hợp

nh n m ún a t

G i N là s nút của cây nhị phân, H là chi u cao của cây thì,

Hmax = N, Hmin = ⎣log2N⎦ +1

Nmin = H, Nmax = 2H-1

Khoảng cách từ m nú n nút g ịnh chi phí c n ịnh vị nó Chẳng

h n m nú sâu là 5 thì chúng ta phả ừ nút g c và qua 5 cành n n

từ g n n m n n , n u cây càng thấp thì vi c tìm n các nút sẽ càng

n an u này dẫn n tính chất cân bằng của cây nhị phân H s cân bằng của cây

(balance factor) là sự chênh l ch gi a chi u cao của hai cây con trái và phải của nó:

B = HL-HR

M t cây cân bằng khi h s này bằng 0 và các cây con của n ũn n ằng

M t cây nhị phân cân bằng v i chi a c sẽ có s nút là l n nhất có th

N ợc l i, v i s nú c cây nhị phân cân bằng có chi u cao nh nhất Thông

n u này rất khó xả a n n ịn n ĩa n i l n n i các trị B = –1,

0, ho c 1 thay vì ch là 0 Chúng ta sẽ h c kỹ n cây cân bằng AVL trong ph n

sau

M t cây nhị đ đủ (complete tree) ợc s nút t a i chi u

cao của n ũn n =0 i m i nút Thu t ng cây nhị phân g n

đ đủ ũn ợc dùng ng hợ ợc chi u cao t i thi u của nó

và m i nút m c l n nhất d n h t v bên trái

Trang 10

Hình 9.3 bi u di n cây nhị n ủ có 31 nút Giả s lo nú 9, , 3,

25, 27, 29, 31 ta có m t cây nhị phân g n n ủ

2 C c

Cách ch n các tên preorder, inorder, và postorder cho ba phép duy t cây trên

không phải là tình c , nó liên quan ch t chẽ n m t trong nh ng ng d n , là các

cây bi u th c

M t cây bi u th c (expression tree) ợc t o nên từ các toán h n n ản và các

toán t (s h c ho c lu n lý) của bi u th c bằng cách thay th các toán h ng n ản

bằng các nút lá của m t cây nhị phân và các toán t bằng các nút bên n i

v i mỗi toán t hai ngôi, cây con trái ch a m i toán h ng và m i toán t thu c toán

h ng bên trái của toán t , n ải ch a m i toán h ng và m i toán t thu c

toán h ng bên phải của nó

Trang 11

i v i toán t m t ngôi, m t trong hai cây con sẽ rỗn ún a ng vi t

m t vài toán t m t ngôi phía bên trái của toán h ng của chúng, chẳng h n dấu trừ

(phép lấy s âm) ho c các hàm chu n n () () n m t ngôi khác

ợc vi t bên phải của toán h ng, chẳng h n hàm giai thừa ()! ho c hàm n n

()2 ô ả a a u hợp l , n é ấ o hàm có th vi t d/dx phía bên

trái, ho ()’ a n ải, ho c toán t ăn ++ ản ng

khác nhau khi nằm bên trái ho c nằm bên phải N u toán t ợc ghi bên trái, thì

trong cây bi u th c nó sẽ có cây con trái rỗn , n y toán h ng sẽ xuất hi n bên

phải của nó n N ợc l i, n u toán t xuất hi n bên phải, thì cây con phải của

nó sẽ rỗng, và toán h ng sẽ là cây con trái của nó

M t s cây bi u th c của m t vài bi u th n ản ợc minh h a trong hình

9.4 Hình 9.5 bi u di n m t công th c b c hai ph c t n a tự duy t cây

chu n cho cây bi u th c này li t kê trong hình 9.6

Các tên của các phép duy n an n các d ng Balan của bi u th c: duy t cây

bi u th c theo preorder là d ng prefix, n mỗi toán t nằm c các toán h ng

của nó; duy t cây bi u th c theo inorder là d ng infix (cách vi t bi u th c quen thu c

của chúng ta); duy t cây bi u th c theo postorder là d ng postfix, m i toán h ng nằm

c toán t của ún N y các cây con trái và cây con phải của mỗi nút luôn là

Trang 12

trong ba d ng Balan hoàn toàn gi ng v i th tự n i của các l n ghé các thành

ph n này theo m t trong ba phép duy t cây bi u

II

1 ị ĩ

Chúng ta b u bằng vi ịn n ĩa u cấu trúc d li u trừ ợng g i là danh

sách (list) ũn n n n ăn p và hàng, danh sách bao g m m t chuỗi n i ti p

Trang 13

8 Truy xuất ph n t t i m t vị n ủa danh sách

9 Thay th ph n t t i m t vị trí nào ủa danh sách

10 Duy t danh sách, thực hi n m t công vi c trên mỗi ph n t

Ngoài ra còn m t s tác v khác có th áp lên m t chuỗi n i ti p các ph n t

Chúng ta có th xây dựng rất nhi u d ng khác nhau cho các ki u cấu trúc d li u trừu

ợn n ự bằng cách s d ng các gói tác v khác nhau Bất kỳ m t trong các

d n n u có th ợ ịn n ĩa n i CTDL danh sách Tuy nhiên, chúng

ta ch t p trung vào m t danh sách c th mà các tác v của nó có th ợc m n

m t khuôn mẫu minh h a ng và các vấn c n giải quy t trên danh sách

Trang 14

2 r

M t vài ngôn ng a n n ất ph bi n n F an, a không

cung cấp khả năn d ng b nh ng ho c con tr N u c n s d ng các ngôn ng

n giải quy n m n trên danh sách liên k t (DSLK)

t a n ẳn trên danh sách liên t c (vi c thay i m t vài con tr d dàng

n an n n n u vi c phải chép l i m t s ợng l n d li u), chúng ta vẫn

có th s d ng mảng liên t mô ph ng DSLK Trong ph n này chúng ta sẽ tìm

hi u m t hi n thực của DSLK mà không c n con tr Hay nói cách khác, chúng ta

không dùng con tr ch a ịa ch , mà sẽ dùng con tr là m t s nguyên, và DSLK sẽ

ợc hi n thực trong m t mảng liên t c

a.P ươ

Ý ng chính u từ m t mảng liên t ùn ch a các ph n t của

m t DSLK Chúng ta xem mản n n m t vùng nh a d ng và chúng ta sẽ

tự phân ph i lấy Chúng ta sẽ xây dựng m t s m quản lý mảng này: nh n bi t

vùng nào trong mản a ợc s d ng, n i k t các ph n t trong mảng theo m t th

tự mong mu n

M m của DSLK mà chúng ta phải b qua trong ph n này là vi c ịnh vị

b nh ng, ngay từ u chúng ta phả ịn c c n thi t cho mảng M i

m còn l i khác của SL ợc gi n n, n n m m dẻo trong vi c t

Trang 15

Hi n thực DSLK trong mảng liên t ũn ra rất hi u quả trong nh ng ngôn

ng tựa C++ có cung cấp con tr ịnh vị b nh ng Các ng d ng

ợc xem là thích hợp khi s d ng DSLK trong mảng liên t c :

li u ch a các thông tin v n n n n ợc gán cho các sinh viên theo th

tự nh n , n m s không theo m t th tự c bi t nào Thông tin v sinh

viên có th ợc tìm thấy nhanh chóng dựa vào mã sinh viên do s n ợc dùng

n s tìm trong mảng liên t c Tuy nhiên, th nh thoảng chúng ta c n in danh

sách sinh viên có th tự n, u này có th m ợc bằng cách l n theo các

th tự nh các tham chi u trong các mản n ng

thấ ợc cách hi n thực này của DSLK làm vi n nào, chúng ta hãy

duy t DSLK next_name trong ph n u của n 4.5 u vào của danh sách ch a trị 8, n ĩa n t trong vị trí 8, Arthur, E., là ph n t u tiên của danh sách

Vị trí 8 của next_name ch a trị 0, n ĩa n vị trí 0, Clark, F., là ph n t

th hai Vị trí 0 của next_name ch trị 5, v y Evans, B., là ph n t k ti p Vị trí 5

Trang 16

N trong hình 4.5, hi n thực của DSLK trong mảng liên t ợc tính

linh ho t của SL i v i nh ng sự a i Ngoài ra nó còn có khả năn chia sẻ

thông tin (chẳng h n tên sinh viên) gi a các DSLK khác nhau Hi n thực n ũn

òn m của danh sách liên t c là có th truy xuất ngẫu nhiên các ph n t nh

cách s d ng ch s truy xuất trực ti p

Trong hi n thực của DSLK trong mảng liên t c, các con tr tr thành các ch s

n i so v m b u của danh sách Các tham chi u của danh sách ch a

trong m t mảng, mỗi ph n t của mảng ch a m t s nguyên ch n vị trí của ph n t

k của danh sách trong mảng ch a d li phân bi t v i các con tr (pointer) của

DSLK trong b nh ng, chúng ta sẽ dùng từ chỉ s (index) g i các tham chi u

này

Chúng ta c n khai báo hai mảng liên t c cho mỗi DSLK, entry[ ] ch a d

li u, và next_node[ ] ch a ch s ch n ph n t k i v i ph n l n các

ng d ng, entry là m t mảng mà mỗi ph n t là m t cấu trúc, ho c m t vài mảng

n ng hợp ngôn ng l p trình không cung cấp ki u cấu trúc Cả hai mảng

m t hằng s bi c

Do chúng ta dùng ch s b u từ 0, chúng ta sẽ dùng trị c bi t – bi u di n

an ú , n ự n ị NULL của con tr trong b nh ng

Trang 19

đư

N a

ô n é n a a

3 ô n é n n a

4 ô n é n n

ĩ

- EX ( )=EX ( ) a ẽ ả ự n n ị EF a nú , n n ôn ả a nú m n n n n an n n ( ( )) - N EX ( ) EX ( ) ( n ợ ũn n ự ) ả a é nú

n an ủa ( )

- N m an ú n òn ủa an a ẽ ợ a

é n n an ủa ( )

Trang 20

5 a

T m n n 6 ú T n n 2 Ca2:

B1: ư

N

ô n

3 a

4 ú

N

T n n ị

2.2

3 a

T m n n

4 ú

T n n

Trang 22

3 đ đ đỉ

a

Trang 24

DaThuc DaThuc::Nhan(DaThuc Data)

//Thuc hien nhan da thuc voi da thuc

Trang 27

case 1: return(Giatri(n->LPTR)+Giatri(n->RPTR));

case 2: return(Giatri(n->LPTR)-Giatri(n->RPTR));

case 3: return(Giatri(n->LPTR)*Giatri(n->RPTR));

case 4: return(Giatri(n->LPTR)/Giatri(n->RPTR));

case 5: return((int)pow(Giatri(n->LPTR), Giatri(n->RPTR)));

case 6: return((-1)*Giatri(n->RPTR));

Trang 28

n

G a n m n a

Trang 29

G a n m n n mô n a

G a n mô n

Trang 31

a 3 TT_DOHOA.CPP, TT_DOHOA.EXE, EGAVGA.BGI

+C_Huon T a m n n n ủa n n ùn n ôn n

Trang 32

SoHang(int SoMu,int HeSo){ soMu=SoMu;heSo=HeSo;}

void Set(int SoMu,int HeSo){soMu=SoMu;heSo=HeSo;}

ToaDo(int x,int y){X=x;Y=y;}

void Set(int x,int y){X=x;Y=y;}

void VeHop(int X1,int Y1,int X2,int Y2,char* String);

void VeHop(int X1,int Y1,int X2,int Y2,int MauNen,int MauChu,char*

String);

void VeHop(int X1,int Y1,int X2,int Y2,int Number);

void VeHop(int X1,int Y1,int X2,int Y2,int MauNen,int MauChu,int

Number);

void XoaHop(int ,int,int, int);

void VeMenu(int X1,int Y1,int X2,int Y2,char* String);

void VeMenu(int X1,int Y1,int X2,int Y2,int MauNen,int MauChu,char* String);

BangToaDo(int X,int Y);

void Set(int X,int Y);

Trang 33

void DeleteSoHang(int Vitri);

void VeSoHang(int ViTri,int X, int Y);

//Xoa so hang tai vi tri x,y

ToaDo toaDo[25];

void Insertsort();

public:

DaThuc();

DaThuc(int X,int Y);

void SetHeSo(int ViTri,int Data);

void SetSoMu(int ViTri,int Data) ;

int GetLength();

float GetHeSo(int ViTri);

int GetSoMu(int ViTri);

SoHang* GetDaThuc();

void Set(SoHang *Data,int Length);

void Set(SoHang *Data,int Length,int X,int Y);

void Show(char *);

void Show(ToaDo Toado);

void Show(int,int);

void ChuanHoa();

DaThuc Nhan(DaThuc Data);

DaThuc Nhan(int Data);

DaThuc Cong(DaThuc Data);

DaThuc Tru(DaThuc DaTa);

//void ConvertSoHang(int Vitri,char *Temp);

DaThucMoPhong(int X,int Y);

void SetToaDo(ToaDo toado);

void SetToaDo(int ViTri,ToaDo Data);

void SetDaThuc(DaThuc Data);

ToaDo GetToaDo(int ViTri);

void KhoiDong();

void VeDaThuc();

void VeDaThuc(ToaDo Toado);

void DiChuyenSoHang(int ViTri,ToaDo Toado);

void VeSoHang(int ViTri,int MauSac);

void VeSoHang(int ViTri);

void ChuyenSoHang(SoHang Sohang,ToaDo Toado1,ToaDo Toado2);

void VeSoHang(ToaDo toado);

void VeSoHang(SoHang Sohang, ToaDo Toado, int Mausac);

void VeSoHang(SoHang Sohang, ToaDo Toado);

};

//Lop Thuc hien chu nang mo phong da thuc bang do hoa

//*********CHUONG TRINH MO PHONG CAY BIEU THUC**********

Ngày đăng: 06/11/2013, 19:15

HÌNH ẢNH LIÊN QUAN

Hình 9.3 bi u di n cây nhị    n      ủ có 31 nút. Giả s  lo          nú   9,   , 3, - Bài tập thực tập cơ sở môn hệ thống thông tin
Hình 9.3 bi u di n cây nhị n ủ có 31 nút. Giả s lo nú 9, , 3, (Trang 10)

TỪ KHÓA LIÊN QUAN

w