2017-10-17 10 views
0

は今、私のコードキュー順にこのキューオーダーを変更するにはどうすればよいですか?

正常なノードである - >通常のノード - >項目ノード - >ヌル

フロントは通常のノードを指摘、しかし、私はアイテムのノードを指摘したいです!

ので、私はアイテムノードコード順に

を変更したい - >通常のノード - >通常のノード - >ヌル

と私のコードは,,

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

おっと!そのとおり。 –

答えて

0

実際には、あなたのコードについてもう少し読んだら、という優先キューと呼ばれる種類のキューがあります。それらを順番に保持する「秘密」は、ノードを挿入する場所を見つけるために、最初から最後までリストを通る新しいノードを挿入するときです。あなたのケースでは

、あなただけの2つの優先度を持っているので、それも簡単です:

  • 「通常ノード」を挿入した場合、最後の「アイテムノード」を見つけ、後に「正常なノード」を挿入最後の「アイテムノード」NextNodeポインターを最後の「アイテムノード」NextNodeポインター(単純な割り当てで)に等しくし、最後の「アイテムノード」NextNodeポインターを新しい「ノーマルノード」ポインターにします。操作の順序が重要であることに注意してください)

  • 「アイテムノード」を挿入してi tをキューの先頭に移動します。

または上記のいくつかの変形です。

+0

ああ、ありがとう。しかし、私があなたに教えていることは分かっています。 しかし..私はコードを書いていません.. コードを変更してください..ください.. –

関連する問題