【发布时间】:2016-07-24 15:56:14
【问题描述】:
试图用 C 语言编写一个程序来创建一个队列并允许用户添加值。队列是使用数组设置的。不知何故,我的代码无法正常工作,我想知道是否有人可以帮助我解决问题。
#include <stdio.h>
#define CAP 10
//define a struct for our queue
typedef struct _que
{
int arr[CAP];
int front;
int size;
}
que;
void enqueue (que* ptr, int add);
int main(void)
{
int i;
que q1;
q1.front = 0;
q1.size = 0;
char yn = 'n';
//while loop for adding elements
do
{
printf("Enter the value you wish to add\n");
scanf("%d",&i);
enqueue(&q1, i);
printf("Would you like to add any more elements?\n");
scanf("%c",&yn);
}
while (yn == 'y' && q1.size <= CAP);
printf("The current element(s) in the queue are:");
//TODO: print out elements in the queue
for(int start = 0; start <= q1.size; start++)
{
printf("%d",q1.arr[start]);
}
printf("\n");
}
void enqueue(que* ptr, int add)
{
ptr->arr[((ptr->front)+(ptr->size))] = add;
ptr->size += 1;
}
程序正常执行到它打印“你想添加更多元素”的部分,然后它只是跳出do-while循环并打印队列中的元素,这也出错了吐出像 217836276 这样的垃圾值,可能表示内存问题
【问题讨论】:
标签: c