Đếm số bit 1 trong nhị phân và các bài toán liên quan
Việc đếm số bit 1 trong biểu diễn nhị phân của một số nguyên là thao tác cơ bản trong lập trình hệ thống, tối ưu thuật toán và xử lý dữ liệu. Dưới đây là cách tiếp cận hiệu quả cùng các ứng dụng thực tế.
1. Đếm bit 1 bằng phép AND với (n - 1)
Phương pháp này tận dụng tính chất: n & (n - 1) sẽ xóa đi bit 1 ở vị trí thấp nhất của n. Lặp lại ...
Đăng vào ngày 24 tháng 6 lúc 06:35
Giải thuật xử lý danh sách liên kết: Đảo ngược, hợp nhất và phát hiện chu trình
Đảo ngược danh sách liên kết
Một cách hiệu quả để đảo ngược danh sách liên kết là sử dụng kỹ thuật chèn đầu. Ta duyệt qua từng nút trong danh sách gốc, tách từng nút ra và chèn vào đầu danh sách mới. Trong quá trình này, cần lưu trữ con trỏ đến nút kế tiếp trước khi thay đổi liên kết.
struct ListNode* reverseList(struct ListNode* head) {
s ...
Đăng vào ngày 12 tháng 6 lúc 20:14
Triển khai danh sách liên kết đơn trong C
Thiết kế cấu trúc nút
typedef struct Node {
void* payload;
struct Node* next;
} Node;
payload: Con trỏ kiểu void* lưu dữ liệu, cho phép linh hoạt với nhiều kiểu dữ liệu.
next: Con trỏ đến nút tiếp theo trong danh sách.
Thiết kế cấu trúc danh sách
typedef struct LinkedList {
Node head;
int length;
} LinkedList;
head: Nú ...
Đăng vào ngày 3 tháng 6 lúc 17:18
Các bài toán xử lý danh sách liên kết trên LeetCode
21. Gộp hai danh sách liên kết đã sắp xếp
Cho hai danh sách liên kết tăng dần, hãy gộp chúng thành một danh sách mới cũng theo thứ tự tăng dần.
ListNode* merge(ListNode* a, ListNode* b) {
if (!a) return b;
if (!b) return a;
if (a->val < b->val) {
a->next = merge(a->next, b);
return a;
} else {
...
Đăng vào ngày 2 tháng 6 lúc 21:43
Cấu trúc dữ liệu ngăn xếp và hàng đợi trong C
Ngăn xếp và hàng đợi là hai cấu trúc tuyến tính đặc biệt, khác với danh sách thông thường cho phép chèn/xóa tại bất kỳ vị trí nào, cả hai chỉ cho phép thao tác tại các đầu cố định.
Ngăn xếp (Stack) tuân theo nguyên tắc FIFO ngược — LIFO (Last In, First Out): phần tử được thêm vào cuối cùng sẽ được lấy ra đầu tiên. Trong một ngăn xếp:
Đỉnh ...
Đăng vào ngày 22 tháng 5 lúc 09:38
Cấu trúc dữ liệu danh sách liên kết và các thao tác cơ bản
Danh sách liên kết là một cấu trúc dữ liệu động, không yêu cầu các phần tử phải nằm liền kề trong bộ nhớ. Mỗi phần tử (gọi là nút) chứa dữ liệu và tham chiếu đến nút tiếp theo.
Đặc điểm của danh sách đơn hướng
Mỗi nút gồm hai thành phần: giá trị dữ liệu và con trỏ next chỉ đến nút kế tiếp. Nút đầu tiên gọi là head, nút cuối cùng trỏ đến null.
...
Đăng vào ngày 20 tháng 5 lúc 08:59
Structures, File Handling, và Quản lý Bộ nhớ trong C
Cấu trúc và Dữ liệu Tổ chức
Định nghĩa Cấu trúc (struct)
Trong ngôn ngữ C, từ khóa struct được dùng để nhóm các biến thuộc các kiểu dữ liệu khác nhau thành một đơn vị duy nhất. Mỗi biến bên trong cấu trúc được gọi là thành viên.
Ví dụ:
struct SinhVien {
char hoTen[60];
int namSinh;
double diemTrungBinh;
};
Khai báo Biến Cấu trúc
...
Đăng vào ngày 19 tháng 5 lúc 06:39