스택 예제

스택 클래스의 전체 구현은 ListStack.java를 참조하십시오. 스택에는 요소의 삽입 및 삭제에 제한이 있습니다. 요소는 스택의 한쪽 끝(예: $$top$$)에서만 삽입하거나 삭제할 수 있습니다. 맨 위에 있는 요소를 $$top$$ 요소라고 합니다. 요소를 삽입하고 삭제하는 작업을 각각 $$push()$$와 $$pop()$$라고 합니다. 스택의 많은 실제 예제가 있습니다. 매점에 서로 쌓인 접시의 예를 생각해 본다. 맨 위에 있는 플레이트는 제거되는 첫 번째 플레이트, 즉 가장 맨 아래 위치에 배치된 플레이트가 가장 긴 기간 동안 스택에 남아 있습니다. 그래서, 그것은 단순히 LIFO를 따라 볼 수 있습니다 (마지막 아웃에서 마지막 아웃)/FILO (마지막 아웃에서 첫 번째) 순서. 스택은 작업이 수행되는 특정 순서를 따르는 선형 데이터 구조입니다. 순서는 LIFO (마지막 첫 번째 아웃) 또는 FILO (마지막 아웃에서 첫 번째)일 수 있습니다. 스택은 대부분의 프로그래밍 언어에서 일반적으로 사용되는 ADT(추상 데이터 유형)입니다. 예를 들어 카드 데크 나 접시 더미 등 실제 스택처럼 작동하므로 스택이라는 이름이 붙여져 있습니다.

이것은 다음 예제의 도움으로 설명 할 수 있습니다 : 실패, 예외를 제기. 따라서 벡터(StackVector 참조)를 사용하여 무한한 증가를 허용하여(가끔 O(n) 지연이 발생하여 구현하는 것이 더 합리적입니다. 고정 크기 스택 추상화에서 용량은 변경되지 않고 유지되므로 맨 위 용량에 도달하면 스택 개체가 예외를 throw합니다. 스택 클래스의 전체 구현은 ArrayStack.java를 참조하십시오. 스택의 가장 인기있는 예는 결혼 파티에서 접시입니다. 신선한 접시를 맨 위로 밀어 위에서 튀어 나온다. 배열은 각 요소에 직접 적으로 일정한 시간에 액세스할 수 있는 임의 액세스 데이터 구조입니다. 임의 액세스의 전형적인 그림은 책입니다 – 책의 각 페이지는 다른 사람과 독립적으로 열 수 있습니다.

임의 액세스는 이진 검색과 같은 많은 알고리즘에 매우 중요합니다. 예를 들어, 트레이 스택에서 트레이를 맨 위에 가져가서 교체하지 않으면 두 번째 트레이가 자동으로 해당 스택의 상단 요소(트레이)가 됩니다. 실제 스택은 한쪽 끝에서만 작업을 허용합니다. 예를 들어 스택 상단에서만 카드 나 접시를 배치하거나 제거할 수 있습니다. 마찬가지로 스택 ADT는 모든 데이터 작업을 한쪽 끝에서만 허용합니다. 지정된 시간에 스택의 맨 위 요소만 액세스할 수 있습니다.

Thanks! You've already liked this