큐는 특정 순서에 따라 큐 요소를 삽입하고 제거하는 선형 데이터 구조입니다. 배열과 연결 목록을 사용하여 C++에서 대기열을 구현할 수 있습니다. 두 대기열 구현 모두 고유한 장점과 용도가 있습니다. 이 튜토리얼에서는 배열 기반 큐와 연결 목록 기반 큐를 구별합니다.
큐는 요소 삽입 및 삭제에 FIFO(선입선출) 원칙을 사용하는 일련의 요소입니다. 컴퓨터 과학의 대기열은 실제 대기열과 유사합니다. 대기열에 가장 먼저 들어간 사람이 먼저 제거됩니다.
큐 데이터를 제거하는 프로세스를 deQueue라고 합니다. 큐에 데이터를 추가하는 작업을 enQueue라고 합니다.
큐에는 두 개의 포인트가 있습니다 -
After - 대기열의 요소가 여기에서 삽입됩니다.
Front - 대기열의 요소가 여기에서 제거됩니다.
두 가지 방법으로 대기열을 구현할 수 있습니다. -
배열 기반 대기열
목록 기반 대기열 또는 연결 목록 대기열
배열을 사용하여 구현한 대기열을 배열 기반 대기열이라고 합니다. 이는 대기열의 삭제 지점과 삽입 지점을 각각 나타내는 Front 및 Rear의 두 포인터를 사용합니다.
이 구현에서는 데이터를 삽입하기 전에 배열 크기가 미리 정의됩니다. 이는 대기열 데이터를 삽입하고 삭제하는 가장 간단한 방법입니다.
목록 기반 대기열 또는 연결 목록 기반 대기열에서는 대기열 구현에 연결 목록이 사용됩니다. 각 대기열 노드는 두 부분으로 구성됩니다. 한 부분은 데이터를 저장하는 데 사용되고 다른 부분은 링크 부분 또는 메모리 부분입니다.
각 대기열 요소는 다음 대기열 요소의 메모리에 연결됩니다. 목록 기반 대기열에는 두 개의 포인터가 있습니다 -
이전 포인터 - 마지막 대기열 요소의 메모리를 나타냅니다.
백 포인터 - 대기열의 첫 번째 요소를 나타내는 메모리입니다.
S.No | 의 중국어 번역은 일련번호 | 입니다.
배열 기반 대기열 |
연결된 목록 기반 대기열 |
|
---|---|---|---|---|
1 |
복잡함 |
작업 구현 및 수행이 쉽습니다. |
구현이 쉽지 않네요. |
|
2 |
검색 과정 |
쉽고 빠르게 검색하는데 도움이 됩니다. |
느리고 검색이 어렵습니다. |
|
3 |
대기열 크기 |
초기화 시 대기열 크기를 정의합니다. |
큐를 초기화할 때 큐 크기를 정의할 필요가 없습니다. |
|
4 |
삽입 및 삭제 작업 |
처음에는 데이터를 삽입하기 어렵지만 대기열의 끝에서는 데이터를 삽입하기 쉽습니다. |
큐의 양쪽 끝에서 간단한 데이터 삽입을 제공합니다. |
|
5 |
데이터 액세스 |
랜덤 데이터 액세스. |
큐 요소에 대한 순차적 액세스를 제공합니다. |
|
6 |
대기열 크기 조정 |
대기열 크기 변경은 어렵습니다. |
대기열 크기 조정은 쉽습니다. |
|
7 |
메모리 사용량 |
메모리를 덜 소모합니다. |
더 많은 메모리를 소비합니다. |
|
8 |
장점 |
|
|
|
9 |
단점 |
|
|
큐의 크기가 고정되어 있고 큐 크기를 변경할 필요가 없는 경우 배열을 사용하여 큐를 구현할 수 있습니다. 배열 기반 대기열은 검색이 빠르고 메모리를 덜 소모하는 경우에도 유용합니다.
연결 목록 기반 대기열 구현은 대기열 크기가 동적이고 대기열 요소가 여러 번 삽입되고 삭제되는 경우 매우 유용합니다. 더 많은 메모리를 소비하지만 대규모 애플리케이션에 적합합니다
배열 기반 대기열과 연결 목록 기반 대기열 사용은 요구 사항에 따라 다릅니다. 대규모 애플리케이션에서는 배열 기반 큐가 실패하고 대신 연결된 목록 큐가 사용됩니다.
배열 기반 대기열은 메모리를 덜 사용하지만 백엔드에 요소를 삽입한 후 첫 번째 요소 앞에 사용되지 않은 일부 메모리가 남아 있기 때문에 많은 메모리를 낭비합니다.
위 내용은 배열 큐와 연결리스트 큐의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!