2017-10-17 2 views
0

jetzt, um in meinem Code Warteschlange istWie ändere ich diese Reihenfolge?

normalen Knoten -> normalen Knoten -> item Knoten -> null

vorderen normalen Knoten weisen darauf hin, aber ich möchte Punkt Knoten hinweisen!

so, ich möchte den Code, um Knoten

Artikel ändern -> normalen Knoten -> normalen Knoten -> null

und mein Code ,,

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); 
} 

hilf mir.

dieser Code bestehen aus Create, CreateNode, DeleteNode, InsertNode, PrintNode, CheckEmptyQueue function.In bestellen ..

, wie man diesen Code ändern.?

+1

Technisch ist das keine Warteschlange mehr, wenn Sie eine spezielle Reihenfolge des Inhalts wünschen, dann ist es eine geordnete Liste. –

+0

ooops ..! Stimmt. –

Antwort

0

Eigentlich, nach dem Lesen ein wenig mehr über Ihren Code, was Sie scheinen, ist eine Art von Warteschlange, genannt Priorität Warteschlange. Das "Geheimnis", um sie in Ordnung zu halten, besteht beim Einfügen neuer Knoten darin, dass Sie von Anfang bis Ende durch die Liste gehen, um den Platz zu finden, wo der Knoten eingefügt werden soll.

In Ihrem Fall, da Sie nur zwei Prioritäten haben, ist es noch einfacher:

  • Wenn ein „normalen Knoten“ Einfügen dann den letzten „item-Knoten“ finden und den „normalen Knoten“ nach dem Einfügen letzter "item node" (mache den neuen "normalen Knoten" NextNode Zeiger gleich dem letzten "item node" NextNode Zeiger (mit einer einfachen Zuweisung), dann mache den letzten "item node" NextNode Zeiger auf den neuen "normalen Knoten" Beachten Sie, dass die Reihenfolge der Vorgänge wichtig ist.

  • Wenn Sie einen "Elementknoten" einfügen, fügen Sie einfach i hinzu t an den Anfang der Warteschlange.

Oder eine Variante des Obigen.

+0

oh danke. aber ich weiß, dass du es mir erzählst. aber .. ich schreibe nicht den Code .. Bitte ändern Sie den Code .. bitte .. –

Verwandte Themen