스택(Stack)은 데이터를 저장하고 관리하는 자료구조 중 하나이다. 스택은 "후입선출" (Last-In-First-Out, LIFO) 원칙에 따라 동작한다. 이는 마지막으로 추가된 항목이 가장 먼저 제거되는 방식을 의미한다.
System.Collections.Generic 네임스페이스에서 Stack 클래스를 제공하여 스택을 구현할 수 있다.
T는 저장할 데이터의 유형을 나타내는 제네릭 타입 매개변수입니다. 예를 들어, Stack는 정수를 저장하는 스택을 생성할 수 있습니다.
장점 : 구현이 쉽다. 저장, 읽기 속도가 빠르다.
단점 : 내부 데이터의 접근, 변경이 느리다.
stack의 맴버 함수
① Push : 스택 안에 데이터 값을 삽입
② Pop : 스택에서 데이터 값을 꺼냄
③ Peek : 가장 상단의 데이터를 추출
④ Count : 스택의 크기를 인트형으로 반환
⑤ Clear: 스택의 모든 항목을 제거합니다.
스택의 적절한 사용 예시
① 재귀 알고리즘
② 웹브라우저 방문기록(뒤로가기)
③ 실행 취소(undo)
④ 역순 문자열 만들기
⑤ 수식의 괄호 검사
stack 타입의 변수를 생성하고, push를 이용하여 데이터를 넣었다.
그후, peek를 이용하여 가장 상단의 데이터를 확인하였으며,
PrintStack함수로 내부 값들을 출력했다.
PrintStack()은 스택을 foreach문을 이용하여 전체 값을 출력하는 함수이다.
스택 자료구조는 배열을 이용하여 간단하게 초기화가 가능하다.
이때, 배열의 [0]이 스택의 buttom으로 들어가고, top에는 배열의 마지막 자리가 들어간다.
스택자료구조를 이용하면, 2진 배열의 데이터 값에 대한 Reverse를 더 쉽게 할 수 있다.
기존 배열의 자료값으로 초기화 하여 데이터를 받은 후에,
반복문을 이용하여 pop으로 데이터를 꺼내어 Reverse된 값을 저장할 배열에 Set한다.
모든 작업이 끝나면, Reverse함수에 거꾸로 된 데이터값이 저장된다.
FindIndex() 함수는 List 클래스나 T[] 배열 등의 컬렉션에서 사용할 수 있다. 이 함수는 특정 조건을 만족하는 첫 번째 요소의 인덱스를 찾아서 반환한다.
int index = myList.FindIndex(x => x.SomeProperty == someValue);
ㄴ여기서 myList는 검색할 List 컬렉션을 나타내고, x는 현재 검사 중인 요소를 나타내며, SomeProperty는 요소의 속성 중 하나이고, someValue는 찾으려는 값