用户输入队列的大小

我试图在给定的代码中学习队列的数组实现

#include  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:学习队列的任何好来源及其在初学者中的实现

如果您事先知道队列的大小,这是最好的方法。 否则,您可以要求用户输入队列的首选大小,并从堆中动态分配内存:

 int queue_size; printf("\nEnter queue size\n"); scanf("%d",&queue_size); int *q = malloc(queue_size * sizeof(int)); 

是仅针对这种情况还是我们应该始终定义它而不是让用户对队列的大小进行任何控制?

不可以。您可以从用户那里获取尺寸。 使用可变长度数组 ,不要忘记在C99模式下编译代码( -std=c99 )。

 int size; scanf("%d", &size); int q[size]; memset(q, 0, sizeof(q)); 

Forozan和Gilberg的数据结构书非常适合初学者。 您也可以使用slideshare.com上的ppt