Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Thuộc tính Stack.Count trong C#

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

  • Count trả 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ỗi Pop() 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 == 0 trước khi Peek() hoặc Pop() để tránh InvalidOperationException.

Count vs Capacity

Thuộc tínhÝ nghĩaThay đổi khi
CountSố 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.