Cấu trúc dữ liệu và giải thuật - chương 4
lượt xem 46
download
Chương 4 của bộ slide bài giảng đầy đủ về môn CTDL & GT của trường ĐHBK TP.HCM. Trình bày ngắn gọn dễ hiểu với những hiệu ứng minh họa sinh động. Giúp các bạn biết thêm về stack và queue liên kết là như thế nào? Mời các bạn tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Cấu trúc dữ liệu và giải thuật - chương 4
- A C CẤU TRÚC DỮ LIỆU VÀ B F GIẢI THUẬT (501040) D E G Chương 4: Stack và Queue liên K kết H
- Con trỏ 2 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Biểu diễn con trỏ bằng C++ Khai báo biến: Item * item_ptr1, * item_ptr2; Tạo mới đối tượng: item_ptr1 = new Item; Hủy bỏ đối tượng: delete item_ptr1; Sử dụng: *item_ptr1 = 1378; cout StudentID; Con trỏ NULL: item_ptr2 = NULL; 3 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Sử dụng con trỏ trong C++ Địa chỉ của biến: Biến: int_ptr = &x; Array: arr_ptr = an_array; Dynamic array: Trong C++, array có thể được quản lý như một con trỏ và ngược lại Ví dụ: int arr[3] = {0, 1, 2, 3}; int *arr_ptr = arr; //in ra 0 – 1 – 2 cout
- Gán con trỏ trong C++ Gán nội dung: bình thường Gán con trỏ: nguy hiểm 5 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Thiết kế node liên kết Cần: Dữ liệu Con trỏ để trỏ đến node sau Constructor 6 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Thiết kế node liên kết bằng C++ template struct Node { Entry entry; // data members Node *next; Node( ); // constructors Node(Entry item, Node *add on = NULL); }; 7 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Ví dụ với node liên kết Node first_node(‘a’); Node *p0 = &first_node; Node *p1 = new Node(‘b’); p0->next = p1; Node *p2 = new Node(‘c’, p0); p1->next = p2; p1 p2 first_node p0 a b c 8 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Stack liên kết 9 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Khai báo stack liên kết template class Stack { public: Stack( ); bool empty( ) const; Error_code push(const Entry &item); Error_code pop( ); Error_code top(Entry &item) const; Stack(const Stack ©); ~Stack(); void operator=(const Stack ©); protected: Node *top_node; }; 10 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Thêm vào một stack liên kết Giải thuật 1. Tạo ra một node mới với giá trị cần thêm vào 2. Trỏ nó đến đỉnh hiện tại của stack 3. Trỏ đỉnh của stack vào node mới new_top new node top_node old top middle last 11 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Bỏ đỉnh của một stack liên kết Giải thuật: 1. Gán một con trỏ để giữ đỉnh của stack 2. Trỏ đỉnh của stack vào node ngay sau đỉnh hiện tại 3. Xóa node cũ đi top_node old top middle old last old_top 12 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Thêm/Bỏ đỉnh của một stack liên kết – Mã C++ template Error_code push(const Entry &item) { Node *new_top = new Node(item, top_node); if (new_top == NULL) return overflow; top_node = new_top; } template Error_code pop( ) { Node *old_top = top_node; if (top_node == NULL) return underflow; top_node = old_top->next; delete old_top; } 13 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Sự không an toàn con trỏ trong C++ Kết thúc biến stack nhưng bộ nhớ còn lại: delete stack0; stack0 top middle last Gán hai stack: cả hai dùng chung một vùng dữ liệu stack2 = stack1; stack2 top middle last stack1 top middle last 14 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Đảm bảo an toàn con trỏ trong C++ Destructor: Sẽ được gọi ngay trước khi đối tượng kết thúc thời gian sống Dùng xóa hết vùng dữ liệu Copy constructor: Sẽ được gọi khi khởi tạo biến lúc khai báo, hoặc truyền dữ liệu bằng tham trị Sao chép nguồn thành một vùng dữ liệu mới Assignment operator: Sẽ được gọi khi gán đối tượng này vào đối tượng khác Xóa vùng dữ liệu của đích và đồng thời sao chép nguồn thành một vùng dữ liệu mới 15 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Xóa vùng dữ liệu đang có Giải thuật: 1. Trong khi stack chưa rỗng 1.1. Bỏ đỉnh của stack Mã C++: while (!empty()) pop(); 16 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Sao chép vùng dữ liệu Giải thuật: 1. Tạo một đỉnh của danh sách mới với dữ liệu của đỉnh nguồn 2. Giữ một con trỏ đuôi chỉ vào cuối danh sách mới 2. Duyệt qua danh sách nguồn 2.1. Tạo một node mới với dữ liệu từ node nguồn hiện tại 2.2. Nối vào cuối danh sách mới 2.3. Con trỏ đuôi là node mới 17 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Sao chép vùng dữ liệu – Ví dụ copy.top_node a b c copy_node new_copy new_top a b c 18 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Sao chép vùng dữ liệu – Mã C++ Node *new_top, *new_copy, *copy_node = copy.top_node; if (copy_node == NULL) new_top = NULL; else { // Sao chép vùng dữ liệu thành danh sách mới new_copy = new_top = new Node(copy_node->entry); while (copy_node->next != NULL) { copy_node = copy_node->next; new_copy->next = new Node(copy_node->entry); new_copy = new_copy->next; } } //xóa rỗng dữ liệu hiện tại trước clear(); top_node = new_top; // thay thế dữ liệu bằng danh sách mới. 19 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
- Queue liên kết Thiết kế: Dùng hai con trỏ chỉ đến đầu và cuối của danh sách dữ liệu (front và rear) rear front front middle last Khởi tạo rỗng: gán cả front và rear về NULL front rear 20 Chương 4: Stack và Queue liên kết Khoa Công nghệ Thông tin ĐH Bách Khoa Tp.HCM
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình cấu trúc dữ liệu và giải thuât part 1
16 p | 825 | 365
-
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 p | 551 | 286
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 174 | 17
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 78 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Các khái niệm cơ bản về Cấu trúc dữ liệu và giải thuật
20 p | 44 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 57 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Giáo trình Cấu trúc dữ liệu và giải thuật - CĐ Nghề Đắk Lắk
60 p | 44 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 157 | 6
-
Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Công nghệ thông tin - Trung cấp) - Trường Trung cấp Công nghệ và Du lịch Hà Nội
59 p | 14 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Chương 1: Tổng quan về giải thuật và cấu trúc dữ liệu
10 p | 66 | 4
-
Giáo trình Cấu trúc dữ liệu và giải thuật (Ngành: Công nghệ thông tin - Cao đẳng) - Trường Cao đẳng Xây dựng số 1
77 p | 10 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 105 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Một số khái niệm cơ bản về cấu trúc dữ liệu và giải thuật
12 p | 91 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Tổng quan - Nguyễn Đức Cương
6 p | 99 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Cấu trúc dữ liệu và giải thuật
42 p | 54 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Ngô Quang Thạch
49 p | 63 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn