Giới thiệu
Thuộc tính Stack.Count trong C# trả về số lượng phần tử đang chứa trong Stack. Đây là thuộc tính chỉ đọc (get-only).
Cú pháp
public virtual int Count { get; }
Ví dụ 1: Stack chuỗi
using System;
using System.Collections;
public class Demo {
public static void Main() {
Stack stack = new Stack();
stack.Push("Inspiron");
stack.Push("Alienware");
stack.Push("Projectors");
stack.Push("Monitors");
stack.Push("XPS");
stack.Push("Laptop");
stack.Push("Notebook");
Console.WriteLine("Các phần tử Stack...");
foreach(string val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("Số lượng phần tử = " + stack.Count);
stack.Push("Ultrabook");
stack.Push("Cameras");
stack.Push("Keyboards");
Console.WriteLine("\nCác phần tử Stack...đã cập nhật");
foreach(string val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("\nSố lượng phần tử (đã cập nhật) = " + stack.Count);
stack.Clear();
Console.Write("Số lượng phần tử (sau Clear) = " + stack.Count);
}
}
Đầu ra ví dụ 1
Các phần tử Stack... Notebook Laptop XPS Monitors Projectors Alienware Inspiron Số lượng phần tử = 7 Các phần tử Stack...đã cập nhật Keyboards Cameras Ultrabook Notebook Laptop XPS Monitors Projectors Alienware Inspiron Số lượng phần tử (đã cập nhật) = 10 Số lượng phần tử (sau Clear) = 0
Ví dụ 2: Stack số nguyên
using System;
using System.Collections;
public class Demo {
public static void Main() {
Stack stack = new Stack();
stack.Push(150);
stack.Push(300);
stack.Push(500);
stack.Push(750);
stack.Push(1000);
stack.Push(1250);
stack.Push(1500);
stack.Push(2000);
stack.Push(2500);
Console.WriteLine("Các phần tử Stack...");
foreach(int val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("Số lượng phần tử = " + stack.Count);
stack.Push(3000);
stack.Push(3500);
stack.Push(4000);
Console.WriteLine("\nCác phần tử Stack...đã cập nhật");
foreach(int val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("\nSố lượng phần tử (đã cập nhật) = " + stack.Count);
stack.Clear();
Console.Write("Số lượng phần tử (sau Clear) = " + stack.Count);
}
}
Đầu ra ví dụ 2
Các phần tử Stack... 2500 2000 1500 1250 1000 750 500 300 150 Số lượng phần tử = 9 Các phần tử Stack...đã cập nhật 4000 3500 3000 2500 2000 1500 1250 1000 750 500 300 150 Số lượng phần tử (đã cập nhật) = 12 Số lượng phần tử (sau Clear) = 0
Đặc điểm quan trọng
Counttrả về số phần tử hiện tại (logical size), không phải dung lượng (capacity).- Mỗi
Push()tăng Count lên 1, mỗiPop()giảm Count đi 1. Clear()đặt Count = 0.- Độ phức tạp: O(1) - chỉ đọc biến nội bộ.
- Kiểm tra
Count == 0trước khiPeek()hoặcPop()để tránhInvalidOperationException.
Count vs Capacity
| Thuộc tính | Ý nghĩa | Thay đổi khi |
|---|---|---|
| Count | Số phần tử thực tế | Push, Pop, Clear |
| Capacity (internal) | Dung lượng mảng nội bộ | Tự động tăng khi Push vượt quá Capacity (thường gấp đôi) |
Ứng dụng thực tế
- Kiểm tra stack rỗng:
if (stack.Count > 0). - Giới hạn kích thước stack:
if (stack.Count >= MAX_SIZE) throw .... - Thuật toán: kiểm tra độ sâu đệ quy, balanced parentheses, DFS.
- Progress reporting: báo cáo % hoàn thành dựa trên Count.