1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo trình cấu trúc dữ liệu và giải thuật nguyễn thái hà

174 12 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

s GIAO DỤC VA ĐAO TẠO HA NỌI TỈIÀQoục - ĐÁOTẠO W H À NƠ GIÁO TRÌNH cau true du lieu giài thuạt DÙNG TRONG CÁC TRƯỜNG TRUNG HOC CHUN NGHÍÊP i* »111011111 11110111111 J " •J 010000011111010100iw 111101111 111101111: \ yỷ u - \c >111 none 1110111 111101: 11 Vu fị JO #f ^ *• < } * • ■? * J A 11010' •' J l 110101111 ỊI1010111I K f i i t 810101111 I 10000011111010 010000011111 010101Ỡ10000011111ỚÌ0 0110010101010100000 011001010101010 110010101010 Ì10010101P mm 11111 ■fol ũĩ Mmm 11001010101010Í 111001010101 ¿00111110 ¡■idio \ ótữKPl /0101014 Ị11110101 w 10n M1010100HO1Ở1 NHA XUAT BAN HA NOI SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ NỘI * • * NGUYỄN THÁI HÀ GIÁO TRÌNH CẤU TRÚC DÍ LIỆUVÀ GIẢI THUẬT (Sách dùng trường THCN Hà Nội) NHÀ XUẤT BẢN HÀ NỘI - 2007 ■ Lời giới thiệu A ước ta bước vào thời kỳ công nghiệp hóa, V đại hóa nhằm đưa Việt Nam trở thành nước công nghiệp văn minh, dại Trong nghiệp cách mạng to lớn đó, cơng tác đào tạo nhân lực giữ vai trồ quan trọng Báo cáo Chính trị Ban Chấp hành Trung ương Đảng Cộng sản Việt Nam Đ ại hội Đảng toàn quốc lần thứ IX đ ã ch ỉ rõ: “Phát triển giáo dục đào tạo động lực quan trọng thúc đẩy nghiệp công nghiệp hóa, đại hóa, điều kiện để phát triển nguồn lực người - yếu tố để phát triển xã hội, tăng trưởng kinh tế nhanh yà bền vững” Quán triệt chủ trương, Nghị Đảng Nhà nước nhận thức đắn tầm quan trọng chương trình, giáo trình đối với■việc nâng cao chất lượng đào tạo, theo đ ề nghị Sở Giáo dục Đào tạo Hà N ội, ngày 231912003, ủ y ban nhân dân thành p h ố Hà Nội đ ã Quyết định s ố 5620/QĐ-UB cho phép Sở Giáo dục Đ tạo thực đ ề án biên soạn chương trình, giáo trình trường Trung học chuyên nghiệp (THCN) Hà Nội Quyết định th ể quan tâm sâu sắc Thành ủy, UBND thành p h ố việc nâng cao chất lượng đào tạo phát triển nguồn nhân lực Thủ đô Trên sở chương trình khung Bộ Giáo dục Đ tạo ban hành kinh nghiệm rút từ thực t ế đào tạo, Sở Giáo dục Đào tạo đ ã đạo trường TH CN tổ chức biền soạn chương trình, giáo trình cách khoa học, hệ thống cập nhật kiến thức thực tiễn phù hợp với đối tượng học sinh THCN Hà Nội Bộ giáo trình tài liệu giảng dạy học tập trường THCN Hà Nội, đồng thời tài liệu tham kháo hữu ích cho trường có đào tạo ngành kỹ thuật - nghiệp vụ đông đảo bạn đọc quan tâm đến vấn đ ề hướng nghiệp, dạy nghề Việc tổ chức biên soạn chương trình, giáo trình nhiều hoạt động thiết thực ngành giáo dục đào tạo Thủ đô đ ể kỷ niệm “50 năm giải phóng Thủ ”, “50 năm thành lập ngành ” hướng tới kỷ niệm “1000 năm Thăng Long - Hà N ộ i” Sở Giáo dục Đào tạo Hà Nội chân thành cảm ơn Thành ủy, UBND, sỏ, ban, ngành Thành phố, Vụ Giáo dục chuyền nghiệp Bộ Giáo dục Đào tạo, nhà khoa học, chuyên gia đẩu ngành, giảng viên, nhà quản lý, nhà doanh nghiệp tạo điều kiện giúp đỡ, đóng góp ý kiến, tham gia Hội đồng phản biện, Hội đồng thẩm định Hội đồng nghiệm thu chương trình, giáo trình Đ ây lần Sở Giáo dục Đ tạo Hà N ội tổ chức biên soạn chương trình, giáo trình Dù d ã cố gắng chắn khơng tránh khỏi thiếu sót, bất cập Chúng tơi mong nhận ý kiến đóng góp bạn đọc đ ể bước hoàn thiện giáo trình cấc lần tái sau GIÁM ĐỐC SỞ GIÁO DỰC VÀ ĐÀO TẠO Lời nói đầu r in học viễn thông hai thành phần cốt lõi công nghệ thông tin Trong năm gần đây, nhiều dự án phát triển công nghệ thông tin nước ta đ ã triển khai theo giải pháp tổng th ể tích hợp hạ tầng truyền thơng máy tính vói chương trình tin học ứng dụng Nhu cầu hiểu biết tin học ngày cao không dừng mức người sử dụng mà sâu đ ể làm chủ hệ thống phát triển phần mềm ứng dụng Cấu trúc liệu giải thuật mơn học sở chương trình đào tạo kỹ thuật viên tin học Đ ể tạo điều kiện cho người học làm quen với s ố kiến thức cấu trúc liệu giải thuật xử lý cấu trúc liệu dó, tạo điều kiện cho việc nâng cao thêm kỹ thuật lập trình, phân tích phương pháp giải tốn Giáo trình viết thành chương, bao gồm vấn đê' phải giải • thiết k ế cài đặt giải thuật Các chương 1, 2, b ổ sung thêm s ố nhận thức mối quan hệ cấu trúc liệu giải thuật, vấn đề phân tích thiết k ế giải thuật giải thuật đệ quy Chương 4, 5, giói thiệu s ố cấu trúc liệu giải thuật bản, điển mảng, danh sách, cây, dồ thị Chương giới thiêu xếp tìm kiếm, yêu cầu xử lý p h ổ biến toán ứng dụng tin học Mối chương, kiến thức bản, s ố giải thuật đ ã viết thành chương trình minh họa Các chương trình dược viết ngôn ngữ Pascal c mô theo giải thuật đ ã đưa hoàn toàn đ ã kiểm nghiệm thực máy Hy vọng giáo trình s ẽ giúp cho người học tiếp thu d ễ dàng kiến thức cần thiết, góp phần nâng cao trình độ tin học Xin chân thành cảm ơn ý kiến đóng góp đồng nghiệp, bạn bè q trình biên soạn giáo trình Mặc dù tác giả đ ã cô' gắng song chắn không tránh khỏi thiếu sót Chúng tơi mong muốn nhận ý kiến đóng góp đ ể hồn thiện nội dung giáo trình TÁC GIẢ Bài mớ đẩu Giải thuậta cấu trúc liệu * Giải thuật dãy câu lệnh thao tác số đối tượng Sau số hữu hạn bước cho kết mong muốn Giải thuật phản ánh phép xử lý đối tượng xử lý liệu, chúng biểu diễn thơng tin cần thiết cho máy tính Khơng thể nói tới giải thuật mà không quan tâm tới vấn đề: giảithuật phải tác động liệu Còn liệu xét tới cần phải hiểu: liệu xử lý giải thuật để kết mong muốn Các phần tử liệu có quan hệ với “tổ chức” m ột cách thích hợp việc thực phép xử lý liệu đơn giản, dễ dàng Ta nhận thấy cấu trúc liệu thay đổi dẫn đến giải thuật cần thay đổi theo V í dụ: Giả sử ta có có danh sách đối tượng: đối tượng gồm “Tên hàng, số lượng” (aj,bj) (a 2,b2) ( a ^ b j Viết chương trình cho biết “Tên hàng” máy tính cho ta biết “Số lượng” mặt hàng Đó lóp toán mà phép xử lý phép “Tìm kiếm” Ta thử vài phương pháp: - Cách đơn giản tìm từ đầu đến cuối danh sách trùng tên hàng tìm số lượng; khả xấu cần duyệt hết n đối tượng Do n lớn thời gian - Nếu danh sách xếp (theo thứ tự từ điển chẳng hạn) việc tìm kiếm đơn giản hơn, ta áp dụng giải thuật hiệu trường hợp - Nếu lại tổ chức thêm bảng mục lục dẫn theo chữ “Tên hàng” chắn cần tìm mặt hàng chẳng hạn: “Ti vi”, ta bỏ qua tất mặt hàng mà tên không bắt đầu ký tự ‘T ’; nói m ột cách cụ thể ta tìm đến tất tên hàng có chữ T, sau mặt hàng tìm tên hàng “Ti vi” Như cấu trúc liệu giải thuật có quan hệ mật thiết hai chiều Chính điều dẫn tới cần thiết phải nghiên cứu cấu trúc liệu đôi với việc xác lập giải thuật tác động lên cấu trúc 2.Cấu trúc liệu vấn dề liên quan Ta đề cập tới số vấn đề sau: 2.1 Dữ liệu bao gồm p h ần tử sở ta gọi liệu nguyên tử (Dữ liệu nguyên tử số, từ, ghi) Chúng liên kết lại theo cách khác - Liên kết động - Liên kết tĩnh Lựa chọn cấu trúc liệu thích hợp để tổ chức liệu vào (input) sở xây dựng giải thuật xử lý có hiệu bước quan trọng có tính định Cần ý năm gần đây, mà toán phi số xuất ngày nhiều, với đặc tính phức tạp phương diện liệu, đòi hỏi cần nghiên cứu sâu cấu trúc liệu 2.2 Trong toán phi số loạt phép xử lý xuất như: phép tạo lập huỷ bỏ cấu trúc, phép truy nhập vào phần tử cấu trúc, phép bổ sung loại bỏ phần tử cấu trúc Các phép có tác dụng khác cấu trúc Có phép hữu hiệu với cấu trúc này, không hữu hiệu với cấu trúc khác Vì chọn cấu trúc liệu phải nghĩ phép toán tác động cấu trúc liệu ngược lại 2.3 Cách biểu diễn cấu trúc liệu nhớ gọi cấu trúc lưu trữ Trên sở lưu trữ để thực phép xử lý phải phân biệt cấu trúc liệu cấu trúc lưu trữ tương ứng Có nhiều cách lưu trữ khác với cấu trúc liệu, có nhiều kiểu cấu trúc liệu khác lưu trữ nhớ kiểu cấu trúc lưu trữ Khi đề cập đến cấu trúc lun trữ ta cần phân biệt cấu trúc lưu trữ tương ứng với nhớ - lưu trữ cấu trúc lưu trữ ứng với nhớ - lưu trữ ngoài; chúng có đặc điểm riêng nên kéo theo cách xử lý khác 2.4 Trong ngôn ngữ lập trình có cấu trúc liệu tiền định Ví dụ cấu trúc mảng để tổ chức tập liệu có số lượng định kiểu Nếu cấu trúc liệu tiền định phù hợp với cấu trúc liệu người Writeln ('Mang C' ); List(C,m+n); readln End C h n g tr ìn h s ắ p x ế p k iể u h o n h ậ p h a i đ n g tự n h iê n {Chuong trinh sap xep tep CO cau true bang phuong phap tron tu nhien} Program SXTepCTTN; uses crt; Type Pt=record key:integer; ten :string [30] ; end; tep=file of pt; Var A, B,C:tep; na,nb,nc,SoRun:integer; kt:boolean; al,a2,bl,b2,cl,c2:pt; ( * - _ _ _ _ * ) {Ngoai tep goc can sap xep ky hieu la A, ta can tao them hai tep phu la B va c CO cung cau true voi A} Procedure MoCacTep; var TenTep:string; Begin clrscr; write('Cho ten tep can sap xep' ); reađln(TenTep); Assign(A,tentep); Assign (B,' c :\ tp\ bin\ phui.dat' ); Assign (C/ c:\tp\bin\phu2 dat' ); End; ( * -) {Tep can xem chinh la tep can sap xep va tep 158 da duoc mo} Procedure Xemtep; Begin Reset(A); while not EOF(A) begin read(a,al); writeln(al.key,' end; End; \al.ten); _ * ) {Copy Run tu tep- A sang tep D: Tep D co the la B hoac C} Procedure CopyRun(var D:tep); Begin Repeat al:=a2;write(D, al);na:=na-l; if naa2.Key; end; Until kt; End; (* -*) {Phan phoi cac Run tu A sang B va C} Procedure PhanPhoi; Begin Reset(A);Rewrite (B); Rewrite(C);na:=filesize(A); Read(A,a2); Repeat CopyRun(B); if na>0 then CopyRun (c); Until na0 then begin Read(C,cl); NoiVaoA (C,nc,cl) ; end; end; End; 161 11.GTCTDL Procedure SXTronTN; Begin Repeat PhanPhoi; Tron; Until SoRun=l; End; (* *) BEGIN MoCacTep;Writeln{'Tep truoc sap xep'); XemTep; SxTronTN; Writeln('Tep sau sap xep' );XemTep; Readln; END C h n g trin h tìm k iế m c ó b ổ s u n g tr ê n c â y n h ị p h â n tìm k iế m th e o g iả i th u t B S T Program BST; Uses crt; Type P=Acay; caỵ = record nutgoc :string [20] ; trai,phai:P; end; Var Nutmoi :string [20] ; goc:P; (* - * ) Procedure Xuli(Nut:P); begin write (NutA nutgoc/ - > ' ) ; end; (* ■*) Procedure duyet_truoc(Nut:P); 162 begin if NutONIL then begin Xuli (Nut); duyet_truoc(Nut^.trai); duyet_truoc(NutA phai); end; end; (* *) Procedure duyet_giua(Nut:P) ; begin if NutONIL then begin duyet_giua(NutA trai) ; xuli(Nut); duyet_giua(NutA phai); end; end; ( * *) Procedure duỵet_sau(Nut:P) ; begin if NutONIL then begin duvet_sau(NutA trai); duyet_sau(NutA phai); xuli(Nut); end; end; ( * -— *) Procedure tim(var goc :P); {Tim kìem cay xem CO du lieu cay chua Neu chua thi Chen them vao} begin if goc = NIL then begin \2 6TCTDL- 163 NEW(goc); begin gocA nutgoc :=Nutmoi; gocA trai:=NIL; gocA phai:=NIL; end; end else if goc O n i l then with gocA begin if Nutmoi < nutaoc then tim(gocA trai) else if Nutmoi > nutgoc then tim(gocA phai) else writeln ('Tim thay' ); end; end; ( * _ * ) Procedure in cay (var cnp :p; s :integer) ; var i :integer; Begin i f cnp o n i l t hen with cnpA begin ỉn_cay (trai,s+2); for i:=l to s write(' '); writeln(nutgoc) ; in_cay(phai,s+2); end; End; 164 ( * -*) BEGIN clrscr; writeln ('Chuong trinh duyet cay nhi phart:' ); goc:=nil; repeat write ('Nhap: gia tri nut la de ket thuc nhap:' ); readln(Nutmoi); if length(Nutmoi)>0 then tim(goc); until length(Nutmoi)= 0; writeln;clrscr; writeln('IN CAY NHI PHAN DA SAP XEP' ); in cay (goc, 0) ; readln; writeln('Duyet Truoc : '); duyet_truoc(goc) ; writeln; writeln('Duyet Giua : '); duyet_giua(goc) ; writeln; writeln('Duyet Sau : '); duyet_sau(goc); writeln; readln; END B ài tậ p Cho dãy khoá 50 08 34 06 98 17 83 25 66 42 21 59 62 71 85 76 Hãy minh hoạ ba phương pháp xếp qua dãy khoá theo thứ tự tăng dần , thứ tự giảm dần: - Sắp xếp lựa chọn - Sắp xếp chèn dần - Sắp xếp đổi chỗ (nổi bọt) 165 Hãy sửa lại ba giải thuật để thực xếp theo thứ tự giảm dần - Sắp xếp lựa chọn - Sắp xếp chèn dần - sắp,xếp đổi chỗ (nổi bọt) Với dãy khoá cho minh hoạ hai phương pháp xếp phân đoạn xếp kiểu vun đống Nếu thực xếp theo thứ tự giảm dần đống định nghĩa nào? Với dãy khoá cho thực xếp kiểu hoà nhập hai đường tự nhiên Hãy dựng nhị phân tìm kiếm theo giải thuật BST dãy khoá cho Hãy đánh dấu đường thực tìm kiếm khố 42 83 166 TÀI LIỆU T H A M K H Ả O C ấu trúc liệu giải thuật, Đỗ Xuân Lôi, Nhà xuất Khoa học Kỹ thuật Câu trúc liệu giải thuật, Đinh Mạnh Tường, Nhà xuất Khoa học K ỹ thuật T h u ậ t toán, Nguyễn Xuân Huy, Nhà xuất Thống kê Giáo trình đồ thị, Nguyễn Đức Nghĩa - Trường Đại học Bách khoa Hà Nội Tốn rịi rạc ứng dụng tin học, người dịch Phạm Thiều L ậ p trình nâng cao Pascal với cấu trúc liệu, Larry N Hoff, Sanford Leestma, dịch Lê M inh Trung S ắ p xếp tìm kiếm liệu máy tính điện tử, Đỗ Xuân Lôi - Đại học Bách khoa Hà Nội Ttốn rời rạc, Nguyễn Đức Nghĩa, Nguyễn Tơ Thành, Nhà xuất Giáo dục C + + lập trình hướng đối tượng, GS Phạm Văn Ất, N hà xuất Khoa học Kỹ thuật 10 L ậ p trình c++, PTS Dương Tử Cường, Nhà xuất Khoa học Kỹ thuật 11 B i tập Pascal, Dương Viết Thắng chủ biên - Đại học Bách khoa Hà Nội 12 A lgorithm s + data structures = programs , Niklaus Wirth 167 M Ụ C L Ụ« C m Lời nói đ ầ u Bài mở đầu "I Giải thuật cấu trúc liệu Cấu trúc liệu vấn đề liên quan Ngôn ngữ diễn đạt giải thuật Chương THIẾT KẾ VÀ PHÂN TÍCH GIẢI THUẬT 11 I Từ tốn đến chương trình 11 II Phân tích giải thuật ^ III Độ phức tạp tính tốn giải thuật ^ IV Xác định độ phức tạp tính tốn 21 Chương ĐỆ QUY VÀ GIẢI THUẬT ĐỆ QUY 2f I Khái niệm đệ quy 2í II Giải thuật đệ quy thủ tục đệ quy III Thiết kế giải thuật đệ quy 2/ IV Hiệu lực đệ quy 3C V Một số toán áp dụng giải thuật đệ quy 31 Chương MẢNG VÀ DANH SÁCH 3Í I Các khái niệm 3Í II Cấu trúc lưu trữ mảng 4( m Lưu trữ k ế tiếp danh sách tuyến tính 4] IV Stack hay danh sách kiểu ngăn xếp : 4; V Queue hay danh sách kiểu hàng đợi Chương DANH SÁCH MÓC N ố i I Danh sách nối đơn 5Í 5S II Danh sách nối vòng & 168 III Danh sách nối kép 63 IV Stack Queue móc nối 69 V Một số chưgng trình minh hoạ 69 Chương c ầ y ' 90 I Định nghĩa khái niêm 90 II Cây nhị phân 92 III Phép duyệt nhị phân 96 IV Một số chương trình minh hoạ 104 Chương Đ THỊ VÀ MỘT VÀI CẤUTRÚC PHI TUYÊN 111 I Định nghĩa khái niệm đồ thị 111 II Biểu diễn đồ thị 113 III Phép duyệt đồ thị 115 IV Cây khung khung với giá cực tiểu 118 V Áp dụng 122 Chương SẮP XẾP VÀ TÌM KIÊM 134 I Sắp xếp 134 II Tim kiếm 146 III Một số chương trình minh hoạ 150 Tài liệu tham k h ả o 167 169 NHÀ XUẤT BẢN HÀ NỘI SỐ - T Ố N G DƯY TÂ N , Q U Ậ N H O À N KIẾM, H À N Ộ I Đ iện thoại: (04)8.252916 Fax: (04)9.289143 GIÁ O TRÌNH CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT NHÀ XUẤT BẢN HÀ NỘI - 2007 Chịu trách nhiệm xuất bản: NGUYỄN KHẮC OÁNH Biên rập: NGUYỄN HUYNH MAI Bìa: TRẦN QUANG Kỹ thuật vi tính : HOÀNG LAN HƯƠNG Sửa in: PHẠM TRANG THỰC TẬP QUA BAN HÀN THỰC TẬP QUA BAN NGUỘI THỰC TẬP QUA BAN MÁY AN TOÀN LAO ĐỘNG CHUYÊN NGÀNH SCKTTB AN TOÀN LAO ĐỘNG CHUYÊN NGÀNH ĐIỆN VẬT LIỆU ĐIỆN ĐO LƯỜNG ĐIỆN Cơ SỞ KỸ THUẬT ĐIỆN ĐIỆN TỬ CÔNG SUẤT 10 MÁY CÔNG CỤ CẮT GỌT 11 ĐỔ GÁ 12 CÔNG NGHỆ CHẾ TẠO MÁY 13 TỔ CHỨC SẢN XUẤT 14 MÁY VÀ LẬP TRÌNH CNC 15 LÝ THUYẾT CHUYÊN MÔN TIỆN 16 SỬA CHỮA MÁY CÔNG cụ 17 MÁY ĐIỆN 18 TRUYỀN ĐỘNG ĐIỆN 19 KHÍ CỤ ĐIỆN - TRANG BỊ ĐIỆN 20 CUNG CẤP ĐIỆN 21 KỸ THUẬT ĐIỀU KHIỂN LOGÍC VÀ ỨNG DỤNG 22 HƯỚNG DẪN Đồ ÁN CÔNG NGHỆ CTM 23 THỰC HÀNH CẮT GỌT KIM LOẠI 24 THỰC HÀNH SỬA CHỮA MÁY CÔNG cụ 25 THÍ NGHIỆM KỸ THUẬT ĐIỆN 26 THÍ NGHIỆM MÁY ĐIỆN 27 THỰC TẬP ĐIỆN c BẢN 28 TIẾNG ANH CHUYÊN NGÀNH SCKTTB 29 TIẾNG ANH CHUYÊN NGÀNH ĐIỆN 30 QUẢN TRỊ DOANH NGHIỆP 31 HƯỚNG DẪN ĐỒ ÁN TRÁNG BỊ ĐIỆN 32 HƯỚNG DẪN Đồ ÁN CUNG CẤP ĐIỆN 33 Cơ SỞ THIẾT KỂ MÁY 34 ĐỒ ÁN Cơ SỞ THIẾT KỂ MÁY (ĐỒ ÁN CHI TIẾT MÁY) 35 CẤU TRÚC Dữ LIỆU VÀ GIẢI THUẬT 36 LÝ THUYẾT TRUYỀN TIN 37 Cơ SỞ KỸ THUẬT TRUYỀN s ố LIỆU 38 ASSEMBLY 39 THỰC TẬP CHUYÊN NGÀNH ĐIỆN 40 THỰC HÀNH PLC 41 FOXPRO ... SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ NỘI * • * NGUYỄN THÁI HÀ GIÁO TRÌNH CẤU TRÚC DÍ LIỆUVÀ GIẢI THUẬT (Sách dùng trường THCN Hà Nội) NHÀ XUẤT BẢN HÀ NỘI - 2007 ■ Lời giới thiệu A ước ta bước vào thời... ngữ lập trình có cấu trúc liệu tiền định Ví dụ cấu trúc mảng để tổ chức tập liệu có số lượng định kiểu Nếu cấu trúc liệu tiền định phù hợp với cấu trúc liệu người dùng tốt Nhưng cấu trúc liệu tiền... ứng dụng Cấu trúc liệu giải thuật mơn học sở chương trình đào tạo kỹ thuật viên tin học Đ ể tạo điều kiện cho người học làm quen với s ố kiến thức cấu trúc liệu giải thuật xử lý cấu trúc liệu dó,

Ngày đăng: 18/04/2021, 11:57

Xem thêm:

TỪ KHÓA LIÊN QUAN