Cấu trúc dữ liệu - Ngăn xếp

Khái niệm và nguyên lý cơ bản Ngăn xếp (stack) là một cấu trúc dữ liệu tuyến tính hoạt động theo nguyên tắc "vào sau - ra trước" (LIFO - Last In, First Out). Các thao tác chèn và xóa phần tử chỉ xảy ra ở một đầu gọi là đỉnh ngăn xếp (top). Đầu còn lại được gọi là đáy (bottom). Khi ngăn xếp không chứa phần tử nào, ta gọi là ngăn xếp rỗng. Ví dụ ...

Đăng vào ngày 3 tháng 10 lúc 12:13

Sử dụng Hash Map và Các Kỹ Thuật Tiền Tố để Giải Quyết Bài Toán Lập Trình

Các Khái Niệm Cốt Lõi và Ứng Dụng Của Hash Map 1. Bài Toán Trọng Tâm: Tìm kiếm giá trị tương ứng (value) một cách hiệu quả thông qua một khóa duy nhất (key). 2. Tình Huống Thường Gặp: Tìm hai số có tổng bằng một giá trị cho trước. Xác định phần tử lớn hơn tiếp theo trong một dãy. Tìm vị trí xuất hiện đầu tiên hoặc cuối cùng của m ...

Đăng vào ngày 18 tháng 9 lúc 15:08

Bài tập về ngăn xếp và hàng đợi

Ngăn xếp Khái niệm cơ bản Nguyên tắc hoạt động của ngăn xếp là vào sau - ra trước (LIFO). Cài đặt // Mô phỏng ngăn xếp bằng mảng int stackArray[N]; int topIndex = 0; // Làm rỗng ngăn xếp khi cần thiết while (!isEmpty()) { pop(); } // Sử dụng vector để mô phỏng ngăn xếp vector<int> st; st.push_back(value); // Thêm phần tử vào đỉnh ...

Đăng vào ngày 17 tháng 9 lúc 00:09

Thuật toán duyệt cây nhị phân

144. Duyệt cây nhị phân theo thứ tự trước (danh sách đệ quy) public List<Integer> preorderTraversal(TreeNode root) { List<Integer> resultList = new ArrayList(); preOrder(root, resultList); return resultList; } // Hàm đệ quy nhận nút và danh sách kết quả public void preOrder(TreeNode currentNode, List&lt ...

Đăng vào ngày 8 tháng 9 lúc 15:15

Hiện thực ngăn xếp bằng mảng và danh sách liên kết đơn

Ngăn xếp trong cấu trúc dữ liệu Ngăn xếp (Stack) là một cấu trúc dữ liệu tuân theo nguyên tắc LIFO (Last In, First Out) – phần tử vào cuối cùng sẽ ra đầu tiên. Dưới đây là hai cách phổ biến để hiện thực ngăn xếp: sử dụng mảng và sử dụng danh sách liên kết đơn có nút đầu (head node). 1. Ngăn xếp dùng mảng Ý tưởng chính: Sử dụng biến top để ...

Đăng vào ngày 8 tháng 9 lúc 06:38

Ngăn xếp và hàng đợi đơn điệu

Ngăn xếp & Hàng đợi đơn điệu Ngăn xếp đơn điệu Giới thiệu Ngăn xếp đơn điệu là một cấu trúc dữ liệu có tính chất đơn điệu, tức là các phần tử trong ngăn xếp được sắp xếp theo thứ tự tăng dần hoặc giảm dần. Khác với hàng đợi đơn điệu, ngăn xếp chỉ cho phép thao tác ở một đầu. Quy trình Thêm phần tử Khi thêm một phần tử vào ngăn xếp đơn điệu, ...

Đăng vào ngày 3 tháng 9 lúc 16:14

Kỹ thuật Container Adapters trong C++: Stack và Queue

Container adapters là một mẫu thiết kế cho phép chuyển đổi giao diện hiện có thành giao diện mà người dùng mong muốn, tương tự như việc sử dụng các ổ cắm đa năng. Bài viết này tập trung vào việc giới thiệu về Stack, Queue và priority_queue, tất cả đều là container adapters. 2. Stack 2.1 Tổng Quan Về Stack Stack là cấu trúc dữ liệu dạng ngăn xếp ...

Đăng vào ngày 6 tháng 7 lúc 03:10

Nghiên cứu về các thao tác cơ bản của cấu trúc dữ liệu Stack và Queue

Nghiên cứu về các thao tác cơ bản của cấu trúc dữ liệu Stack và Queue Bài viết này tập trung vào việc khám phá và củng cố các phương pháp thao tác thường gặp với hai cấu trúc dữ liệu cơ bản: Stack (ngăn xếp) và Queue (hàng đợi). Chúng ta sẽ cùng nhau phân tích một số bài toán điển hình để hiểu rõ hơn cách áp dụng chúng trong thực tế. Stack (Ng ...

Đăng vào ngày 15 tháng 6 lúc 21:37

Sử dụng cấu trúc dữ liệu Stack trong giải thuật

Giới thiệu về giải thuật Stack là một cấu trúc dữ liệu phổ biến, hoạt động theo nguyên tắc Last-In-First-Out (LIFO). Có thể sử dụng stack từ thư viện STL hoặc mô phỏng bằng mảng . Khó khăn khi giải các bài toán liên quan đến stack thường nằm ở việc có nhận ra được rằng bài toán có thể giải quyết bằng stack hay không. Thực chất, các bài toán ...

Đăng vào ngày 9 tháng 6 lúc 18:12

Thực hiện toán tử tính toán biểu thức trong C# - Giải pháp sử dụng biểu thức hậu tố (RPN)

Khi nhắc đến việc phân tích và tính toán biểu thức, nhiều người thường nghĩ ngay đến phương pháp táiursive descent — một kỹ thuật mạnh mẽ dùng để xây dựng cây cú pháp trừu tượng (AST). Tuy nhiên, cách tiếp cận này đòi hỏi kiến thức sâu về lý thuyết ngôn ngữ hình thức và kỹ năng lập trình cao, khiến nó trở nên khó tiếp cận với người mới bắt đầu. ...

Đăng vào ngày 8 tháng 6 lúc 19:12