Cấu trúc dữ liệu và thuật toán 2 trương chí tín

94 852 1
Cấu trúc dữ liệu và thuật toán 2 trương chí tín

Đ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

TRƯỜNG ĐẠI HỌC ĐÀ LẠT GIÁO TRÌNH CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN Trương Chí Tín Giáo trình cấu trúc liệu thuật toán -2– MỤC LUÏC MUÏC LUÏC LỜI NÓI ĐẦU CHƯƠNG I .7 I/ GIỚI THIỆU TẬP TIN I.1 Định nghóa tập tin (file) .7 I.2 Caùc thao tác sơ cấp tập tin C++ .7 A/ Các phương thức dùng chung cho hai kiểu tập tin văn nhị phân .7 1) Mở tập tin .8 2) Đóng tập tin 3) Kiểm tra cuối tập tin 4) Kiểm tra trạng thái đọc, ghi liệu: B/ Các phương thức dùng cho tập tin kiểu văn 1/ Đọc chuỗi ký tự: 2/ Ghi chuỗi ký tự: 3/ Ghi ký tự 10 4) Đọc ký tự .10 C/ Các phương thức dùng cho tập tin kiểu nhị phân 10 1/ Ghi số bytes: 10 2/ Đọc số bytes: 10 3/ Chuyển trỏ định vị việc ghi file: 10 4/ Chuyển trỏ định vị việc đọc file: 11 I.3 Toå chức tập tin .11 II CAÙC THAO TÁC CƠ BẢN TRÊN FILE 13 II.1 Tập tin 13 II.2 Tập tin mục .16 III SẮP XẾP TRÊN FILE .23 III.1 Trộn trực tiếp (Straight Merge) 23 III.2 Trộn tự nhiên (Natural Merge) 27 III.3 Trộn nhiều đường cân (Balanced Multiway Merge) 29 CHƯƠNG II: CẤU TRÚC CÂY 31 I ĐỊNH NGHĨA VÀ CÁC KHÁI NIỆM CƠ BẢN 31 I.1 Định nghóa caây 31 I.2 Các khái niệm khaùc 31 II CÂY NHỊ PHÂN 33 II.1 Định nghóa: nhị phân (có thứ tự) mà số lớn nút nút 33 II.2 Vài tính chất nhị phân 33 II.3 Biểu diễn nhị phaân 34 II.4 Duyệt nhị phân 35 II.4.1 Định nghóa: 35 II.4.2 Các thuật toán duyệt nhị phân 35 II.4.3 Caøi đặt thuật toán duyệt qua nhị phân LNR 36 Trương Chí Tín Khoa Toán - Tin Giáo trình cấu trúc liệu thuật toán -3– II.5 Một cách biểu diễn khác nhị phân 38 II.7 Xây dựng nhị phân cân hoàn toàn 39 II.7.1 Định nghóa: 39 II.7.2 Xây dựng nhị phân cân hoàn toàn 39 III.CÂY NHỊ PHÂN TÌM KIẾM (BST) 40 III.1 Định nghóa nhị phân tìm kiếm (BST) 40 III.2 Tìm kiếm phần tử BST 41 III.2.1 Thuật toán tìm kiếm dạng đệ qui: .41 III.2.2 Thuaät toán tìm kiếm dạng lặp: 41 III.3 Chèn phần tử vào BST, xây dựng BST 42 III.3.1 Thao tác chèn nút Item vào BST (dạng lặp): 43 III.3.2 Thủ tục chèn nút Item vào BST (dạng đệ qui): 43 III.3.3 Xây dựng BST .44 III.4 Phương pháp xếp BST 44 III.5 Xóa phần tử khỏi BST, hủy nhị phân .45 IV CÂY NHỊ PHÂN TÌM KIẾM CÂN BẰNG .48 IV.1 Định nghóa 48 IV.2 Chiều cao cân 49 IV.3 Chæ số cân việc cân lại AVL 50 IV.4 Cheøn phần tử vào AVL 56 IV.5 Xóa phần tử khỏi AVL 57 CHƯƠNG III: B - CAÂY 60 I ĐẶC ĐIỂM CÂY NHIỀU NHÁNH 60 II ĐỊNH NGHĨA B – CÂY (bậc n) 61 III TÌM KIẾM MỘT PHẦN TỬ TRÊN B - CAÂY 61 IV THÊM MỘT PHẦN TỬ VÀO B - CAÂY 63 Quá trình tìm kiếm thêm phần tử vào B - 64 IV.1 Giải thuật tìm thêm phần tử vào B - 64 IV.2 Giải thuật xây dựng B - caây 65 V XÓA MỘT PHẦN TỬ KHỎI B - CAÂY .67 V.1 Hai tình loại bỏ khóa B-cây .67 V.2 Giải thuật loại bỏ khóa B-cây .68 CHƯƠNG IV: BẢNG BĂM 72 I.ĐẠT VẤN ĐỀ, MỤC ĐÍCH, Ý NGHĨA 72 II PHƯƠNG PHÁP BIẾN ĐỔI KHÓA 72 H : K → A 72 III HÀM BIẾN ĐỔI KHÓA (hàm băm) 73 H[k] = k mod M 73 IV GIẢI QUYẾT SỰ ĐỤNG ĐỘ 75 IV.1 Phương pháp băm liên kết 75 IV.1.1 Phương pháp băm liên kết trực tiếp 75 IV.1.2 Phương pháp băm liên kết kết hợp .77 IV.2 Băm theo phương pháp địa mở 78 IV.2.1 Phương pháp băm (thử) tuyến tính 79 IV.2.2 Phương pháp băm (thử) baäc hai 80 Trương Chí Tín Khoa Toán - Tin Giáo trình cấu trúc liệu thuật toán -4– IV.2.3 Phương pháp băm kép 81 BÀI TẬP “CẤU TRÚC DỮ LIỆU & THUẬT TOÁN 2” 85 Bài tập chương (File) 85 Bài tập chương (Cấu trúc caây) .88 Bài tập chương (B - cây) .91 Bài tập chương (Bảng băm) 91 TÀI LIỆU THAM KHẢO .93 Trương Chí Tín Khoa Toán - Tin Giáo trình cấu trúc liệu thuật toán -5– LỜI NÓI ĐẦU Giáo trình nhằm cung cấp cho sinh viên kiến thức nâng cao cấu trúc liệu thuật toán có liên quan Để nắm bắt kiến thức trình bày giáo trình, sinh viên cần nắm kiến thức tin học đại cương, kỹ thuật lập trình, nhập môn cấu trúc liệu thuật toán Các kiến thức tạo điều kiện cho sinh viên học tiếp kiến thức kỹ thuật lập trình nâng cao, đồ họa, lập trình hệ thống, trí tuệ nhân tạo, Nội dung giáo trình gồm chương: - Chương 1: Giới thiệu thao tác file C++, kiểu file mục - Chương 2: Giới thiệu loại cấu trúc liệu động khác thao tác nhị phân, nhiều nhánh đặc biệt nhị phân tìm kiếm, AVL - Chương 3: Trình bày loại nhiều nhánh đặc biệt B – Nó có nhiều ứng dụng việc lưu trữ tìm kiếm liệu lớn - Chương 4: Giới thiệu phương pháp tìm kiếm hiệu liệu lớn dựa vào bảng băm: phương pháp băm liên kết, băm theo địa mở Chắn chắn giáo trình nhiều khiếm khuyết, tác giả mong muốn nhận biết ơn ý kiến q báu đóng góp đồng nghiệp bạn đọc để giáo trình hoàn thiện mặt nội dung hình thức lần tái sau Đà lạt, 06/2002 Tác giả Trương Chí Tín Khoa Toán - Tin Giáo trình cấu trúc liệu thuật toán Trương Chí Tín -6– Khoa Toán - Tin Giáo trình cấu trúc liệu thuật toán -7– CHƯƠNG I I/ GIỚI THIỆU TẬP TIN I.1 Định nghóa tập tin (file) Tập tin tập thông tin đối tượng có quan hệ với nhau, lưu giữ thành đơn vị nhớ Trên thực tế, ta thường cần dùng đến tập tin để lưu lâu dài thông tin với số lượng lớn Các phương pháp xếp tìm kiếm giới thiệu giáo trình “Cấu trúc liệu thuật toán 1” áp dụng lượng liệu không lớn lưu giữ nhớ I.2 Các thao tác sơ cấp tập tin C++ Ta xét hai kiểu tập tin ngôn ngữ C++: tập tin nhị phân tập tin văn - Tập tin nhị phân: liệu ghi tập tin theo bytes nhị phân giống chúng lưu trữ nhớ chúng không bị biến đổi trình nhập xuất Khi đọc đến cuối tập tin ta nhận mã kết thúc tập tin EOF - Tập tin văn bản: tập tin lưu trữ từ dòng Nó khác tập tin kiểu nhị phân xử lý ký tự chuyển dòng ký tự kết thúc tập tin văn thao tác đọc ghi C++ ngôn ngữ phục vụ cho phương pháp lập trình hướng đối tượng Trong phương pháp này, khái niệm quan trọng lớp Có thể xem lớp công cụ để lưu trữ đối tượng thông qua cấu trúc liệu để biểu diễn chúng phương thức thao tác chúng Khi làm việc với tập tin C++, thao tác tập tin phương thức thuộc lớp ifstream, ofstream, fstream, ios A/ Các phương thức dùng chung cho hai kiểu tập tin văn nhị phân Trương Chí Tín Khoa Toán - Tin Giáo trình cấu trúc liệu thuật toán -8– 1) Mở tập tin * Trước làm việc với tập tin (đọc hay ghi) ta phải mở để nhận tên (tên file thực tế nằm đóa), thực số việc kiểm tra phân tích cú pháp, trao đổi với hệ điều hành tạo tên nội đại diện (biến file hình thức) để dùng sau việc đọc hay ghi lên tập tin Tên nội trỏ (gọi trỏ tập tin), trỏ tới cấu trúc chứa thông tin tập tin, chẳng hạn như: vị trí đệm file, vị trí byte đệm, tập tin đọc hay ghi, nối thêm, * Khai báo mở tập tin theo cú pháp sau: fstream BienFileHinhThuc(const char *FileName, int mode); FileName tên tập tin có kiểu xâu ký tự, mode nhận số giá trị sau (và chúng nối kết toán tử logic bit ¦ ): ios::in: mở tập tin để đọc Nếu tập tin chưa tồn bị lỗi Phần chọn bỏ qua thay lớp fstream ifstream ios::out: mở tập tin để ghi Nếu tập tin tồn bị xóa Phần chọn bỏ qua thay lớp fstream ofstream ios::app: mở tập tin để ghi bổ sung Nếu tập tin chưa tồn tạo tập tin ios::binary: mở tập tin theo kiểu nhị phân Nếu phần tập tin mở theo kiểu văn * Chú ý: - Nếu mở tập tin chưa tồn để ghi hay nối thêm tập tin tạo - Mở tập tin có để ghi làm cho nội dung cũ bị trước ghi mới! - Mở tập tin chưa có để đọc sinh lỗi - Nếu có lỗi mở tập tin BienFileHinhThuc nhận giá trị NULL * Ví dụ: Khai báo char TenFile[] = “Tam.dat”; fstream f(TenFile, ios::in ¦ios::out ¦ ios::binary); if (!f) cout

Ngày đăng: 09/05/2014, 18:29

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • LỜI NÓI ĐẦU

  • CHƯƠNG I

    • I/. GIỚI THIỆU TẬP TIN

      • I.1. Định nghĩa tập tin

      • I.2. Các thao tác cơ cấp trên tập tin C++

        • A/. Các phương thức dùng chung cho cả hai kiểu tập tin văn bản và nhị phân

        • 1. Mở tập tin

        • 2. Đóng tập tin

        • 3. Kiểm tra cuối tập tin

        • 4. Kiểm tra trạng thái đọc, ghi dữ liệu

        • B/. Các phương thức dùng cho tập tin kiểu văn bản

        • 1. Đọc 1 chuỗi ký tự

        • 2. Ghi 1 chuỗi ký tự

        • 3. Ghi 1 ký tự

        • 4. Đọc ký tự

        • C/. Các phương thức dùng cho tập tin kiểu nhị phân

        • 1. Ghi 1 số bytes

        • 2. Đọc 1 số bytes

        • 3. Chuyển con trỏ định vị việc ghi trong file

        • 4. Chuyển con trỏ định vị việc đọc trong file

        • I.3. Tổ chứctập tin

        • II. CÁC THAO TÁC CƠ BẢN TRÊN FILE

          • II.1. Tập tin tuần tự

Tài liệu cùng người dùng

Tài liệu liên quan