如何更改此队列顺序?
问题描述:
现在,在我的代码队列顺序是如何更改此队列顺序?
正常节点 - >通常节点 - >项目节点 - >空
前面指出的正常节点,但我想指出的项目节点!
所以,我想改变代码顺序
项目节点 - >通常节点 - >通常节点 - >空
和我的代码,,
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 function.In秩序..
如何更改密码?
答
其实在阅读了一段关于你的代码后,你似乎想要的是一种队列,叫做优先队列。让它们保持顺序的“秘诀”是在插入新节点时,从头到尾遍历列表以找到插入节点的位置。
在你的情况,因为你只有两个重点,这是更简单:
如果插入一个“正常的节点”,然后找到最后一个“项目节点”,后插入“正常节点”最后一个“项目节点”(使新的“正常节点”指针等于最后一个“项目节点”
NextNode
指针(带有一个简单的赋值),然后使最后一个“项目节点”指针指向新的“正常节点” ,请注意操作顺序很重要)如果插入“item node”,那么只需将i t到队列的开始。
或者上述的一些变体。
+0
哦,谢谢你。但我知道你告诉我。 但是..我不写代码.. 请更改代码..请.. .. –
从技术上讲,如果你想要内容的特殊顺序,那不再是一个队列,那么它就是一个有序列表。 –
ooops ..!那就对了。 –