Stack
Lớp Stack đại diện cho tập hợp đối tượng last-in, first-out (LIFO). Được dùng khi bạn cần truy cập mục last-in, first-out.
Thuộc tính của lớp Stack:
Count - Lấy số phần tử trong stack.
Các phương thức của lớp Stack:
| Thứ tự | Phương thức & Mô tả |
|---|---|
| 1 | public virtual void Clear(); Xóa tất cả phần tử khỏi Stack. |
| 2 | public virtual bool Contains(object obj); Xác định xem phần tử có trong Stack không. |
| 3 | public virtual object Peek(); Trả về đối tượng ở đỉnh Stack mà không xóa nó. |
| 4 | public virtual object Pop(); Xóa và trả về đối tượng ở đỉnh Stack. |
| 5 | public virtual void Push(object obj); Chèn đối tượng vào đỉnh Stack. |
| 6 | public virtual object[] ToArray(); Sao chép Stack vào mảng mới. |
Dưới đây là ví dụ cho thấy cách làm việc với lớp Stack và phương thức Push() và Pop():
Ví dụ
using System;
using System.Collections;
namespace CollectionsApplication {
class Program {
static void Main(string[] args) {
Stack st = new Stack();
st.Push('A');
st.Push('B');
st.Push('C');
st.Push('D');
Console.WriteLine("Current stack: ");
foreach (char c in st) {
Console.Write(c + " ");
}
Console.WriteLine();
st.Push('P');
st.Push('Q');
Console.WriteLine("The next poppable value in stack: {0}", st.Peek());
Console.WriteLine("Current stack: ");
foreach (char c in st) {
Console.Write(c + " ");
}
Console.WriteLine();
Console.WriteLine("Removing values....");
st.Pop();
st.Pop();
st.Pop();
Console.WriteLine("Current stack: ");
foreach (char c in st) {
Console.Write(c + " ");
}
}
}
}
Kết quả
Current stack: D C B A The next poppable value in stack: Q Current stack: Q P D C B A Removing values.... Current stack: C B A
Queue
Lớp tập hợp Queue là khái niệm trong C# được bao gồm trong namespace System.Collections. Các phần tử được lưu trữ trong QUEUE theo FIFO. Phần tử thêm đầu tiên sẽ là phần tử ra đầu tiên như hàng đợi người ngoài rạp phim mua vé.
Nó có hai phương thức:
- Phương thức Enqueue() để thêm giá trị
- Phương thức Dequeue() để lấy giá trị
Enqueue
Thêm mục vào hàng đợi.
Queue q = new Queue();
q.Enqueue("Two");
q.Enqueue("One");
Dequeue
Trả về mục từ hàng đợi.
Queue q = new Queue();
q.Enqueue("Two");
q.Enqueue("One");
// xóa phần tử
while (q.Count > 0)
Console.WriteLine(q.Dequeue());