我正在尝试学习队列的数组实现 在给定的代码中
#include <stdio.h>
main()
{
int q[10]={0}, i, front=-1, rear=-1, max=10, n, item;
printf("\n"
"\tMENU\n"
"1.ENQUEUE\n"
"2.DEQUEUE\n"
"3.DISPLAY\n"
"4.EXIT\n"
);
do
{
printf("\nEnter your choice\n");
scanf("%d",&n);
switch(n)
{
case 1:
if(rear<max-1)
// .............so on
他们没有要求用户输入队列的大小,但已经将其定义为10.仅适用于这种情况,还是我们应该始终定义它而不是让用户对队列的大小有任何控制权?
PS:学习队列的任何好来源及其在c中为初学者实现
答案 0 :(得分:0)
仅适用于这种情况,还是我们应该始终定义它,而不是让用户对队列的大小有任何控制权?
没有。您可以从用户那里获取尺寸。使用variable length arrays,不要忘记以C99模式(-std=c99
)编译代码。
int size;
scanf("%d", &size);
int q[size];
memset(q, 0, sizeof(q));
答案 1 :(得分:0)
如果您事先知道队列的大小,这是最好的方法。否则,您可以要求用户输入队列的首选大小,并从堆中动态分配内存:
int queue_size;
printf("\nEnter queue size\n");
scanf("%d",&queue_size);
int *q = malloc(queue_size * sizeof(int));
答案 2 :(得分:-1)
Forozan和Gilberg的数据结构书非常适合初学者。 您也可以使用slideshare.com的ppt