Array
add()
if (back==limit-1)
Problem: Queue Full;
else {
back++;
queue[back]=x;
}
时间复杂度:O(1)
remove()
if(back==-1)
Problem: Queue Empty;
else{
Element X = queue[0];
for (int i=0; i<back; i++)
queue[i]=queue[i+1];
back--;
return X;
}
时间复杂度:O(n)
Cicular
add()
if (length == limit)
Problem: Queue Full;
else {
back++;
if (back == limit)
back=0;
queue[back]=x;
length++;
}
时间复杂度:O(1)
remove()
if (length==0)
Problem: Queue Empty;
else {
Element x=queue[front];
front++;
if (front == limit)
front=0;
length--;
return X;
}
时间复杂度:O(1)
Link List
add()
QueueCell tmp = new QueueCell(x,null);
back.next=tmp;
back=tmp;
时间复杂度:O(1)
remove()
if (front == null)
Problem: Queue Empty;
else{
Element x= front.data;
front = front.next;
return x;
}
时间复杂度:O(1)
Priority
add()
伪代码:
from the beginning of the queue
past all elements with higher or the same priority
the insert it
时间复杂度:O(n)
remove()
伪代码:
remove the first item
时间复杂度:
O(1)——Linked List
O(n)——Array