C 언어를 사용하여 배열 기반 대기열을 구현하는 방법
프로그래밍에서 큐는 일반적으로 사용되는 데이터 구조입니다. 많은 프로그래밍 언어에는 Java의 Queue 및 Python의 deque와 같은 자체 큐 구현이 있습니다. 그러나 C 언어에는 기성 대기열 구현이 없습니다. 따라서 C 언어에서는 배열을 정의하고 포인터와 기타 트릭을 사용하여 큐를 구현해야 합니다.
이번 글에서는 C언어를 이용하여 배열 기반의 큐를 구현하는 방법을 소개하겠습니다.
- 큐 구조 정의
큐 구조를 정의하여 큐 작업을 구현할 수 있습니다. 이 큐 구조에는 큐 크기, 헤드 및 테일 포인터, 요소 데이터 등과 같은 정보가 포함됩니다.
#define MAX_SIZE 100 typedef struct queue { int size; int front; int rear; int data[MAX_SIZE]; } Queue;
위 코드에서는 큐의 최대 크기를 나타내기 위해 MAX_SIZE 상수를 정의하고, 구조를 정의하여 Queue라는 큐를 선언했습니다.
그 중 size는 큐의 크기를 나타내고, front는 큐 헤드 포인터를 나타내고, Rear는 큐 tail 포인터를 나타내고, data는 요소를 저장하는 배열입니다.
- 큐 초기화 작업
큐 구현에서는 큐의 올바른 사용을 보장하기 위해 큐 초기화 작업이 먼저 수행되어야 합니다.
void init(Queue *q) { q->size = 0; q->front = 0; q->rear = -1; }
위 코드에서는 큐 구조를 가리키는 포인터 q를 매개변수로 받아들이고 큐의 크기를 0으로, 헤드 포인터를 0으로, 테일 포인터를 0으로 설정하는 초기화 함수 init를 정의합니다. - 1, 대기열이 비어 있음을 나타냅니다.
- 요소 대기열에 넣기 작업
큐의 대기열에 넣기 작업은 대기열 끝에 요소를 배치하는 것입니다. 여기서 구현은 요소를 배열 데이터 끝에 추가하고 후면 포인터의 위치를 업데이트하는 것입니다. .
int enqueue(Queue *q, int value) { if(q->size == MAX_SIZE) { return 0; } q->rear++; q->data[q->rear] = value; q->size++; return 1; }
위 코드에서 먼저 대기열이 꽉 찼는지 확인합니다. 꽉 차 있으면 0을 반환하여 삽입이 실패했음을 나타냅니다. 그렇지 않으면 후면 포인터를 한 비트 뒤로 이동하고 요소 값을 데이터 끝에 할당합니다. 배열, 큐 크기가 1만큼 증가하고 마지막으로 삽입 성공을 나타내기 위해 1이 반환됩니다.
- 요소 대기열 제거 작업
큐의 대기열 제거 작업은 대기열의 선두에 있는 요소를 꺼내고 전면 포인터의 위치를 업데이트하는 것입니다. 여기서 구현된 아이디어는 데이터의 앞부분에 있는 요소 값을 반환하고 앞 포인터를 1비트 뒤로 이동하며 동시에 큐의 크기를 업데이트하는 것입니다.
int dequeue(Queue *q) { if(q->size == 0) { return -1; } int value = q->data[q->front]; q->front++; q->size--; return value; }
위 코드에서는 먼저 큐가 비어 있는지 확인합니다. 비어 있으면 -1을 반환하여 큐가 비어 있음을 나타냅니다. 그렇지 않으면 데이터의 맨 앞 위치에 있는 요소 값을 반환하고 맨 앞으로 이동합니다. 포인터를 1비트 뒤로 보냅니다. 큐의 크기를 1만큼 줄이고 요소 값을 반환합니다.
- 큐 구현 테스트
이제 큐의 다양한 작업을 구현했으므로 테스트해 보겠습니다.
#include <stdio.h> int main() { Queue myQueue; init(&myQueue); enqueue(&myQueue, 1); enqueue(&myQueue, 2); enqueue(&myQueue, 3); printf("%d\n", dequeue(&myQueue)); printf("%d\n", dequeue(&myQueue)); printf("%d\n", dequeue(&myQueue)); return 0; }
위 테스트 코드에서는 먼저 myQueue라는 큐를 정의하고 init 함수가 이를 초기화합니다. . 그런 다음 enqueue 함수를 사용하여 숫자 1, 2, 3을 대기열에 삽입하고 dequeue 함수를 사용하여 대기열에서 요소를 제거하여 화면에 출력합니다.
여기서 출력되는 내용은 다음과 같습니다.
1 2 3
- Summary
이 문서에서는 C 언어를 사용하여 배열 기반 대기열을 구현하는 방법을 배웠습니다. 대기열 구조 및 관련 작업 기능을 정의함으로써 대기열의 요소를 쉽게 추가, 삭제 및 액세스할 수 있습니다. 큐를 구현하기 위해 포인터를 사용하는 것은 번거롭지만 이 방법은 큐의 원리를 더 잘 이해하는 데 도움이 될 수 있으며 데이터 구조 및 알고리즘을 학습하는 데 큰 도움이 됩니다.
위 내용은 C 언어를 사용하여 배열 기반 대기열을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8의 JIT 컴파일은 자주 실행되는 코드를 컴퓨터 코드로 컴파일하여 성능을 향상시켜 계산이 많은 응용 프로그램에 도움이되고 실행 시간을 줄입니다.

이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

이 기사에서는 PHP에서 강력한 인증 및 승인을 구현하여 무단 액세스를 방지하고 모범 사례를 자세히 설명하고 보안 향상 도구를 권장합니다.

이 기사는 PHP의 대칭 및 비대칭 암호화에 대해 논의하여 적합성, 성능 및 보안 차이를 비교합니다. 대칭 암호화는 더 빠르고 벌크 데이터에 적합하지만 안전한 키 교환에는 비대칭이 사용됩니다.

기사는 PHP, 커버 단계, 보안 측정, 최적화 기술 및 Solutions의 일반적인 오류를 사용하여 데이터베이스에서 데이터 검색에 대해 논의합니다. 문자 수 : 159

이 기사는 CSRF 토큰, 동일한 사이트 쿠키 및 적절한 세션 관리를 포함하여 PHP의 CSRF 공격을 방지하는 전략에 대해 설명합니다.

이 기사는 MySQL 데이터베이스 상호 작용에 대한 PHP의 MySQLI_Query () 및 MySQLI_Fetch_Assoc () 함수에 대해 설명합니다. 그것은 그들의 역할, 차이점을 설명하고 그들의 사용의 실질적인 예를 제공합니다. 주요 논쟁은 USIN의 이점에 중점을 둡니다
