... CTDL kh c 1.5.2 Cc nguyên t c Trư c th c lớp CTDL n o, c n chắn đònh nghóa CTDL đ c tả t c vụ cho c ch thật đầy đủ C b o đảm rằng: • Chúng ta hiểu c ch x c • Trong th c quay lại sửa đổi đ c ... th c cho lớp CTDL Chúng ta nên nhớ rằng, c nhiều c ch th c kh c cho đ c tả lớp CTDL Về mặt hiệu quả, c phương án gần giống nhau, c phương án kh c xa Điều phụ thu c nhiều v oc ch tổ ch c liệu ... Bư c giống bư c thứ trên, lớp CTDL, lớp kh c, cung c p cho đối tượng để hoạt động chương trình Và vậy, nhiệm vụ mà giao cho c ch rõ ràng x c bư c sau Đ c tả đầy đủ c ch th c giao tiếp lớp CTDL...
... Stack(); bool empty() const; ErrorCode push(const Entry &item); ErrorCode pop(); ErrorCode top(Entry &item) const; protected: Node *top_node; }; Do lớp Stack chứa phần tử liệu, cho vi c ... &item) const; Gi o trình C u tr c liệu Giải thuật 34 Chương – Ngăn xếp Cc đ c tả đảm b o tính an toàn cho c u tr c liên kết: ~Stack(); Stack(const Stack &original); void operator =(const ... th c copy constructor để c ngữ nghóa trò Đối với lớp, khai b o chuẩn cho copy constructor giống khai b o constructor c thêm thông số tham chiếu đến đối tượng lớp: Stack::Stack ( const...
... tra CTDL Queue template class Queue { public: Queue(); bool empty() const; ErrorCode serve(); ErrorCode append(const Entry &item); ErrorCode retrieve(Entry &item) const; protected: ... c u tr c liệu trừu tượng hàng, đ c tả t c vụ mà hàng th cCc đ c tả tương tự đ c tả cho ngăn xếp, đưa tên, kiểu trả về, danh sách thông số, precondition, postcondition uses cho phương th c Entry ... khai b o node tương tự làm cho ngăn xếp liên kết chương Chúng ta c đ c tả đây: template class Queue { public: // Cc phương th c chuẩn hàng Queue(); bool empty() const; ErrorCode...
... insert(int col); pre: Ô hàng count c t col không bò nhìn thấy hậu post: Một hậu vừa đặt v oô hàng count c t col, count tăng thêm void remove(int col); pre: Ô hàng count-1 c t col c hậu post: Con hậu ... ch o upward c tổng hàng c t ô hằngsố Tổng cho đường ch o upward c chiều dài g c trái mảng, cho đến(2xboard_size–2) cho đường ch o upward c chiều dài g c phải mảng Do đánh số cho đường ch o ... lựa c đònh nghóa cho lớp Queens sau: class Queens { public: Queens(int size); bool is_solved() const; void print() const; bool unguarded(int col) const; void insert(int col); void remove(int col);...
... Key class Key{ public: // Cc constructor phương th c private: // Cc thu c tính Key }; // Khai b o t c vụ so sánh cho khoá bool operator ==(const Key &x, const bool operator > (const Key &x, const ... > (const Key &x, const bool operator < (const Key &x, const bool operator >=(const Key &x, const bool operator
... số th c hàng ưu tiên chương 11 dựa khái niệm heap Đó c u tr c tương tự c u tr cc p b c tổ ch c Chúng ta thường biểu diễn c u tr c tổ ch c công ty c u tr c Khi giám đ c công ty nghỉ vi c hai ... chiều dài khóa nhỏ position Đònh nghóa Record sau: Gi o trình C u tr c liệu Giải thuật 179 Chương – Sắp xếp class Record { public: char key_letter(int position) const; Record(); // constructor ... sách trong danh sách liên t c vi c tìm kiếm th c theo chiều ngư c lại // Dành cho danh sách liên kết chương template void Sortable_list::insertion_sort() /* post: Cc phần...
... AVL, c n bổ sung đ c tả node nhö sau: template struct AVL_node: public Binary_node { Balance_factor balance; // constructors: AVL_node(); AVL_node(const Record &x); // Ca c ... class AVL_tree: public Search_tree { public: Error_code insert(const Record &new_data); Error_code remove(const Record &old_data); private: // Cc hàm phụ trợ }; Thu c ... làm sở cho lớp nhò phân tìm kiếm template class Search_tree: public Binary_tree { public: Error_code insert(const Record &new_data); Error_code remove(const Record &old_data);...
... Error_code result; result = recursive_remove(root, target); if (root != NULL && root->count == 0) { // C y giảm chiều cao B_node *old_root = root; root = root->branch[0]; delete old_root; ... RB_node() { color = red; left = right = NULL; } void set_color(Color c) { color = c; } Color get_color() const { return color; } }; Để thuận tiện, sử dụng đònh nghóa dòng (inline definition) cho ... thêm thu c tính màu v o nút đỏ ñen: enum Color {red, black}; template struct RB_node: public Binary_node { Color color; RB_node(const Record &new_entry) { color = red;...
... Kh c với th c hàng ưu tiên mà xem xét, hàng nhò th c có trật tự heap, mà rừng c trật tự heap, không phép c hai c chiều cao Theo quy ư c, c chiều cao c nút; c chiều cao k cc ch nối chiều ... lấp chỗ trống heap[current_position] = parent Cho current_position vò trí parent endloop heap[current_position] = item // C p nhật lại kích thư c heap return success endif } Gi o trình C u tr c ... nhò th c có chiều cao (hình 11.18), c n nối hai thành lại, mà c chiều cao lớn so với c Vi c chèn v o đầu danh sách liên kết thuận tiện hơn, cho danh sách c thứ tự giảm dần theo chiều cao (hình...
... key_letter(int position) const; void make_blank(); // Cc constructor phương th c kh c }; Để giảm c ng s c lập trình th c lớp, chọn c ch thừa kế phương th c lớp String chương Chúng ta đỡ phải viết lại t c ... insert(const Record &new_entry); Error_code retrieve(const Key &target, Record &found) const; private: Record table[hash_size]; }; Bảng băm khởi t o cho tất phần tử mảng chứa khóa đ c biệt gồm khoảng ... th c liên kết tổng quát danh sách h c chương Để quán, phương th c bảng băm nối kết chứa phương th c th c bảng băm trư c Constructor bảng băm đơn giản gọi constructor cho danh sách mảng Trong...
... = 0; v < count; v++) if (predecessor_count[v] == 0) ready_to_process.append(v); while (!ready_to_process.empty()) { ready_to_process.retrieve(v); topological_order.insert(topological_order.size(), ... không c u tr c liệu, sử dụng chúng để đ c tả vấn đề toán h c, để viết giải thuật, th c đồ thò c u tr c liệu danh sách bảng Tuy vậy, rõ ràng đồ thò tự thân xem c u tr c liệu - c u tr c liệu mà c chứa ... theo chiều rộng uses: Cc phương th c lớp List, Queue */ { topological_order.clear(); Vertex v, w; int predecessor_count[graph_size]; for (v = 0; v < count; v++) predecessor_count[v] = 0; for...
... ifstream *infile; ofstream *outfile; char user_command; // Cc hàm phụ trợ Error_code next_line(); Error_code previous_line(); Error_code goto_line(); Error_code insert_line(); Error_code substitute_line(); ... yêu c u nhập chuỗi ký tự để thay Cuối loạt t c vụ String CString th c để loại chuỗi ký tự c chuỗi ký tự v o Error_code Editor::change_line() /* pre: Editor chứa văn post: Nếu chuỗi ký tự yêu c u ... thường bool Editor::get_command() /* post: Gán trò cho thu c tính user_command; trả true trừ người sử dụng gõ ‘q’ uses: Hàm tolower thư vieän C */ { if (current != NULL) cout
... DSLK mảng liên t c có kèm chút c i tiến cho toán Chúng ta xem xét vài c ch tổ ch c liệu theo hướng làm tăng t c độ chương trình nhanh tốt Chúng ta sử dụng danh sách để chứa số c n hoán vò Mỗi lần ... permutation[0] = 0; permute(1, degree, permutation); } } Danh sách permutation làm thông số cho hàm process_permutation chứa c ch nối kết phần tử hoán vò, in số nguyên c ch hoán vò sau: void process_permutation(int ... Gi o trình C u tr c liệu Giải thuật 397 Chương 17 – Ứng dụng sinh hoán vò biệt thứ tự chúng danh sách, kh c cách nối tham chiếu) Cuối tham chiếu c n lưu mảng (hình hình 17.2) Node dùng để chứa...
... biến biểu th c điều kiện c kiểu Ng c lại, với c u tr c chọn, lựa chọn trờng hợp biến nguyên Do vậy, vi c chuyển đổi từ c u tr c chọn sang c u tr c rÏ nh¸nh bao giê c ng th c hiƯn đ c cách dễ dàng, ... case 9: case 11: cout