Как напечатать значения Queue в C?

Сначала я прошу прощения за мой плохой английский, а также за мой плохой код. Так что это реализация Queue как массива с c, но я думаю, что есть проблема с кодом. Я создал функцию с именем "ExtractEven", которая принимает q из структуры структуры typedef и возвращает очередь, которая будет иметь только четные значения. но в основном я понял, что мне нужна функция для отображения.. но это не работает.. независимо от того, сколько раз я пытаюсь, но этот код выполняется без каких-либо выходных данных. Может кто-нибудь мне помочь?

    #include <stdio.h>
#include <stdlib.h>
#define SIZE 10
#include <math.h>
#include<conio.h>

typedef int TYPE;

typedef struct queue {
TYPE array [SIZE];
int front,rear,count;
}Queue;

void init (Queue *q) {
q->front=0;
q->rear=0;
q->count=0;
}

int isEmpty(Queue q){
if (q.count==0) return 1;
else return 0;
}

int isFull(Queue q){
if (q.count==SIZE) return 1;
else return 0;
}

int enqueue (Queue *q,TYPE x){
    if (isFull(*q))
    return 0;
else {
q->array[q->rear]=x;
q->rear=(q->rear+1)%SIZE;
q->count++;
return 1;
}}



int dequeue (Queue *q,TYPE *x){
if (isEmpty(*q)){
    return 0;
    printf("Empty Queue");}
else {
*x=q->array[q->front];
q->front=(q->front+1)%SIZE;
q->count--;
return 1;
}}

Queue ExtractEven (Queue q){
Queue q2;
Queue q3;
init(&q2);
init(&q3);
TYPE x;
while(dequeue(&q,&x)){
enqueue(&q3,x);
if(x%2==0)
enqueue(&q2,x);
}
while(dequeue(&q3,&x)){
    enqueue(&q,x);
}
return q2;
}

int display(Queue q,TYPE x)
             {

                   int i;
                   for(i=q.front;i<=q.rear;i++)
                       {
                            printf("%d--",x);
                       }
                            return x;
             }




int main(){
Queue q;
init(&q);
Queue q2;
init(&q2);
TYPE x;
 enqueue(&q,67);
 enqueue(&q,45);
 enqueue(&q,17);
 enqueue(&q,5);
 enqueue(&q,98);
 enqueue(&q,78);
int display(q2,x);
 q=ExtractEven(q);
 int display(q2,x);
    return 0;
}

0 ответов

Другие вопросы по тегам