스택은 LIFO(Last In First Out) 유형의 작업을 사용하는 컨테이너 어댑터 유형으로, 새 요소가 한쪽 끝(상단)에 추가되고 해당 끝에서만 요소가 제거됩니다. 스택은 다음 중 하나의 캡슐화된 개체를 사용합니다. 벡터 또는 deque (기본값) 또는 목록 (순차적 컨테이너 클래스)를 기본 컨테이너로 사용하여 해당 요소에 액세스할 수 있는 특정 멤버 함수 세트를 제공합니다.
Java에서 날짜 형식 지정
스택과 대기열의 기본 차이점을 기억하는 데 혼란이 있다면 이러한 차별화에 대한 실제 예를 들어보세요. 스택, 책 쌓기의 경우 맨 위 책을 쉽게 가져갈 수 있고 대기열의 경우 대기열 앞에 서 있어야 할 때를 기억하세요. 현금을 인출하려면 ATM 근처에 있는 사람이 먼저 ATM에서 돈을 인출할 수 있습니다. 따라서 대기열은 FIFO(선입 선출) 유형으로 작동합니다.
스택 구문:-
스택을 생성하려면 코드에 헤더 파일을 포함해야 합니다. 그런 다음 이 구문을 사용하여 std::stack을 정의합니다.
| 주형 |
유형 – std::stack에 포함된 요소의 유형입니다. 유효한 C++ 유형이거나 사용자 정의 유형일 수도 있습니다.
컨테이너 – 기본 컨테이너 객체의 유형입니다.
회원 유형:-
value_type - 첫 번째 템플릿 매개변수 T. 요소 유형을 나타냅니다.
컨테이너_유형 - 두 번째 템플릿 매개변수인 컨테이너입니다. 이는 기본 컨테이너 유형을 나타냅니다.
size_type - 부호 없는 정수 유형입니다.
스택과 관련된 기능은 다음과 같습니다.
empty() - 스택이 비어 있는지 여부를 반환합니다. - 시간 복잡도: O(1)
size() - 스택의 크기를 반환합니다. - 시간 복잡도: O(1)
top() - 스택의 최상위 요소에 대한 참조를 반환합니다. - 시간 복잡도: O(1)
push(g) - 스택 맨 위에 'g' 요소를 추가합니다. - 시간 복잡도: O(1)
pop() - 스택의 가장 최근에 입력된 요소를 삭제합니다. - 시간 복잡도: O(1)
C++
#include> #include> using> namespace> std;> int> main() {> >stack<>int>>스택;> >stack.push(21);>// The values pushed in the stack should be of the same data which is written during declaration of stack> >stack.push(22);> >stack.push(24);> >stack.push(25);> >int> num=0;> >stack.push(num);> >stack.pop();> >stack.pop();> >stack.pop();> > >while> (!stack.empty()) {> >cout << stack.top() <<>' '>;> >stack.pop();> >}> }> |
>
>산출
건너뛰기 목록
22 21>
시간 복잡도: 이 프로그램의 시간 복잡도는 O(N)입니다. 여기서 N은 스택의 총 요소 수입니다. while 루프는 N번 반복하여 스택에서 요소를 꺼내서 인쇄합니다.
공간 복잡도: 이 프로그램의 공간 복잡도는 O(N)입니다. 여기서 N은 스택의 총 요소 수입니다. 스택 데이터 구조는 저장된 요소 수에 비례하여 공간을 사용합니다. 이 경우 스택의 최대 크기는 5이므로 공간 복잡도는 일정하며 O(1)로도 간주할 수 있습니다.
코드 설명:
- 해당 기능을 사용하려면 iostream 헤더 파일을 포함하거나 코드에 포함하세요.
- 이미 포함된 경우 해당 기능을 사용하려면 코드에 스택 헤더 파일을 포함하십시오. 그러면 이미 내장된 기능이 있으므로 스택 헤더 파일이 필요하지 않습니다.
- 클래스를 호출하지 않고 사용하려면 코드에 std 네임스페이스를 포함하세요.
- main() 함수를 호출합니다. 프로그램 로직은 이 기능 내에 추가되어야 합니다.
- 정수 값을 저장할 스택을 만듭니다.
- push() 함수를 사용하여 값 21을 스택에 삽입합니다.
- push() 함수를 사용하여 값 22를 스택에 삽입합니다.
- push() 함수를 사용하여 값 24를 스택에 삽입합니다.
- push() 함수를 사용하여 값 25를 스택에 삽입합니다.
- 변수 값을 입력하려면 정수 변수 num을 사용하세요. 여기서 그 값은 0이지만 cin>> num을 사용하여 정수 값을 할당할 수 있습니다.
- push() 함수를 사용하여 num 변수의 값을 삽입합니다.
- pop() 함수를 사용하여 스택에서 최상위 요소, 즉 25를 제거합니다. 이제 최상위 요소는 24가 됩니다.
- pop() 함수를 사용하여 스택에서 최상위 요소, 즉 24를 제거합니다. 이제 최상위 요소는 22가 됩니다.
- while 루프와empty() 함수를 사용하여 스택이 비어 있지 않은지 확인하십시오. ! NOT 연산자입니다. 따라서 스택이 비어 있지 않으면 empty() 함수는 false를 반환하고 NOT 연산자는 이를 true로 변환하고 while 루프는 계속 실행됩니다. 그러나 스택이 비게 되면 empty() 함수는 true를 반환하고 NOT 연산자는 이를 false로 만들고 루프가 끝납니다.
- 콘솔에 스택의 현재 내용을 인쇄합니다.
- 스택에서 pop() 함수를 호출합니다.
- while 루프 본문의 끝입니다.
- main() 함수 본문의 끝입니다.
스택 기능 목록:
- C++ STL의 스택::top()
- C++ STL의 stack::empty() 및 stack::size()
- C++ STL의 stack::push() 및 stack::pop()
- C++ STL의 스택::swap()
- C++ STL의 스택::emplace()
- C++ 스택에 관한 최근 기사