我如何在队列中排序元素
How i can sort elements in queue?
**我的教授要求我们合并两个队列。我如何在队列中订购元素?我需要订购结果队列,我需要进行临时排队吗?我该怎么做?队列的实现是:
class QueType
{
public:
QueType(int max);
QueType();
~QueType();
void MakeEmpty();
bool IsEmpty() const;
bool IsFull() const;
void Enqueue(ItemType newItem);
void Dequeue(ItemType& item);
private:
int front;
int rear;
ItemType* items;
int maxQue;
};
QueType::QueType(int max)
{
maxQue = max + 1;
front = maxQue - 1;
rear = maxQue - 1;
items = new ItemType[maxQue];
}
QueType::QueType()
{
maxQue = 501;
front = maxQue - 1;
rear = maxQue - 1;
items = new ItemType[maxQue];
}
QueType::~QueType() // Class destructor.
{
delete [] items;
}
void QueType::MakeEmpty()
{
front = maxQue - 1;
rear = maxQue - 1;
}
bool QueType::IsEmpty() const
// Returns true if the queue is empty; false otherwise.
{
return (rear == front);
}
bool QueType::IsFull() const
// Returns true if the queue is full; false otherwise.
{
return ((rear + 1) % maxQue == front);
}
void QueType::Enqueue(ItemType newItem)
// Post: If (queue is not full) newItem is at the rear of the queue;
// otherwise, a FullQueue exception is thrown.
{
if (IsFull())
throw FullQueue();
else
{
rear = (rear +1) % maxQue;
items[rear] = newItem;
}
}
void QueType::Dequeue(ItemType& item)
{
if (IsEmpty())
throw EmptyQueue();
else
{
front = (front + 1) % maxQue;
item = items[front];
}
}
int main(){
int item;
QueType <int> q1;
q1.Enqueue(15);
q1.Enqueue(20);
q1.Enqueue(2);
q1.Enqueue(41);
q1.Enqueue(17);
QueType <int> q2;
q2.Enqueue(10);
q2.Enqueue(41);
q2.Enqueue(8);
q2.Enqueue(4);
q2.Enqueue(1);
QueType <int> result;
While(!q1.isEmpty(){
q1.Dequeue.(item)
result.Enqueue(item)}
While(!q2.isEmpty(){
q2.Dequeue.(item)
result.Enqueue(item)}
请帮助我
您可以将给定的2个队列放入2个单独的数组中。请注意,这两个单独的阵列是用它们自己的。现在,您可以将两个数组合并到另一个数组-sortedArray
,然后从那里填充您的最终队列-sortedQueue
与sortedArray
的元素
array arr1, arr2
while(!q1.Empty()) {
insertToArray(arr1, q1.dequeue());
}
while(!q2.Empty()) {
insertToArray(arr2, q2.dequeue());
}
int maxLength = arr1.Length() > arr2.Length() ? arr1.Length() :arr2.Length()
array sortedArray;
for(int i = 0; i < (q1.size() + q2.size() ); ++i) {
if((i < maxLength)) {
sortedArray[i] = arr1[i] >= arr2[i] ? arr1[i] : arr2[i];
} else {
fillArr2ToSortedArray();
break;
}
}
Queue sortedQueue;
for(int i = 0; i < (q1.size() + q2.size() ); ++i) {
sortedQueue.enqueu(sortedArray[i]);
}
相关文章:
- 查找两个排序向量中共有的元素
- C++ 如何比较n个排序的整数向量以找到互元素?
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 高级选择排序 - 在一次迭代中搜索两个元素
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 快速排序 - 三个中位数枢轴选择 - 某些元素顺序不正确
- 将一系列已排序的元素划分为相邻组
- 如何通过保持第一个插入的位置来对列表中插入的其余元素进行排序?
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- "x"的所有元素都存在于"y"(排序向量)中吗?
- 如何根据对的第二个元素对 STL c++ 中的一组对进行排序?
- 如何在保持它们连接到同一元素的同时对 2 个数组进行排序?
- C++:结构与用于排序元素的函数
- 无法在阵列中重新排序元素-rapidjson
- 比较两个向量中的未排序元素
- 我如何在队列中排序元素
- c++中的Hashmap不排序元素
- c++插入排序元素