먼저, 우리는 스택이 뭐야? 그리고 큐가 뭐야? 개별적으로 설명하고 스택과 큐의 차이점에 대해 논의하겠습니다.
스택이란 무엇입니까?
데이터 구조. 배열의 경우 임의 접근이 가능합니다. 즉, 배열의 모든 요소에 언제든지 접근할 수 있는 반면, 스택에서는 순차 접근만 가능합니다. 삽입 및 삭제 규칙을 따르는 컨테이너입니다. 원칙을 따릅니다. LIFO(후입선출) 삽입과 삭제가 한쪽에서 일어나는 방식 맨 위 . 스택에는 유사한 데이터 유형의 요소를 삽입할 수 있습니다. 즉, 다른 데이터 유형 요소를 동일한 스택에 삽입할 수 없습니다. 두 가지 작업은 LIFO에서 수행됩니다. 푸시 그리고 팝 작업.
스택에서 수행할 수 있는 작업은 다음과 같습니다.
스택에서는 맨 위 마지막으로 삽입된 요소를 추적하는 데 사용되는 포인터입니다. 스택을 구현하려면 스택의 크기를 알아야 합니다. 스택의 크기를 얻으려면 메모리를 할당해야 합니다. 스택을 구현하는 방법에는 두 가지가 있습니다.
대기열이란 무엇입니까?
ㅏ
스택과 큐의 유사점
스택과 큐 사이에는 두 가지 유사점이 있습니다.
스택과 큐는 모두 선형 데이터 구조입니다. 즉, 요소가 순차적으로 저장되고 단일 실행으로 액세스됩니다.
스택과 큐 모두 크기가 유연합니다. 즉, 런타임 요구 사항에 따라 늘리거나 줄일 수 있습니다.
스택과 큐의 차이점
스택과 큐의 차이점은 다음과 같습니다.
비교의 기초 | 스택 | 대기줄 |
---|---|---|
원칙 | 이는 마지막에 삽입된 요소가 가장 먼저 삭제된다는 것을 의미하는 LIFO(Last In-First Out) 원칙을 따릅니다. | 이는 FIFO(선입선출) 원칙을 따르며, 이는 먼저 추가된 요소가 목록에서 제거되는 첫 번째 요소가 됨을 의미합니다. |
구조 | 삽입과 삭제가 모두 수행되는 끝이 하나만 있으며 해당 끝을 상단이라고 합니다. | 두 개의 끝, 즉 앞끝과 뒤끝이 있습니다. 앞쪽 끝은 삭제에 사용되고 뒤쪽 끝은 삽입에 사용됩니다. |
사용된 포인터 수 | 여기에는 최상위 포인터라고 알려진 포인터가 하나만 포함됩니다. 최상위 포인터는 마지막으로 삽입된 주소 또는 스택의 최상위 요소를 보유합니다. | 여기에는 두 개의 포인터 전면 및 후면 포인터가 포함되어 있습니다. 전면 포인터는 첫 번째 요소의 주소를 보유하고 후면 포인터는 대기열의 마지막 요소 주소를 보유합니다. |
수행된 작업 | 푸시와 팝이라는 두 가지 작업을 수행합니다. 푸시 작업은 목록에 요소를 삽입하고 팝 작업은 목록에서 요소를 제거합니다. | 주로 enqueue와 dequeue라는 두 가지 작업을 수행합니다. 대기열에 넣기 작업은 대기열에 요소를 삽입하는 작업을 수행하는 반면 대기열에서 빼기 작업은 대기열에서 요소를 삭제하는 작업을 수행합니다. |
빈 상태 검사 | top==-1이면 스택이 비어 있음을 의미합니다. | front== -1 또는 front = Rear+1이면 대기열이 비어 있음을 의미합니다. |
전체 상태 검사 | top== max-1인 경우 이 조건은 스택이 가득 찼음을 의미합니다. | Rear==max-1인 경우 이 조건은 스택이 가득 찼음을 의미합니다. |
변형 | 유형이 없습니다. | 우선순위 큐, 순환 큐, 이중 종료 큐의 세 가지 유형이 있습니다. |
구현 | 구현이 더 간단합니다. | 스택보다 구현이 비교적 복잡합니다. |
심상 | 스택은 수직 컬렉션으로 시각화됩니다. | 대기열은 수평 컬렉션으로 시각화됩니다. |