스택과 큐에 대한 설명을 시도하고 지나치게 단순화하기 위해 체인의 한쪽 끝에서 액세스 할 수있는 정보 요소의 동적 체인이며 이들 간의 유일한 차이점은 다음과 같습니다.
스택 작업시
- 체인의 한쪽 끝에 요소를 삽입하고
- 체인의 같은 끝에서 요소를 검색 및 / 또는 제거
대기열과 함께
- 체인의 한쪽 끝에 요소를 삽입하고
- 다른 쪽 끝에서 검색 / 제거
참고 : 체인에서 요소를 검색하거나 요소를 읽거나 값에 액세스 할 때 인스턴스가 있지만 인스턴스를 제거 할 때 인스턴스가 있기 때문에이 문맥에서 retrieve / remove의 추상 표현을 사용하고 있습니다. 체인과 마지막으로 동일한 호출로 두 작업을 수행하는 경우가 있습니다.
또한 단어 요소는 가상 체인을 최대한 추상화하고 특정 프로그래밍 언어 용어와 분리하기 위해 의도적으로 사용됩니다. element라고하는이 추상 정보 엔터티는 언어에 따라 포인터, 값, 문자열 또는 문자, 객체 등 모든 것이 될 수 있습니다.
대부분의 경우 실제로는 값 또는 메모리 위치 (예 : 포인터)입니다. 나머지는 언어 전문 용어 뒤에이 사실을 숨기고 있습니다 <
큐는 요소의 순서가 중요하고 요소가 프로그램에 처음 왔을 때와 정확히 같아야 할 때 도움이 될 수 있습니다. 예를 들어 오디오 스트림을 처리하거나 네트워크 데이터를 버퍼링 할 때. 또는 모든 유형의 저장 및 전달 처리를 수행 할 때. 이 모든 경우에 프로그램에 제공된 순서대로 요소 순서대로 출력해야합니다. 그렇지 않으면 정보의 의미가 멈출 수 있습니다. 따라서 일부 입력에서 데이터를 읽고 일부 처리를 수행하고 대기열에 데이터를 쓰는 부분과 대기열에서 데이터를 검색하여 추가 처리 또는 데이터 전송을 위해 다른 대기열에 저장하는 부분에서 프로그램을 중단 할 수 있습니다 .
스택은 프로그램의 즉각적인 단계에서 사용될 요소를 임시로 저장해야 할 때 유용 할 수 있습니다. 예를 들어, 프로그래밍 언어는 일반적으로 스택 구조를 사용하여 변수를 함수에 전달합니다. 그들이 실제로하는 일은 스택에 함수 인수를 저장 (또는 푸시) 한 다음 스택에서 동일한 수의 요소를 제거하고 검색 (또는 팝)하는 함수로 점프하는 것입니다. 그렇게하면 스택의 크기는 함수의 중첩 호출 수에 따라 달라집니다. 또한 함수를 호출하고 수행 한 작업을 마친 후에는 스택을 호출하기 전과 동일한 조건으로 스택을 유지합니다! 이렇게하면 다른 기능이 작동하는 방식을 무시하고 모든 기능이 스택으로 작동 할 수 있습니다.
마지막으로, 비슷한 개념에 대해 다른 용어가 사용된다는 것을 알아야합니다. 예를 들어 스택을 힙이라고 할 수 있습니다. 이러한 개념의 하이브리드 버전도 있습니다. 예를 들어 이중 엔드 큐는 스택과 큐와 동시에 동시에 작동 할 수 있습니다. 두 엔드가 동시에 액세스 할 수 있기 때문입니다. 또한 데이터 구조가 스택 또는 대기열로 제공된다고해서 반드시 그러한 구조로 구현 된 것은 아닙니다. 데이터 구조는 단순히 그렇게 동작하도록 만들어 질 수 있기 때문입니다. 즉, 데이터 구조에 푸시 및 팝 방법을 제공하면 마술처럼 스택이됩니다!