tailieunhanh - Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3.1 - Trần Minh Thái
Chương trang bị cho người học những kiên thức về danh sách liên kết đơn trong cấu trúc dữ liệu và giải thuật. thông qua chương học này, các bạn có thể nắm vững khái niệm về kiểu dữ liệu tĩnh và động, nắm vững cách tổ chức dữ liệu động bằng danh sách liên kết và minh họa được các thao tác xử lý trên danh sách liên kết đơn, cài đặt minh họa được các thao tác của danh sách đơn bằng ngôn ngữ C/C++. | Chương . Danh sách liên kết đơn Trần Minh Thái Email: minhthai@ Website: Cập nhật: ngày 20 tháng 10 năm 2012 1 Mục tiêu Nắm vững khái niệm về kiểu dữ liệu tĩnh và động Nắm vững cách tổ chức dữ liệu động bằng danh sách liên kết và minh họa được các thao tác xử lý trên danh sách liên kết đơn Cài đặt minh họa được các thao tác của danh sách đơn bằng ngôn ngữ C/ C++ 2 Vấn đề kiểu dữ liệu tĩnh 3 1 2 3 4 5 6 7 8 10 5 7 3 9 2 15 1 ? Làm sao để chèn thêm số 6 vào vị trí 5 của mảng 6 3 Vấn đề kiểu dữ liệu tĩnh 4 1 2 3 4 5 6 7 8 9 10 5 7 3 9 2 15 1 6 Bổ sung thêm Giả sử cần thêm tiếp 1 phần tử ? 4 Bài tập Hãy cài đặt hàm (bằng ngôn ngữ C/C++) chèn một phần tử có giá trị x vào vị trí vt trong mảng số nguyên a, kích thước n, theo mẫu hàm như sau: void ChenX(int a[], int &n, int x, int vt); 5 Vấn đề kiểu dữ liệu tĩnh ? Làm sao để xóa phần tử 9 6 1 2 3 4 5 6 7 8 10 5 7 3 9 2 15 1 6 Vấn đề kiểu dữ liệu tĩnh 7 1 2 3 4 5 6 7 8 10 5 7 3 9 2 15 1 7 Bài tập Hãy cài đặt . | Chương . Danh sách liên kết đơn Trần Minh Thái Email: minhthai@ Website: Cập nhật: ngày 20 tháng 10 năm 2012 1 Mục tiêu Nắm vững khái niệm về kiểu dữ liệu tĩnh và động Nắm vững cách tổ chức dữ liệu động bằng danh sách liên kết và minh họa được các thao tác xử lý trên danh sách liên kết đơn Cài đặt minh họa được các thao tác của danh sách đơn bằng ngôn ngữ C/ C++ 2 Vấn đề kiểu dữ liệu tĩnh 3 1 2 3 4 5 6 7 8 10 5 7 3 9 2 15 1 ? Làm sao để chèn thêm số 6 vào vị trí 5 của mảng 6 3 Vấn đề kiểu dữ liệu tĩnh 4 1 2 3 4 5 6 7 8 9 10 5 7 3 9 2 15 1 6 Bổ sung thêm Giả sử cần thêm tiếp 1 phần tử ? 4 Bài tập Hãy cài đặt hàm (bằng ngôn ngữ C/C++) chèn một phần tử có giá trị x vào vị trí vt trong mảng số nguyên a, kích thước n, theo mẫu hàm như sau: void ChenX(int a[], int &n, int x, int vt); 5 Vấn đề kiểu dữ liệu tĩnh ? Làm sao để xóa phần tử 9 6 1 2 3 4 5 6 7 8 10 5 7 3 9 2 15 1 6 Vấn đề kiểu dữ liệu tĩnh 7 1 2 3 4 5 6 7 8 10 5 7 3 9 2 15 1 7 Bài tập Hãy cài đặt hàm (bằng ngôn ngữ C/C++) xóa phần tử có giá trị x (nếu có) trong mảng số nguyên a, kích thước n (giả sử giá trị các phần tử trong mảng không trùng nhau), theo mẫu hàm như sau: void XoaX (int a[], int &n, int x); 8 Vấn đề kiểu dữ liệu tĩnh 9 Độ phức tạp của chèn/ xóa trên mảng 1 chiều là O(n) i 9 Vấn đề kiểu dữ liệu tĩnh Giải quyết vấn đề phức tạp khi chèn/ xóa? Giải quyết vấn đề giới hạn kích thước vùng nhớ tối đa? Giải quyết vấn đề vùng nhớ không liên tục? Giải quyết vấn đề giải phóng vùng nhớ khi không cần dùng đến? 10 DÙNG CẤU TRÚC DỮ LIỆU ĐỘNG 10 Biến tĩnh và biến động trong C++ Biến tĩnh tên biến; Vd: int a; float y; char s[20]; Tồn tại trong phạm vi khai báo Được cấp phát vùng nhớ trong vùng dữ liệu Kích thước cố định 11 Biến tĩnh và biến động trong C++ Biến động *tên biến; Vd: int *a; float *y; Chứa địa chỉ của một đối tượng dữ liệu Được cấp phát hoặc giải phóng bộ nhớ tùy thuộc vào người lập trình Kích thước có thể thay đổi 12 Biến tĩnh và biến động
đang nạp các trang xem trước