스택 큐 예제

고정 크기 스택 추상화에서 용량은 변경되지 않고 유지되므로 맨 위 용량에 도달하면 스택 개체가 예외를 throw합니다. 스택 클래스의 전체 구현은 ArrayStack.java를 참조하십시오. 기본 링크된 목록 구현은 꼬리 포인터가 있는 개별적으로 연결된 목록을 사용하여 큐 의 뒷면을 추적합니다. 하나의 사용자 스택과 하나의 함수 호출 스택을 사용하여 큐를 구현할 수도 있습니다. 다음은 재귀(또는 함수 호출 스택)가 하나의 사용자 정의 스택만 사용하여 큐를 구현하는 데 사용되는 메서드 2를 수정한 것입니다. 둘째, 스택의 맨 위(앞)에서 큐를 푸시하고 나중에 스택을 팝합니다. 스택을 수행합니다.너비 시간. 스택 및 큐에 대한 실제 사용 사례가 많이 있으므로 이를 이해하면 많은 데이터 저장소 문제를 쉽고 효과적인 방식으로 해결할 수 있습니다. Python에서는 기본 제공 List 데이터 구조를 사용하여 스택과 큐를 구현할 수 있습니다. 파이썬에는 또한 하나의 개체에서 스택 및 큐 작업을 효율적으로 제공 할 수있는 deque 라이브러리가 있습니다. 마지막으로 데이터를 보다 엄격하게 제어하기 위해 스택 및 큐 클래스를 만들었습니다. 무언가를 대기열에 넣으려면 꼬리 포인터가 가리키는 항목의 뒷면에 추가하기만 하면 됩니다. 따라서 이전 꼬리는 추가되는 항목과 비교하여 다음으로 간주되며 꼬리 포인터는 새 항목을 가리킵니다.

목록이 비어 있으면 꼬리 이터레이터가 아무 것도 참조하지 않으므로 다음 예제의 도움으로 설명할 수 있습니다. 스택에서 마지막으로 입력하는 항목이 가장 먼저 나옵니다. 큐에서 우리가 입력하는 첫 번째 항목은 첫 번째 로 나옵니다. 방법 2 (deQueue 작업을 비용이 많이 드는 만들기 때문에)이 메서드에서 en-queue 작업에서 새 요소가 스택1의 맨 위에 입력됩니다. 큐 해제 작업에서 stack2가 비어 있으면 모든 요소가 stack2로 이동하고 마지막으로 스택2의 맨 위가 반환됩니다. 배열은 각 요소에 직접 적으로 일정한 시간에 액세스할 수 있는 임의 액세스 데이터 구조입니다. 임의 액세스의 전형적인 그림은 책입니다 – 책의 각 페이지는 다른 사람과 독립적으로 열 수 있습니다. 임의 액세스는 이진 검색과 같은 많은 알고리즘에 매우 중요합니다. 그러나 앞색 인덱스 앞에 여유 공간이 있습니다. 새 항목을 대기열에 대 한 해당 공간을 사용 합니다., 즉 다음 항목은 인덱스 0에 저장 됩니다., 다음 1, 앞까지. 이러한 모델을 큐 주위랩 또는 순환 큐 큐라고 합니다: 큐는 후면이라는 목록의 한 쪽에서만 요소를 삽입할 수 있는 선형 데이터 구조이며 요소는 전면이라고 하는 다른 쪽에서만 삭제할 수 있습니다.

큐 데이터 구조는 FIFO(선착권 우선) 원칙, 즉 목록에서 처음에 삽입된 요소가 목록에서 제거되는 첫 번째 요소입니다. 큐에 요소를 삽입하는 것을 큐 내 작업이라고 하며 요소의 삭제를 큐 제거 작업이라고 합니다. 큐에서 우리는 항상 두 개의 포인터를 유지, 하나는 첫 번째에 삽입 된 요소를 가리키는 여전히 전면 포인터와 두 번째 포인터는 후면 포인터와 마지막에 삽입 된 요소를 가리키는 목록에 존재. 다음은 스택 및 큐에 대한 C 프로그래밍 예제 목록입니다. 연결된 목록에서 첫 번째 요소에 액세스하는 작업은 O (1) {displaystyle O(1)} 작업입니다. 목록에는 O (1) {displaystyle O(1)}(시간/공간 절충이 이루어지는 내용에 따라 다름)인 빈/충만도를 확인하는 포인터가 포함되어 있습니다. 대부분의 경우 스택 사용자는 getSize() 작업을 사용하지 않으므로 최적화하지 않음으로써 약간의 공간을 절약할 수 있습니다.