학습 일자 : 2023.
LIFO(Last In, First Out : 후입선출) 방식의 자료 구조 (a.k.a.박스 쌓기)
가장 최근에 입력된 순서대로 처리해야 하는 상황에 이용
→ 뒤로가기 기능 구현
Stack<int> stack = new Stack<int>();
for (int i = 0; i < 5;)
{
stack.Push(++i); //스택에 값을 넣어 줌
}
Console.WriteLine($"PEEK : {stack.Peek()}\\n"); //최상단에 있는 값을 출력
while (stack.Count > 0)
{
Console.WriteLine($"POP : {stack.Pop()}"); //스택에 있는 값을 뺌
}
| [output] PEEK : 5
POP : 5 POP : 4 POP : 3 POP : 2
POP : 1 |
---|
이미 만들진 기존의 인터페이스를 사용자가 기대하는 인터페스의 형태로 변화시키는 패턴이다.
→ 이미 만들어진 기능과 거의 유사할 때, 원하는 기능을 추가해 편하게 사용 가능하다.
→ 스택은 리스트와 기능이 거의 유사하기 때문에 리스트를 이용해서 스택을 만들면 간단하게 사용 가능하다.
예를 들어 갤럭시는 C타입의 충전 단자를, 아이폰은 5핀 충전 단자를 사용하고 있다. C타입 충전 단자로 아이폰을 충전하기 위해서는 C타입을 5핀으로 바꿔주는 젠더를 사용해야 한다.
[List를 활용한 스택 구현]
→ 리스트가 견고해질수록 스택 또한 견고해지는 효과를 볼 수 있다.
→ 스택에서 필요한 예외처리는 이미 리스트에서 되어 있다. → 예외처리를 신경쓰지 않아도 됨 (스택에서 오류날 것 같은 상황(ex.overflow)은 List에서도 오류가 나기 때문에 List이미 예외처리를 해둠)