데이터 구조 및 알고리즘: 대기열
최근에 우리는 스택 데이터 구조 와 JavaScript를 사용하여 스택의 자체 버전을 구현하는 방법을 보았습니다. 이 기사에서는 동일한 버킷에 들어가고 종종 스택과 함께 언급되는 또 다른 유형의 데이터 구조를 볼 것입니다. 이번에는 대기열 에 대해 이야기하겠습니다 .
대기열: 개념
대기열은 컴퓨터 과학 분야에서 스택만큼 중요합니다. 다양한 상황에서 사용됩니다. 많은 의사 소통, 일정 및 우선 순위 지정이 필요한 크고 큰 시스템에서 필수라고 주장할 수 있습니다.
# 대기열이란 무엇입니까?
큐는 항목이 차례로 배열되는 선형 데이터 구조입니다. 스택과 같은 방식으로 작업(삽입 및 삭제)이 수행되는 방식과 관련하여 몇 가지 제한 사항이 있습니다. 큐에서는 스택의 경우처럼 한쪽 끝이 아닌 양쪽 끝에서 작업이 이루어집니다. 대기열은 FIFO(First In First Out) 원칙에 따라 작동합니다 . 일상 생활의 예를 들어 대기열을 설명하고 싶다면 스타벅스 매장에서 커피를 기다리는 사람들의 줄을 볼 수 있습니다. 먼저 오는 자가 먼저 섬김을 받음 등등...
그래서 누군가가 커피를 사러 오면 줄 맨 뒤에 갑니다 . 데이터 구조 측면에서 우리는 대기열 에 추가한다고 말할 수 있습니다. 즉, 큐의 뒤에 새 요소를 삽입하고 있습니다. 반면에 대기열의 맨 앞에 있는 사람 이 서비스를 받으면 다음 사람에게 자리를 양보하는 식으로 계속됩니다. 다시 말하지만, 데이터 구조 측면에서 우리는 요소를 큐에서 빼거나 큐 의 헤드에서 요소를 제거 한다고 말할 수 있습니다.
# 큐를 사용하는 이유는 무엇입니까?
큐가 다른 유형의 데이터 구조보다 적합한 다양한 시나리오를 셀 수 없습니다. 그러나 특정 상황에서 대기열을 사용해야 할 수도 있다는 통찰력을 제공할 수 있는 두 가지 주요 이유를 나열하겠습니다.
- 대기 중…
2. 공정한 주문…
해결하려는 문제가 먼저 오는 사람이 가장 먼저 서비스를 받아야 한다는 것을 보장하기를 원한다면 구조를 위한 대기열이 필요합니다. 대기열이 FIFO 원칙을 따른다는 사실은 공정한 주문을 보장합니다.
대기열: JavaScript로 구현
이제 JavaScript를 사용하여 사용자 지정 버전의 대기열을 구현할 것입니다. 지난 글에서 우리는 필요에 따라 배열이나 연결 목록을 사용하여 스택을 구현할 수 있다고 언급했습니다. 그러나 연결 목록을 사용하는 대기열 데이터 구조의 경우 더 현명한 접근 방식이 될 것입니다. 왜요?
간단히 말해서 배열을 사용하는 경우 예를 들어 대기열 에서 빼기 작업을 수행하려면 대기열에서 요소를 제거할 때마다 배열을 이동해야 합니다. 시간이 많이 걸립니다. 따라서 솔루션의 시간 복잡성이 증가합니다. 또한 요소를 대기열에서 빼낸 후 이동을 수행하지 않는다고 가정하면 배열에 공백을 남겨두기 때문에 메모리 낭비가 발생할 수 있습니다. 다시 말하지만 이것은 솔루션의 공간 복잡성을 증가시킵니다.
이제 대신 연결된 목록을 사용하여 해봅시다.
아직 끝나지 않았습니다…이 코드 조각은 약간의 개선이 필요합니다…
대기열: 이제 귀하의 차례입니다…
# 작업 1
선호하는 프로그래밍 언어를 사용하여 새 작업 back()을 추가하여 대기열의 뒤에 값을 표시합니다.
# 작업 2
대기열을 인쇄하려면 작업이 필요합니다. 작업을 수행해 주시겠습니까? 그래도 선호하는 프로그래밍 언어를 사용하십시오…
잠시만 기다려주세요! 떠나기 전에, 원한다면 연결하자…
- YouTube 에서
- 링크드인 에서
- 트위터 에서

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































