用户输入队列的大小

时间:2014-03-16 05:48:14

标签: c data-structures queue

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

#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中为初学者实现

3 个答案:

答案 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