gpt4 book ai didi

c - 使用数组实现最大大小为 5 的固定大小队列

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:48 24 4
gpt4 key购买 nike

我想用数组实现一个固定大小的队列。

我下面的代码编译并运行成功,但在队列中插入和删除 2 或 3 次后终止。也许这段代码有一些逻辑错误,我找不到它们。

    #include<stdio.h>
#include<string.h>
struct queue {
int contents[5];
int front;
int count;
};

void initQueue(struct queue * q);
void enQueue(struct queue * q, int element);
int deQueue(struct queue * q);
void display( struct queue q);
void printMenu();

int main()
{
struct queue p;
int data,ch, data1;
initQueue(&p);
do {
printMenu();
printf("Enter your choice\n");
scanf("%d",&ch);
switch(ch) {
case 1:
printf("Enter the element to be inserted/entered\n");
scanf("%d",&data);
enQueue(&p, data);
break;
case 2:
data1 = deQueue(&p);
if(data1 != -1000)
printf("The deleted element is %d\n",data1);
break;
case 3:
printf("The contents of the queue are");
display(p);
printf("\n");
break;
default:
return 0;
}
} while(1);
return 0;
}

void printMenu()
{
printf("Choice 1 : Enter element into Queue\n");
printf("Choice 2 : Delete element from Queue\n");
printf("Choice 3 : Display\n");
printf("Any other choice : Exit\n");
}

void initQueue(struct queue * q)
{
q->front=0;
q->count=0;
}

void enQueue(struct queue * q, int element)
{
if(q->count<5)
{
q->contents[q->count]=element;
q->count++;
return;
}
else
{
printf("Queue is full\n");
}
return;
}

int deQueue(struct queue * q)
{
int item,i;
if(q->front==q->count)
{
printf("Queue is empty\n");
return (-1000);
}
else
{
item=q->contents[q->front];
if(item!='\0')
{
for(i=q->front;i<q->count-1;i++)
{
q->contents[i]=q->contents[i+1];
}
q->count=q->count-1;
return item;
}
else
{
printf("Queue is empty\n");
return -1000;
}
}
}

void display( struct queue q)
{
int i;
if(q.front==q.count)
{
printf(" {}");
}
else
{
for(i=q.front;i<q.count;i++)
{
printf(" %d",q.contents[i]);
}
}
}

谁能给我一些想法或解决方案?

最佳答案

 #include<stdio.h>
#include<string.h>
struct queue {
int contents[5];
int front;
int count;
} ;

void initQueue(struct queue * q);
void enQueue(struct queue * q, int element);
int deQueue(struct queue * q);
void display( struct queue q);
void printMenu();

int main()
{
struct queue p;
int data,ch, data1;
initQueue(&p);
do {
printMenu();
printf("Enter your choice\n");
scanf("%d",&ch);
switch(ch) {
case 1:
printf("Enter the element to be inserted/entered\n");
scanf("%d",&data);
enQueue(&p, data);
break;
case 2:
data1 = deQueue(&p);
if(data1 != -1000)
printf("The deleted element is %d\n",data1);
break;
case 3:
printf("The contents of the queue are");
display(p);
printf("\n");
break;
default:
return 0;
}
} while(1);
return 0;
}


void printMenu()
{
printf("Choice 1 : Enter element into Queue\n");
printf("Choice 2 : Delete element from Queue\n");
printf("Choice 3 : Display\n");
printf("Any other choice : Exit\n");
}

void initQueue(struct queue * q)
{
q->front=0;
q->count=0;
}

void enQueue(struct queue * q, int element)
{
int index;
index=(q->count+q->front)%5;
if(index==q->front&&q->count!=0)
printf("Queue is full\n");
else
{
q->count++;
q->contents[index]=element;
}
}

int deQueue(struct queue * q)
{
int elem;
if(q->count==0)
{
printf("Queue is empty\n");
return (-1000);
}
elem=q->contents[q->front];
q->count--;
q->front=(q->front+1)%5;
return elem;
}

void display( struct queue q)
{
int i,index;
if(q.count==0)
printf(" {}");
else
{
for(index=q.front,i=1;i<=q.count;i++,index++)
printf(" %d",q.contents[index%5]);
}

}

关于c - 使用数组实现最大大小为 5 的固定大小队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com