现在,我的代码队列顺序是
正常节点 - >正常节点 - >项目节点 - >空
前点指出正常节点,但我想指出项目节点!
所以,我想更改代码顺序
项目节点 - >正常节点 - >正常节点 - >空
我的代码是,
void LQ_CreateQueue(LinkedQueue **Queue)
{
(*Queue) = (LinkedQueue*)malloc(sizeof(LinkedQueue));
(*Queue)->Front = NULL;
(*Queue)->Rear = NULL;
(*Queue)->count = 0;
}
Node *LQ_CreateNode(int NewData)
{
Node *NewNode = (Node*)malloc(sizeof(Node));
if (NewData == 7)
NewNode->Priority = ItemBlock;
else
NewNode->Priority = NormalBlock;
NewNode->rand_value = NewData;
NewNode->NextNode = NULL;
return NewNode;
}
void LQ_DestroyNode(Node *_Node)
{
free(_Node);
}
void LQ_Enqueue(LinkedQueue *Queue, Node *NewNode)
{
if (Queue->Front == NULL)
{
Queue->Front = NewNode;
Queue->Rear = NewNode;
Queue->count++;
}
else
{
Queue->Rear->NextNode = NewNode;
Queue->Rear = NewNode;
Queue->count++;
}
}
Node *LQ_Dequeue(LinkedQueue *Queue)
{
Node *Front = Queue->Front;
if (Queue->Front->NextNode == NULL)
{
Queue->Front = NULL;
Queue->Rear = NULL;
}
else
{
Queue->Front = Queue->Front->NextNode;
}
Queue->count--;
return Front;
}
int LQ_IsEmpty(LinkedQueue *Queue)
{
return (Queue->Front == NULL);
}
帮帮我。
此代码由CreateQueue,CreateNode,DeleteNode,InsertNode,PrintNode,CheckEmptyQueue函数组成。按顺序..
如何更改该代码。?
答案 0 :(得分:0)
实际上,在阅读了一些关于代码的内容之后,您似乎想要的是一种称为优先级队列的队列。 "秘密"为了使它们保持有序,在插入新节点时,您从头到尾遍历列表以找到插入节点的位置。
在您的情况下,由于您只有两个优先级,因此更简单:
如果插入"正常节点"然后找到最后一个"项目节点"并插入"正常节点"在最后一个"项目节点" (使新的"正常节点" NextNode
指针等于最后一个"项节点" NextNode
指针(带有简单的赋值),然后创建最后一个& #34;项目节点" NextNode
指针指向新的"正常节点",请注意操作顺序很重要)
如果插入"项目节点"然后将其添加到队列的开头。
或上述的一些变体。