English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# 스택(스택)

스택은 요소를 LIFO 방식(후进先出)으로 저장하는 특별한 콜렉션 타입입니다. C#은 일반적인 Stack<T>와 Stack 콜렉션 클래스를 포함하고 있습니다. 일반적인 Stack<T> 콜렉션을 사용하는 것이 좋습니다.

스택은 LIFO 형태로 일시적인 데이터를 저장하는 데 매우 유용하며, 요소의 값을 검색한 후에 제거하고자 할 수 있습니다.

Stack <T> 특성

  • Stack<T>는 LIFO(Last In, First Out) 콜렉션입니다.  

  • 그것은 System.Collection.Generic 이름 공간 아래에 있습니다.

  • Stack<T>는 지정된 유형의 요소를 포함할 수 있습니다. 그것은 컴파일 시 타입 체크를 제공하며, 박스링을 수행하지 않습니다./박스解除,因为它是一种泛型。

  • Push() 메서드를 사용하여 요소를 추가할 수 있습니다. 컬렉션으로 초기화할 수 없습니다.-initializer)语法。

  • initializer) 문법을 사용할 수 있습니다.

Pop()와 Peek() 메서드를 사용하여 요소를 검색할 수 있습니다. 인덱서를 지원하지 않습니다.

스택 생성

Stack<int> myStack = new Stack<int>();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
foreach (var item in myStack)
     Console.Write(item + ","); //출력4,3,2,1,

어떻게 스택을 배열에서 생성할 수 있는지 예제를 보여드리겠습니다. 아래 예제에서는 Push() 메서드를 사용하여 Stack <T>에 요소를 생성하고 추가합니다. 스택은 null (참조형 타입에 대해)과 중복 값을 허용합니다.

int[] arr = new int[]{ 1, 2, 3, 4};
Stack<int> myStack = new Stack<int>(arr);
foreach (var item in myStack)
     Console.Write(item + ","); //출력4,3,2,1,

Stack <T> 속성 및 메서드:

속성사용법
Count스택에 있는 요소의 총 수를 반환합니다。
메서드사용법
Push(T)스택 상단에 항목을 추가합니다。
Peek()스택의 상단 항목을 반환합니다。
Pop()스택의 상단에서 항목을 제거하고 반환합니다。
Contains(T)스택에 항목이 있는지 확인합니다。
Clear()스택에서 모든 항목을 제거합니다。

Pop()

Pop() 메서드는 마지막 요소를 반환하고 스택에서 제거합니다. 스택이 비어 있으면 InvalidOperationException이 발생합니다. 따라서 Pop() 메서드를 호출하기 전에 항상 스택에 있는 요소 수를 확인하십시오.

Stack<int> myStack = new Stack<int>();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
Console.Write("스택의 요소 수: {0}", myStack.Count);
while (myStack.Count > 0)
     Console.Write(myStack.Pop()); + ",");
Console.Write("스택의 요소 수: {0}", myStack.Count);
출력:
스택의 요소 수:4
4,3,2,1,
스택의 요소 수: 0

Peek()

Peek() 메서드는 스택에서 마지막에 추가된 값을 반환하지만, 그 값을 제거하지 않습니다. 빈 스택에서 Peek() 메서드를 호출하면 InvalidOperationException이 발생합니다. 따라서 Peek() 메서드를 사용하여 요소를 검색하기 전에 항상 스택에 있는 요소를 확인하십시오.

Stack<int> myStack = new Stack<int>();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
Console.Write("Stack에 있는 요소 수: {0}", myStack.Count);// 출력 4
if(myStack.Count > 0){
     Console.WriteLine(myStack.Peek()); // 출력 4
     Console.WriteLine(myStack.Peek()); // 출력 4
}
Console.Write("Stack에 있는 요소 수: {0}", myStack.Count);// 출력 4

Contains()

Contains() 메서드는 지정된 요소가 Stack 집합에 존재하는지 확인합니다. 존재하면 true를 반환하고, 존재하지 않으면 false를 반환합니다.

Stack<int> myStack = new Stack<int>();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
myStack.Contains(2); // true 반환
myStack.Contains(10); // false 반환