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

Phương thức Stack.Pop() trong C#

Giới thiệu

Phương thức Stack.Pop() trong C# xóa và trả về đối tượng ở đỉnh (top) của Stack. Stack tuân theo nguyên tắc LIFO (Last In, First Out).

Cú pháp

public virtual object Pop ();

Ví dụ 1: Pop từ 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);
        Console.WriteLine("Phần tử ở đỉnh = " + stack.Peek());

        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("Phần tử ở đỉnh = " + stack.Peek());
        Console.WriteLine("\nSố lượng phần tử (đã cập nhật) = " + stack.Count);

        Console.WriteLine("\nXóa và trả về phần tử ở đỉnh = " + stack.Pop());
        Console.Write("Số lượng phần tử (sau Pop) = " + stack.Count);
        Console.WriteLine("\nCác phần tử Stack...sau Pop");
        foreach(string val in stack) {
            Console.WriteLine(val);
        }
    }
}

Đầ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
Phần tử ở đỉnh = Notebook

Các phần tử Stack...đã cập nhật
Keyboards
Cameras
Ultrabook
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
Phần tử ở đỉnh = Keyboards
Số lượng phần tử (đã cập nhật) = 10

Xóa và trả về phần tử ở đỉnh = Keyboards
Số lượng phần tử (sau Pop) = 9
Các phần tử Stack...sau Pop
Cameras
Ultrabook
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron

Ví dụ 2: Pop từ Stack clone

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);
        Console.WriteLine("Phần tử 'Speakers' có trong stack? = " + stack.Contains("Speakers"));

        stack.Push("Headphone");
        stack.Push("Keyboard");
        stack.Push("Earphone");

        Console.WriteLine("\nCác phần tử Stack...đã cập nhật");
        foreach(string val in stack) {
            Console.WriteLine(val);
        }
        Console.WriteLine("Số lượng phần tử (đã cập nhật) = " + stack.Count);
        Console.WriteLine("Phần tử 'Alienware' có trong stack? = " + stack.Contains("Alienware"));

        Stack stack2 = (Stack)stack.Clone();
        Console.WriteLine("\nCác phần tử Stack...đã clone");
        foreach(string val in stack2) {
            Console.WriteLine(val);
        }
        Console.WriteLine("Số lượng phần tử (stack2) = " + stack2.Count);
        Console.WriteLine("Đỉnh Stack (stack2) = " + stack2.Peek());

        Console.WriteLine("\nXóa và trả về phần tử ở đỉnh (stack2) = " + stack2.Pop());
        Console.WriteLine("Số lượng phần tử (stack2) = " + stack2.Count);
        Console.WriteLine("\nCác phần tử Stack...(stack2)");
        foreach(string val in stack2) {
            Console.WriteLine(val);
        }
    }
}

Đầu ra ví dụ 2

Các phần tử Stack...
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
Số lượng phần tử = 7
Phần tử 'Speakers' có trong stack? = False

Các phần tử Stack...đã cập nhật
Earphone
Keyboard
Headphone
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
Số lượng phần tử (đã cập nhật) = 10
Phần tử 'Alienware' có trong stack? = True

Các phần tử Stack...đã clone
Earphone
Keyboard
Headphone
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
Số lượng phần tử (stack2) = 10
Đỉnh Stack (stack2) = Earphone
Xóa và trả về phần tử ở đỉnh (stack2) = Earphone
Số lượng phần tử (stack2) = 9
Các phần tử Stack...(stack2)
Earphone
Keyboard
Headphone
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron

Lưu ý quan trọng

  • Nếu Stack rỗng, Pop() ném InvalidOperationException. Luôn kiểm tra Count > 0 trước.
  • Pop() trả về object (non-generic) hoặc T (generic Stack<T>).
  • Khác với Peek() chỉ xem, Pop() xóa phần tử khỏi stack.
  • Độ phức tạp thời gian: O(1).

So sánh Peek, Pop, Push

Phương thứcMô tảThay đổi CountTrả về
Push(item)Thêm item lên đỉnh+1void
Peek()Xem item ở đỉnh0item
Pop()Lấy và xóa item ở đỉnh-1item