Ngăn xếp C# với các ví dụ về Push & Pop
Ngăn xếp trong C# là gì?
Ngăn xếp là một tập hợp trường hợp đặc biệt đại diện cho khái niệm nhập sau ra trước (LIFO). Để hiểu LIFO trước tiên, hãy lấy một ví dụ. Hãy tưởng tượng một chồng sách với mỗi cuốn sách được xếp chồng lên nhau.
Khái niệm nhập sau xuất trước trong trường hợp sách có nghĩa là chỉ có cuốn sách trên cùng mới có thể được lấy ra khỏi chồng sách. Không thể xóa sách ở giữa vì điều đó sẽ làm xáo trộn cài đặt của ngăn xếp.
Do đó trong C#, ngăn xếp cũng hoạt động theo cách tương tự. Các phần tử được thêm vào ngăn xếp, các phần tử này nằm chồng lên nhau. Quá trình thêm một phần tử vào ngăn xếp được gọi là thao tác đẩy. Để xóa một phần tử khỏi ngăn xếp, bạn cũng có thể xóa phần tử trên cùng của ngăn xếp. Hoạt động này được gọi là pop.
Hãy xem xét các hoạt động có sẵn cho bộ sưu tập Stack một cách chi tiết hơn.
Khai báo ngăn xếp
Ngăn xếp được tạo với sự trợ giúp của kiểu Dữ liệu ngăn xếp. Từ khóa “new” được sử dụng để tạo một đối tượng của Stack. Đối tượng sau đó được gán cho biến st.
Stack st = new Stack()
Thêm phần tử vào ngăn xếp
Phương thức đẩy được sử dụng để thêm một phần tử vào ngăn xếp. Cú pháp chung của câu lệnh được đưa ra dưới đây.
Stack.push(element)
Loại bỏ các phần tử khỏi ngăn xếp
Phương thức pop được sử dụng để loại bỏ một phần tử khỏi ngăn xếp. Thao tác pop sẽ trả về phần tử trên cùng của ngăn xếp. Cú pháp chung của câu lệnh được đưa ra dưới đây
Stack.pop()
Đếm
Thuộc tính này được sử dụng để lấy số lượng phần tử trong Stack. Dưới đây là cú pháp chung của câu lệnh này.
Stack.Count
Thông tin
Phương thức này được sử dụng để kiểm tra xem một phần tử có tồn tại trong Stack hay không. Dưới đây là cú pháp chung của câu lệnh này. Câu lệnh sẽ trả về true nếu phần tử tồn tại, nếu không nó sẽ trả về giá trị false.
Stack.Contains(element)
Bây giờ hãy xem điều này hoạt động ở cấp độ mã. Tất cả các mã được đề cập dưới đây sẽ được ghi vào Ứng dụng giao diện điều khiển. Mã sẽ được ghi vào tệp Program.cs của chúng tôi.
Trong chương trình bên dưới, chúng ta sẽ viết mã để xem cách chúng ta có thể sử dụng các phương pháp nêu trên.
Ví dụ 1: Phương thức Stack.Push()
Trong ví dụ này, chúng ta sẽ thấy
- Làm thế nào một ngăn xếp được tạo ra.
- Cách hiển thị các phần tử của ngăn xếp và sử dụng các phương thức Count và Contain.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Stack st = new Stack(); st.Push(1); st.Push(2); st.Push(3); foreach (Object obj in st) { Console.WriteLine(obj); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("The number of elements in the stack " +st.Count); Console.WriteLine("Does the stack contain the elements 3 "+st.Contains(3)); Console.ReadKey(); } } }
Giải thích mã: -
- Bước đầu tiên được sử dụng để khai báo Stack. Ở đây chúng ta khai báo “st” là một biến để chứa các phần tử của ngăn xếp.
- Tiếp theo, chúng ta thêm 3 phần tử vào ngăn xếp của mình. Mỗi phần tử được thêm vào thông qua phương thức Push.
- Bây giờ vì các phần tử ngăn xếp không thể được truy cập thông qua vị trí chỉ mục như lập danh sách, chúng ta cần sử dụng một cách tiếp cận khác để hiển thị các phần tử của ngăn xếp. Đối tượng (obj) là một biến tạm thời, được khai báo để giữ từng phần tử của ngăn xếp. Sau đó chúng ta sử dụng câu lệnh foreach để duyệt qua từng phần tử của ngăn xếp. Đối với mỗi phần tử ngăn xếp, giá trị được gán cho biến obj. Sau đó, chúng tôi sử dụng lệnh Console.Writeline để hiển thị giá trị cho bàn điều khiển.
- Chúng tôi đang sử dụng thuộc tính Count (số đếm) để lấy số phần tử trong ngăn xếp. Thuộc tính này sẽ trả về một số. Sau đó chúng tôi hiển thị giá trị này cho bảng điều khiển.
- Sau đó, chúng tôi sử dụng phương thức Chứa để xem liệu giá trị 3 có trong ngăn xếp của chúng tôi hay không. Điều này sẽ trả về giá trị đúng hoặc sai. Sau đó chúng tôi hiển thị giá trị trả về này cho bảng điều khiển.
Nếu mã trên được nhập đúng và chương trình được chạy thì kết quả sau sẽ được hiển thị.
Đầu ra:
Từ kết quả đầu ra, chúng ta có thể thấy các phần tử của ngăn xếp được hiển thị. Ngoài ra, giá trị True được hiển thị để nói rằng giá trị 3 được xác định trên ngăn xếp.
Lưu ý: Bạn nhận thấy rằng phần tử cuối cùng được đẩy vào ngăn xếp sẽ được hiển thị đầu tiên. Đây là phần tử trên cùng của ngăn xếp. Số lượng phần tử ngăn xếp cũng được hiển thị trong đầu ra.
Ví dụ 2: Phương thức Stack.Pop()
Bây giờ chúng ta hãy xem chức năng "xóa". Chúng ta sẽ thấy đoạn mã cần thiết để loại bỏ phần tử trên cùng khỏi ngăn xếp.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Stack st = new Stack(); st.Push(1); st.Push(2); st.Push(3); st.Pop(); foreach (Object obj in st) { Console.WriteLine(obj); } Console.ReadKey(); } } }
Giải thích mã: -
- Ở đây chúng tôi chỉ đưa ra phương thức pop được sử dụng để xóa một phần tử khỏi ngăn xếp.
Nếu mã trên được nhập đúng và chương trình được chạy, kết quả sau sẽ được hiển thị.
Đầu ra:
Chúng ta có thể thấy rằng phần tử 3 đã bị xóa khỏi ngăn xếp.
Tổng kết
- Ngăn xếp dựa trên khái niệm vào sau ra trước. Thao tác thêm một phần tử vào ngăn xếp được gọi là thao tác đẩy. Thao tác loại bỏ một phần tử khỏi ngăn xếp được gọi là thao tác pop.