删除数组中的最后一个整数,使其不变为零

时间:2018-03-20 00:06:47

标签: c arrays queue

所以我使用基于数组的队列实现。

填充数组后,要删除第一个元素,我将数组移到左侧。 这使得数组中的最后一个元素为零,这也意味着我无法在数组中输入新元素,因为最后一个点被零占用。

有没有办法完全删除元素而不是它变为零?

我尝试使用它完全清空队列,但它只是将所有元素都变为零。

case 3:
    memset(queue, 0, sizeof(queue));
    printf("\nThe entire queue has been emptied");
    break;

谢谢。

1 个答案:

答案 0 :(得分:1)

为什么不用新值覆盖最后一个元素?假设队列长度为onCreate个元素,并且您希望使用新值覆盖最后一个元素n,例如array[n-1] ...

23

array[n-1] = 23;

要完全删除条目听起来像一个难题,因为你正在使数组变小,但仍然会有一些内存,你的最后一个元素曾经存在。您应该控制您的程序,以便它永远不会尝试访问超出数组限制的数组元素,因为结果将是不可预测的。

在您的代码中,您有一种方法可以了解数组的长度,这一点非常重要。计算机可能无法阻止您访问内存超出为阵列分配的内存,但这是一个非常糟糕的主意 - 特别是如果您尝试写入它。

因此,只要你记得你的数组需要多长时间才能删除最后一个元素,将数组的长度减少1。