Wachtrij in C


Operatie wachtrij

Hier zal worden verklaard een beetje over de uitvoering van de wachtrij met Premtive (prioriteit).

Zonder verdere ado schreef onmiddellijk aan de code zelf:

Eerst Typ in de onderstaande code en sla deze op als interface.h:

#include

#include

#define Error(Str) FatalError(Str)

#define FatalError(Str) fprintf (stderr, "%s\n", Str), exit(1)

Sla het bestand queue.h code hieronder in:

#ifndef _Queue_h

#define _Queue_h

typedef int ElementType;

struct QueueRecord;

typedef struct QueueRecord * wachtrij;

Wachtrij CreateQueue(int MaxElements);

VOID Enqueue (ElementType X, wachtrij Q);

ElementType Front(Queue Q);

VOID Dequeue (wachtrij Q);

VOID Preemptive (ElementType X, wachtrij Q);

nietig DisposeQueue(Queue Q);

nietig MakeEmpty(Queue Q);

int IsEmpty (wachtrij Q);

int IsFull (wachtrij Q);

#endif

Typ de onderstaande code en sla het bestand op als een implementatie met queue.c:

#include "queue.h"

#include "fatal.h"

#include

struct QueueRecord {}

int capaciteit;

int Front;

int achterzijde;

int Size;

ElementType * Array;

};

statische int Succ (int waarde, wachtrij Q);

VOID Enqueue (ElementType X, wachtrij Q) {}

if(IsFull(Q))

Fout ("volle rij");

else {}

Q -> grootte ++;

Q -> Array [Q -> Rear] = X;

Q -> achter = Succ (Q -> achterzijde, Q);

}

}

Wachtrij CreateQueue(int MaxElements) {}

Wachtrij Q = NULL;

Q = malloc (sizeof(struct QueueRecord));

if(Q==null)

FatalError ('onvoldoende ruimte!');

Q-Array=malloc(sizeof(ElementType) > * MaxElements);

Als (Q -> Array == NULL)

FatalError ('onvoldoende ruimte!');

Q -> capaciteit = MaxElements;

MakeEmpty(Q);

terugkeer van Q;

}

VOID Preemptive (ElementType X, wachtrij Q) {}

if(IsFull(Q))

Fout ("volle rij");

else {}

Q -> grootte ++;

Q -> Array [Q -> Front] = X;

Q -> achter = Succ (Q -> achterzijde, Q);

}

}

ElementType Front(Queue Q) {}

if (!. IsEmpty(Q))

retourneren Q -> Array [Q -> Front];

Fout ("lege wachtrij");

keren 0;

}

VOID Dequeue (wachtrij Q) {}

if(IsEmpty(Q))

Fout ("lege wachtrij");

else {}

Q -> grootte--;

Q -> Front = Succ (Q -> Front, Q);

}

}

VOID DisposeQueue(Queue Q) {}

Als (Q! = NULL) {}

gratis (Q -> Array);

Free(Q);

}

}

statische int Succ (int waarde, wachtrij Q) {}

Als (++ waarde == Q -> capaciteit)

Waarde = 0;

retourwaarde;

}

VOID MakeEmpty(Queue Q) {}

Q -> grootte = 0;

Q -> Front = 0;

Q -> achter = 0;

}

int IsEmpty (wachtrij Q) {}

retourneren Q -> grootte == 0;

}

int IsFull (wachtrij Q) {}

retourneren Q -> grootte == Q -> capaciteit;

}

Sla het bestand met de naam vierde klien.c dat als een client functioneert

#include

#include "queue.h"

int main() {}

Wachtrij Q;

int i;

int n = 20;

statische int max_queue_size = 20;

Q = CreateQueue(max_queue_size);

Preemptive(90,Q);

printf("%d\t",Front(Q));

Dequeue(Q);

voor (ik = 0; i

voor (ik = 0; i

if(Q!=null) {}

Als (ik %2 == 0) {}

Enqueue(i,Q);

}

}

if(i%2==0)

printf("%d,",i);

}

}

DisposeQueue(Q);

keren 0;

}

Eenmaal gecompileerde het zal resultaten weergeven van de som van de even getallen in een rij vanaf het begin van 0 tot en met 18. Resultaten van de som is nummer 90. Getal is dat de reeks zijn:

90 0,2,4,6,8,10,12,14,16,18.

Gerelateerde Artikelen

Het gebruik van de aankomende wachtrij op Neatorama.com

Het gebruik van de aankomende wachtrij op Neatorama.com

In dit instructable zal ik schetsen de stappen aan de slag met behulp van de aankomende wachtrij samen met enkele veel voorkomende fouten die uw post te houden van het bereiken van de voorpagina.Als u niet zeker bent wat ik over spreek, en meer wilt
Hoe om de wachtrij opnieuw een baitcasting reel te

Hoe om de wachtrij opnieuw een baitcasting reel te

Respooling een baitcasting haspel is zeer belangrijk. Het moet ooit zo vaak worden gedaan om te kunnen om de grote vis te vangen. Respooling een reel is iets dat ik geleerd van mijn grootvader. Hij was degene die mij geleerd hoe om te vissen dus natu
Wachtrij van organisator

Wachtrij van organisator

worstelt u met uw organisatorische vaardigheden? Heeft u wat hulp nodig? We hebben de spoel voor u! Dat is juist, we hebben opgebouwd de organisator van de stand van de techniek-spool die uw werk Bank naaien Bank, en leven voor altijd zal veranderen.
Compacte Spooling Machine

Compacte Spooling Machine

Deze compacte Spooling Machine was voornamelijk ontworpen voor spooling 3D printer filamenten.Het kan echter aangepast aan wachtrij of krullen van andere materialen zoals draad of touw.De meeste van de onderdelen zijn 3D afgedrukt.LIJST VAN ONDERDELE
Hoe maak je een Trash-naar-Treasure Vogelhuis/waterbak

Hoe maak je een Trash-naar-Treasure Vogelhuis/waterbak

Jaren geleden, bracht mijn man het huis van een stapel van metalen spoelen gebruiktvoor het opslaan van MIG draad. Hij naaide gaas op de spoel in een enigszinsrudimentaire mode, en noemde het een vogel feeder. Een wasbeer geslooptwas het, de spoel ch
Maken van Hempwick

Maken van Hempwick

Hempwick is een ongelooflijk handig ding om te hebben bij de hand. Is een gemakkelijk hernieuwbare bron die geen smaken als het schenkt vuur lichten sigaren (of andere rookwaar van keuze) of char/licht de rand van iets. Ook slaat de butaan in uw aans
Bouw uw eigen CNC-Machine.

Bouw uw eigen CNC-Machine.

Toen ik voor het eerst naar Pittsburgh verplaatst, had ik een serendipitous moment wanneer ik liep door een plaats genaamd TechShop. Velen van u kunnen heb gehoord maar ik heb niet en het personeel was vriendelijk genoeg om me te geven tour. De plaat
Uw eigen reliëf visitekaartjes maken met zuur etsen

Uw eigen reliëf visitekaartjes maken met zuur etsen

etsen. Druk op. Afdrukken. Wilt u leren hoe te emboss papier voor uw eigen visitekaartjes? Maak uw eigen patroon op de computer en het etch in een koperen plaat.Ik wilde mijn eigen reliëf visitekaartjes maken, aangezien ik een echt ongelooflijk een o
Het gebruik van de Instructables Editor

Het gebruik van de Instructables Editor

In onze voortdurende inspanningen om de Instructables editor gemakkelijk te gebruiken, hebben we een nieuwe ronde van updates. Hier is een kort en krachtig voor het gebruik van de editor van start tot finish.Stap 1: Start een nieuwe Instructable Om t
DIY Stero Card / Steroscopic dia's (3D-foto's!)

DIY Stero Card / Steroscopic dia's (3D-foto's!)

Nota Bene: Dit Instructable leidt u door het proces van het maken van 3D-foto's voor gratis (geen extra apparatuur nodig buiten één of ander soort camera, zelfs die uw telefooncamera zal doen), evenals een paar processen voor het bewerken en afdrukke
Guillotine voor de leeftijden

Guillotine voor de leeftijden

Dit is mijn guillotine die ik dit jaar om te gaan samen met mijn elektrische stoel gebouwd. Het kwam best goed ondanks enkele last-minute wijzigingen die moesten worden doorgevoerd. Oorspronkelijk kwam ik met het idee van het bouwen van een guillotin
Boekenplank iPad Stand (of: hoe lui ik werkelijk am...)

Boekenplank iPad Stand (of: hoe lui ik werkelijk am...)

ik hou van kijken naar films en TV-shows, vooral voordat ik in slaap vallen en wanneer ik wakker, maar als eeuwige student, ik ben ook goedkoop/brak om te kopen een werkelijke TV. Natuurlijk, dit leidt mij om te kijken mijn media via mijn computer (d
Ziptie gemonteerde koellichaam en Fans

Ziptie gemonteerde koellichaam en Fans

Ik zal u tonen hoe te monteren van twee verschillende heatsinks: die trok ik uit een oude Dell PowerEdge-servers en de standaard AMD heatsink die wordt geleverd met de meeste processors. Als een bonus, zal ik u tonen hoe te monteren Casefans aan heat
De NerdClock: Een RGB-Binary Clock [Arduino Software]

De NerdClock: Een RGB-Binary Clock [Arduino Software]

IntroductieBinaire klokken zijn een werkelijk koele manier om aan te tonen van de tijd op een mysterieuze manier. En voor degenen die niet weten hoe om te lezen dat soort klok is een eenvoudige, maar effectieve manier omhoog uw nerdiness niveau hemel