Программа для реализации очереди на основе массива на языке Си
Это моя программа для реализации очереди с использованием массива, этот код не работает нормально для всех
операции, кроме первой операции deque.Когда я вызываю first dequeue, чем он должен показать мне вывод 12, но он не отображается
я новичок в программировании может ли кто нибудь мне помочь
выходные данные этой программы приведены ниже
136 14 13 1342222119 -1 -1
Что я уже пробовал:
#include<stdio.h> #include<stdlib.h> struct queue{ int capacity; int rear; int front; int *array; }; struct queue* createqueue(int capacity){ struct queue* nque=(struct queue*)malloc(sizeof(struct queue)); nque->capacity=capacity; nque->front=-1; nque->rear=-1; nque->array=(int*)malloc(sizeof(int)*capacity); return nque; } int isempty(struct queue* amp){ return(amp->front==-1&&->rear==-1); } int isfull(struct queue* amp){ return (((amp->rear)+1)%(amp->capacity)==amp->front); } void enqueue(struct queue* amp,int x) { if(isfull(amp)) return; else if(isempty(amp)) { amp->rear=0; amp->front=0; } else { amp->rear=(amp->rear+1)%(amp->capacity); } amp->array[amp->rear]=x; } int dequeue(struct queue* amp) { if(isempty(amp)) return -1; else if(amp->front==amp->rear) { amp->front=-1; amp->rear=-1; return(amp->array[amp->front]); } else { amp->front=((amp->front)+1)%(amp->capacity); return(amp->array[amp->front]); } } int main(){ struct queue* queue=createqueue(10); enqueue(queue,12); enqueue(queue,136); enqueue(queue,14); enqueue(queue,13); enqueue(queue,16); printf("\n%d",dequeue(queue)); printf("\n%d",dequeue(queue)); printf("\n%d",dequeue(queue)); printf("\n%d",dequeue(queue)); printf("\n%d",dequeue(queue)); printf("\n%d",dequeue(queue)); printf("\n%d",dequeue(queue)); }