TRƢỜNG CAO ĐẲNG NGHỀ CÔNG NGHIỆP HÀ NỘI Chủ biên: Vũ Thị Kim Phƣợng Đồng tác giả: Nguyễn Thị Nhung GIÁO TRÌNH CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT (Lưu hành nội bộ) Hà Nội năm 2012 Tuyên bố bản quyền Giáo trình này sử dụng làm tài liệu giảng dạy nội bộ trong trƣờng cao đẳng nghề Công nghiệp Hà Nội Trƣờng Cao đẳng nghề Công nghiệp Hà Nội không sử dụng và không cho phép bất kỳ cá nhân hay tổ chức nào sử dụng giáo trình này với mục đích kinh doanh. Mọi trích dẫn, sử dụng giáo trình này với mục đích khác hay ở nơi khác đều phải đƣợc sự đồng ý bằng văn bản của trƣờng Cao đẳng nghề Công nghiệp Hà Nội 0 LỜI NÓI ĐẦU Giáo trình “Cấu trúc dữ liệu và giải thuật” biên soạn dựa theo đề cƣơng chƣơng trình môn học Cấu trúc dữ liệu và giải thuật thuộc chƣơng trình đào tạo Cao đẳng nghề Quản trị mạng của trƣờng Cao đẳng nghề Công nghiệp Hà nội, ban hành năm 2011, với số tiết là 90h. Giáo trình gồm 7 chƣơng, đề cập đến những kiến thức cơ bản về cấu trúc dữ liệu và các giải thuật có liên quan. Từng chƣơng trong giáo trình cũng cố gắng gắn kết và phát triển nội dung có liên quan ở các môn học trƣớc hay ở các chƣơng trong giáo trình với nhau, giúp sinh viên nâng cao về kỹ thuật lập trình, về chọn cấu trúc dữ liệu phù hợp và xây dựng các giải thuật giải các bài toán cơ bản.
Giáo trình cố gắng trình bày để phục vụ cho đối tƣợng sinh viên năm thứ hai vừa học qua một ngôn ngữ lập trình. Trong mỗi chƣơng đều có ví dụ diễn giải làm rõ những định nghĩa, khái niệm và đặc biệt với mỗi giải thuật đều có mô tả và cài đặt giải thuật hoặc ví dụ áp dụng. Cuối mỗi chƣơng là những câu hỏi về lý thuyết và bài tập ở mức độ dễ, vừa, giúp sinh viên củng cố kiến thức. Cùng với giáo trình này, giáo viên có thể yêu cầu sinh viên tự đọc một số phần, nhƣ vậy sẽ có nhiều thời gian giảng kỹ những phần chính, khó hoặc luyện đƣợc nhiều bài tập.
Bên cạnh đó cũng giúp sinh viên rèn luyện khả năng tự học của bản thân. Nhóm tác giả chân thành cảm ơn những đồng nghiệp trong khoa Công nghệ thông tin trƣờng Cao đẳng nghề Công nghiệp Hà nội đã tham gia xây dựng đề cƣơng chi tiết giáo trình, đọc bản thảo và đóng góp những ý kiến quý báu. Nhóm tác giả mong muốn nhận đƣợc những ý kiến đóng góp của bạn đọc để nâng cao chất lƣợng giáo trình cho lần tái bản sau. Mọi ý kiến đóng góp xin gửi về: Vũ Thị Kim Phượng Email: vkphuong2010@gmail.com Hà Nội, ngày.năm 2012 Tham gia biên soạn giáo trình 1.
Vũ Thị Kim Phƣợng – Chủ biên 2. Nguyễn Thị Nhung – Thành viên 1 MỤC LỤC MỤC TIÊU CỦA MÔN HỌC. 6 NỘI DUNG CỦA MÔN HỌC. 6 CHƢƠNG 1:TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT.
Khái niệm cấu trúc dữ liệu và giải thuật, cấu trúc lưu trữ và cấu trúc dữ liệu. Khái niệm cấu trúc dữ liệu và giải thuật. Cấu trúc dữ liệu và cấu trúc lƣu trữ. Cấu trúc dữ liệu.
Các kiểu dữ liệu cơ bản. Các kiểu dữ liệu cấu trúc. Các kiểu dữ liệu trừu tƣợng. Các tiêu chu n đánh giá cấu trúc dữ liệu.
Các thao tác cơ bản trên một cấu trúc dữ liệu .Giải thuật và đánh giá độ phức tạp của giải thuật. Biểu diễn giải thuật. Bằng ngôn ngữ tự nhiên. Bằng lƣu đồ giải thuật.
Bằng ngôn ngữ diễn đạt giải thuật (mã giả). Một số đặc trƣng của giải thuật. Đánh giá độ phức tạp của giải thuật. Độ phức tạp tính toán của giải thuật.
Xác định độ phức tạp tính toán của giải thuật. 21 CHƢƠNG 2: ĐỆ QUI VÀ GIẢI THUẬT ĐỆ QUI. Khái niệm đệ qui. Giải thuật đệ qui và chương trình đệ qui.
Giải thuật đệ qui. Chƣơng trình con đệ qui. Đặc điểm của một chƣơng trình con đệ qui:. Thiết kế giải thuật đệ qui.
Giải thuật đệ qui đơn giản. Nguyên tắc thiết kế một giải thuật đệ qui:. Nguyên tắc thực hiện một hàm đệ qui trong máy tính:. Nhận xét giải thuật đệ qui.
33 CHƢƠNG 3: DANH SÁCH. Danh sách và các phép toán cơ bản trên danh sách. Khái niệm danh sách tuyến tính. Cài đặt danh sách theo cấu trúc mảng.
Danh sách liên kết. Cài đặt theo cấu trúc danh sách liên kết đơn. Cài đặt theo cấu trúc danh sách liên kết kép. Cài đặt theo cấu trúc danh sách liên kết nối vòng.
Cài đặt danh sách theo các cấu trúc đặc biệt (ngăn xếp, hàng đợi) 68 2. Các thao cơ bản của Stack. Cài đặt Stack bằng mảng. Cái đặt Stack bằng danh sách liên kết đơn.
Ứng dụng của Stack. Các thao cơ bản của Queue. Cài đặt Queue bằng mảng. Cái đặt Queue bằng danh sách liên kết đơn.
Ứng dụng của Queue. 83 CHƢƠNG 4: CÁC PHƢƠNG PHÁP SĂP XẾP CƠ BẢN……. Định nghĩa bài toán sắp xếp. Phương pháp sắp xếp chèn (Insertion sort).
Ý tƣởng giải thuât Insertion sort. Mô tả giải thuật. Cài đặt giải thuật. Biểu diễn giải thuật.
Phương pháp sắp xếp chọn (Selection sort). Ý tƣởng giải thuật Selection sort. Mô tả giải thuật. Cài đặt giải thuật.
Biểu diễn giải thuật. Phương pháp sắp xếp đổi chỗ (Interchange sort). Ý tƣởng của giải thuật Interchange sort. Mô tả giải thuật.
Cài đặt giải thuật. Biểu diễn giải thuật. Phương pháp sắp xếp nổi bọt (Bubble sort). Ý tƣởng giải thuật Bubble sort.
Mô tả giải thuật. Cài đặt giải thuật. Biểu diễn giải thuật .Phương pháp sắp xếp nhanh (Quick sort). Ý tƣởng giải thuật Quick sort.
Mô tả giải thuật. Cài đặt giải thuật. Biểu diễn giải thuật. 100 CHƢƠNG 5:TÌM KIẾM.
Bài toán tìm kiếm. Tìm kiếm tuyến tính. Ý tƣởng giải thuật. Mô tả giải thuật.
Cài đặt giải thuật. Biểu diễn giải thuật.Tìm kiếm nhị phân. Ý tƣởng giải thuật. Mô tả giải thuật.
Cài đặt giải thuật. Biểu diễn giải thuật. 107 CHƢƠNG 6: CÂY. Khái niệm về cây.
Khái niệm cây. Một số khái niệm của cây. Cây nhị phân. Khái niệm cây nhị phân.
Một số tính chất của cây nhị phân. Biểu diễn cây nhị phân. Lƣu trữ cây bằng véc tơ kế tiếp (lƣu trữ kế tiếp):. Lƣu trữ cây bằng danh sách liên kết: .Các phép duyệt cây nhị phân.
Duyệt cây theo thứ tự trƣớc (Preorder traversal). Duyệt cây theo thứ tự giữa (Inorder traversal). Duyệt cây theo thứ tự sau (Postorder traversal). 118 CHƢƠNG 7: ĐỒ THỊ.
Khái niệm về đồ thị. Biểu diễn đồ thị. Biểu diễn bằng ma trận kề. Biểu diễn đồ thị bằng danh sách kề.
Các phép duyệt đồ thị. Duyệt theo chiều sâu (Depth First Search). Duyệt theo chiều rộng (Bredth First Search). 134 Biến con trỏ và cấp phát động.
Khái niệm biến tĩnh, biến động và biến con trỏ:. Khai báo biến con trỏ :. Các phép toán trên biến con trỏ. Toán tử địa chỉ &:.
Toán tử tham chiếu *:. Phép chuyển (ép) kiểu:. Toán tử cộng, trừ con trỏ với một số nguyên và phép tăng giảm 140 3. Toán tử so sánh:.
Hằng con trỏ:. Cấp phát vùng nhớ cho biến con trỏ:. Mối liên quan giữa con trỏ, hàm, mảng, chuỗi và cấu trúc. Biến con trỏ là tham số hình thức của hàm.
Biến con trỏ là kiểu kết quả hàm trả về :. Sự tƣơng quan giữa con trỏ và mảng. Con trỏ và chuỗi ký tự. Con trỏ và kiểu cấu trúc.
162 1) Chương trình quản lý điểm sinh viên được cài đặt bằng danh sách liên kết đơn. 162 2) Chương trình chuyển đổi một số hệ 10 sang hệ 2. Sử dụng các thao tác của Stack cài đặt bằng danh sách liên kết đơn để viết chương trình 170 3) Chương trình cài đặt các giải thuật sắp xếp và tìm kiếm với danh sách sinh viên được cài đặt bằng mảng. 173 TÀI LIỆU THAM KHẢO.
184 5 MỤC TIÊU: Kiến thức: Trình bày đƣợc các khái niệm về cấu trúc dữ liệu và giải thuật, kiểu dữ liệu, kiểu dữ liệu trừu tƣợng (danh sách, cây, đồ thị). Trình bày đƣợc các phép toán cơ bản tƣơng ứng với các cấu trúc dữ liệu và các giải thuật. Kỹ năng: Biết cách tổ chức dữ liệu hợp lý, khoa học cho một chƣơng trình đơn giản. Biết áp dụng thuật toán hợp lý đối với cấu trúc dữ liệu tƣơng ứng để giải quyết bài toán trên máy tính.
Áp dụng đƣợc các phƣơng pháp sắp xếp, tìm kiếm cơ bản trong các bài toán khi cần. NỘI DUNG: Thời gian Số Kiểm tra* Tên chƣơng, mục Tổng Lý Thực TT (LT số thuyết hành hoặcTH) I Tổng quan về Cấu trúc dữ liệu 6 4 2 0 và giải thuật Khái niệm cấu trúc dữ liệu và 2 1 1 giải thuật. Mối quan hệ giữa CTDL và giải thuật. Các kiểu dữ liệu cơ bản 0.5 0 Các kiểu dữ liệu có cấu trúc 0.5 0 Các kiểu dữ liệu trừu tƣợng 1 1 0 Giải thuật và đánh giá độ phức 2 1 1 tạp của giải thuật.
II Đệ qui và giải thuật đệ qui 6 3 2 1 Khái niệm đệ qui 0.5 0 Giải thuật đệ qui và chƣơng trình 0.5 0 đệ qui Các bài toán đệ qui căn bản 5 2 2 1 6 III Danh sách 30 15 14 1 Danh sách và các phép toán cơ 0 0 2 2 bản trên danh sách Cài đặt danh sách theo cấu trúc 4 2 2 0 mảng Cài đặt danh sách theo cấu trúc 12 6 6 0 danh sách liên kết (đơn, kép) Cài đặt danh sách theo các cấu 12 5 6 1 trúc đặc biệt (ngăn xếp, hàng đợi) IV Các phƣơng pháp sắp xếp cơ 24 12 11 1 bản Định nghĩa bài toán sắp xếp. 1 1 0 0 Phƣơng pháp chọn (Selection 4 2 2 0 sort). Phƣơng pháp chèn (Insertion 4 2 2 0 sort). Phƣơng pháp đổi chỗ 4 2 2 0 (Interchange sort).
Phƣơng pháp nổi bọt (Bubble 4 2 2 0 sort). Phƣơng pháp sắp xếp nhanh 7 3 3 1 (Quick sort). 6 2 3 1 Tìm kiếm tuyến tính. 2 1 1 0 Tìm kiếm nhị phân.
10 5 4 1 Khái niệm về cây và cây nhị 2 2 0 0 phân. Biểu diễn cây nhị phân và cây 0 4 2 2 tổng quát. Bài toán duyệt cây nhị phân. 8 4 4 0 Khái niệm về đồ thị.