这是我的代码,以O(1)的时间复杂度将元素放入队列的前面,但是使用QUEUES的概念却以这种方式丢失了??
/////////////////ENQUEUE FRONT//////////////
void enqueue_front(T val){
if(cur_idx==0){
data[cur_idx]=val;
cur_idx++;
}
else{
data[cur_idx]=data[0];
data[0]=val;
cur_idx++;
}
}
答案 0 :(得分:-1)
我认为您的else陈述是错误的。
您要将队列的第一个元素发送到结尾,以便将元素添加到开头。 用类比解释:
您将必须将每个客户(队列中的每个元素)后退一步,然后在前面添加一个新元素,如果您使用数组实现此元素,则不会给您O(1)。
如果使用链表,则可以在O(1)中使用,但会牺牲数组附带的随机访问。
希望这会有所帮助