是否可以从C语言实现的队列中的随机位置删除元素?

是否可以从C语言实现的队列中的随机位置删除元素?,c,queue,C,Queue,我遇到了下面的问题,花了几个小时试图弄清楚为什么在我所说的移除函数“v”中有一个x 我认为没有理由使用x,因为从队列中删除元素发生在前端,并且我们已经将前端节点的地址作为成员存储在结构中 如果有人能帮我澄清这个疑问那就太好了,因为我试着自己去做,但是做不到 问题的下一部分如下,这更令人困惑 这个问题的措辞不明确,但您发布的主要功能清楚地说明了代码应该做什么: QueueElement似乎是一个typedef to int,它是存储在队列中的值类型。 Remove应该删除队列的前面元素,并将其值存

我遇到了下面的问题,花了几个小时试图弄清楚为什么在我所说的移除函数“v”中有一个x

我认为没有理由使用x,因为从队列中删除元素发生在前端,并且我们已经将前端节点的地址作为成员存储在结构中

如果有人能帮我澄清这个疑问那就太好了,因为我试着自己去做,但是做不到

问题的下一部分如下,这更令人困惑


这个问题的措辞不明确,但您发布的主要功能清楚地说明了代码应该做什么:

QueueElement似乎是一个typedef to int,它是存储在队列中的值类型。 Remove应该删除队列的前面元素,并将其值存储到*x中。 这是因为它主要调用Remove&i和numqueue,然后打印i的值


除此之外,这段代码写得很糟糕,希望您不会从中养成太多坏习惯。特别是,定义TRUE==0和FALSE==1的布尔值是向后的,如果bool_值与它显示的相反,则可能会导致错误。这个错误实际上主要发生在他们写作的地方!QueueEmpty…

这取决于实现。您可以遍历整个队列,搜索匹配项并将其删除。他们要求您删除任意元素,而不是前面的元素。也就是说,这是一个写得很糟糕的问题,因为没有定义QueueElement。另外,因为他们定义了一个布尔枚举,其中TRUE==0和FALSE==1完全是反向的,很容易导致错误。如果可以从队列中删除一个随机元素,那么它到底为什么被称为队列?为什么不创建一个链表呢?扔掉那个源。问题不仅仅是措辞糟糕,代码也非常可怕。仔细查看whilei中的缩进!=0循环…@AndrewHenle是的,这样做可能是为了迷惑候选人。。。可能是这样,为什么将is&i传递给remove函数?这样做有什么用吗?还有,为什么要像你说的那样将它存储在x中?结构定义有一个名为front的变量,用于此目的,不是吗?@jkbliss它被传递给函数以接收被删除元素的值。他们可以让函数返回您将使用i=Remove&queue;调用的值;,但是他们选择了这个方法。@jkblish您不想将它存储在结构中。您希望删除它,以便它不再存储在队列中,并且*x用于告诉调用者删除了什么值。