如何更改此队列顺序?

如何更改此队列顺序?

问题描述:

现在,在我的代码队列顺序是如何更改此队列顺序?

正常节点 - >通常节点 - >项目节点 - >空

前面指出的正常节点,但我想指出的项目节点!

所以,我想改变代码顺序

项目节点 - >通常节点 - >通常节点 - >空

和我的代码,,

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秩序..

如何更改密码?

+1

从技术上讲,如果你想要内容的特殊顺序,那不再是一个队列,那么它就是一个有序列表。 –

+0

ooops ..!那就对了。 –

其实在阅读了一段关于你的代码后,你似乎想要的是一种队列,叫做优先队列。让它们保持顺序的“秘诀”是在插入新节点时,从头到尾遍历列表以找到插入节点的位置。

在你的情况,因为你只有两个重点,这是更简单:

  • 如果插入一个“正常的节点”,然后找到最后一个“项目节点”,后插入“正常节点”最后一个“项目节点”(使新的“正常节点”指针等于最后一个“项目节点”NextNode指针(带有一个简单的赋值),然后使最后一个“项目节点”指针指向新的“正常节点” ,请注意操作顺序很重要)

  • 如果插入“item node”,那么只需将i t到队列的开始。

或者上述的一些变体。

+0

哦,谢谢你。但我知道你告诉我。 但是..我不写代码.. 请更改代码..请.. .. –