De structuur van de gegevens: javascript Stack en rij

, de structuur van de gegevens: javascript Stack en rij,,,,,,,,,, 378, aandelen, 27,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen, een deel van de prijs van een reeks gegevens javascript javascript. Structuur van de gegevens: wat' de structuur van de gegevens?De structuur van de gegevens: javascript lijsten, dubbel die lijst, je creëert, de ontwikkeling van de website, en 2 in de structuur van de meest voorkomende gegevens Stack en rij.Veel gebruikers van het internet, met inbegrip van het netwerk van de opdrachtgever, zijn niet op de hoogte van deze opvallende feiten.Als je een ontwikkelaar, bereid je dan voor op de twee illustratief voorbeeld: "de intrekking van een tekst van de redacteur van" operatie Stack te organiseren, gegevens; een browser op gebeurtenissen aan de gebeurtenissen (klik, stof, enz.), het gebruik van een rij voor de verwerking van gegevens.,,, nu stoppen. Denk aan hoeveel keer we, als een van de gebruikers en ontwikkelaars, het gebruik van Stack en rij.Dat is geweldig, hè?Als gevolg van het universele karakter van het ontwerp en de vergelijkbaarheid, heb ik besloten om ze voor je in de structuur van de gegevens.  ,, een stapel, in de informatica, Stack is een lineaire structuur van de gegevens.Als dat het is de marginale waarde voor je, want het was en ik, rekening houdend met de keuze van de gegevens in de volgorde van de Organisatie: de stapel.  , orde, dit kan worden omschreven als een berg eten in de kantine.Als een bord worden toegevoegd aan de in een stapel borden, met behoud van de volgorde van het bord, en als een bord worden toegevoegd, het is op een berg van de bodem.Elke keer als we een nieuwe toevoeging van de platen worden tot onderaan de stapel, maar het is ook een vertegenwoordiger van de Top van de plaat.  , en het bestuur in het proces zal blijven om, per schijf van bij de stapel.Verwijderd uit de stapel platen zal ook al de volgorde van de volgorde van de plaat.Als een plaat van de Top van de berg te verwijderen, in de schoorsteen van elke plaat blijft de juiste volgorde.Ik heb beschreven, kan niet met zoveel woorden, multi - orgaan nog de meeste kantine verwoest. , om een of meer technische voorbeeld, laten we herinneren "intrekking van de tekst van de redacteur van" operatie.Elke toegevoegd aan de tekst, de tekst zal worden op stapel.De tekst van de vertegenwoordigers van de eerste redacteur toegevoegd onderaan de stapel, recente wijzigingen, vertegenwoordiger van de Top van de berg.Als de gebruiker moet het ongedaan maken van de meest recente wijzigingen, het schrappen van de Top van de berg.Deze procedure kan worden herhaald, tot er niets meer van Stack, dit is een blanco dossier. ,, die stapel, omdat we nu een concept van een stapel model en laten we de definitie van de twee die stapel:,,, (gegevens),   gegevens toe te voegen, te schrappen, POP (),   recente gegevens toe te voegen.,, de verwezenlijking van een stapel, laten we nu een stuk schrijven generatie de code.De prestaties van de  ,,, een stapel, ons bereikt, zullen we het creëren van een fabrikant van de nomenclatuur  , Stack.De  , Stack, per geval, er zijn twee eigenschappen: _size, _storage,,,.,, '() {deze functie. _size = 0; deze _storage = {};},,,, _storage, zodat voor elk geval, Stack,   heeft z' n eigen container voor het opslaan van gegevens; dit _size,   rekening te houden met de gegevens op een aantal door de huidige versie, Stack.Als voorbeeld, de nieuwe stapel,   creëren en gegevens naar een opslag, en dan, dit _size, wordt verhoogd tot 1.Als de gegevens op, en dan in de stapel, en het _size, wordt verhoogd tot 2.Als data is verwijderd uit de stapel, dan this._size, zal op 1.   is gedaald, en methoden van A Stack, we moeten te definiëren, die dat kan toevoegen (persen) en verwijderen (POP)   gegevens van A. Laten we beginnen met de ontwikkelingslanden had   data.  ,,, - van 2: 1  ,,, - (data),,,, (deze methode kan worden gedeeld tussen alle gevallen van stapel, zodat we, en voeg het toe aan het prototype van  , Stack,  .), we hebben twee eisen voor, deze Captain, elke tijd we aan  , data, we willen dat De omvang van ons. Kunnen we nog een tijd, elke, we willen niet de orde waar het was. En Stack.prototype.push = functie (data), de omvang van onze increases (//////////////this._size++ een var size =; assigns size als een sleutel van een ///////assigns gegevens als de waarde van dit belangrijkeDe omvang van deze _storage [] = gegevens;};,, bereiken we  , duw (gegevens),   omvat de volgende logische.De verklaring van een variabele, de omvang en de waarde van het, dit _size + +,.De omvang van de toewijzing van    , als een van de belangrijkste,  , dit _storage,.En  , gegevens,   als de overeenkomstige essentiële waarden.  ,,, als we Stack bellen, om de gegevens), vijf, en dan hebben we de omvang van de stapel is 5.De eerste op de stapel van gespecificeerde gegevens van de belangrijkste 1, dit _storage,.De vijfde keer duwen (gegevens),   gespecificeerde gegevens van de belangrijkste 5, dit _storage,.We alleen voor de verdeling van de gegevens.,,, 2, 2 - methode:   POP (),,,,,, kunnen we nu naar de stapel; de logische volgende stap is plotseling uit een hoop gegevens (geschrapt).Uit de gegevens van de stapel niet eenvoudig verwijderen van gegevens; het is alleen het schrappen van de recente gegevens toe te voegen.  ,, dit is ons doel: de methode van  , het gebruik van de stapel de huidige omvang van de recente gegevens aan toevoegen, het schrappen van de recente gegevens toe te voegen, de Vermindering van _this _size,. Een, terug naar de laatste gegevens, te schrappen. En stack.prototype.pop = functie () {VAR = het. _size, deleteddata; deleteddata = het _storage []. De omvang van de omvang, geschrapt. _storage []; this.size--; terug naar deleteddata;};,,, - (), voldoen aan elk van onze vier doelstellingen.Ten eerste, we stellen twee variabelen:, de omvang van de omvang van de stapel, gestart;  , deleteddata,   toegewezen aan de gegevens heeft toegevoegd aan de stapel.Ten tweede, we schrappen de nieuwe verhoging van de gegevens voor de sleutels.Ten derde, we dalen de omvang van 1 van de stapel.Ten vierde, keren we terug naar het proces van het schrappen van gegevens. , als we ons op dit moment, de uitvoering van de tests, de pop (), vinden we de volgende zaak werkt.Als we die gegevens naar Stack door een toename van de omvang.Als we de pop (), uit onze gegevens van de stapel, we Stack omvang afneemt.  , problemen, maar als we de volgorde omkeren.Rekening houden met de volgende omstandigheden: we noemen, POP (),   dan  , duw (gegevens).We stapelen de verandering van de omvang van de voor 1 0, dan.Maar de juiste omvang is 1.De behandeling van de zaak gebruiken, en we voegen een, als de verklaring, POP ().  ,, stack.prototype.pop = functie () {VAR = het. _size, deleteddata; als (overgangsbepalingen) {deleteddata = de omvang. _storage [] []; geschrapt. _storage omvang; dit _size -. En een terugkeer naar de deleteddata;}};,, bij ons, als we de code, de uitvoering van de verklaring, maar in onze gegevens. , en een hoop, de volledige verwezenlijking, we bereiken, Stack, klaar.Wat onze aanpak is wat een, we hebben een code zijn.We   hier is de definitieve versie van de code voor: '() {, de functie, het. _size = 0; deze _storage = {}} stack.prototype.push = functie (data) {VAR = + +, _size; dat de omvang van de gegevens. _storage [] =;}; stack.prototype.pop = functie () {VAR = het. _size, deleteddata; als (overgangsbepalingen) {deleteddata = de omvang. _storage [] []; geschrapt. _storage omvang; dit. _size -; terug deleteddata;}};,, uit de bergen, rij, als we willen dat de gegevens en de gegevens toe te voegen om het schrappen van stapel is nuttig.Op basis van de definitie van een stapel kan worden geschrapt, de nieuwe verhoging van de gegevens.Als we de oude gegevens te schrappen, wat gebeurt er?We moeten gebruik maken van een structuur van de gegevens, de naam van een rij, rij, die vergelijkbaar zijn met die van een stapel, rij is een lineaire structuur van de gegevens.Met een stapel van verschillende, rij geschrapt zou alleen de oudste gegevens geschrapt. ,,, je helpen te begrijpen hoe dit werkt, laten we het met een metafoor.Stel je een rij van het systeem is zeer vergelijkbaar met die van een delicatessenwinkel.Elke klant een kaartje nodig en op hun nummer worden ingeroepen om diensten te verlenen.Wie is de eerste single klant moet eerst.  , en laten we verder denken, dat het aantal kaarten "een" op het display.Een kaartje "2" nummer een op de top.Wie heeft de tweede stemming klanten zou dienen als tweede.   (als we het systeem van de operatie is net een stapel, wie in de stapel zou in de eerste plaats de diensten. De laatste klanten)Nog een voorbeeld is van een rij de cyclus van de gebeurtenissen een browser.Verschillende gebeurtenissen wordt veroorzaakt, zoals één druk op de knop, voegen ze bij de gebeurtenissen rond rij en beveelt aan ze in de rij, rij.  , werking, omdat we nu een concept van een rij ons model, definitie van de zaken.Zoals je merkt, een rij van de operatie is vergelijkbaar met de stapel.Het verschil is, gegevens worden geschrapt.  ,,,,,   team (data) toe te voegen aan de gegevens op een rij.   uit, het schrappen van de eerste, de rij, bij de gegevens.De verwezenlijking van een  , rij, rij, laten we nu een code te schrijven.,,, de eigenschappen van een rij, voor ons te bereiken, zullen we het creëren van een rij van de fabrikant.We zullen nog drie kenmerken: _oldestindex _newestindex,,,,,, _storage,.Twee   nodig, _oldestindex,, _newestindex, zal in het volgende hoofdstuk wordt steeds duidelijker.  , functie, rij () {dit. _oldestindex = 1; deze _newestindex = 1; deze _storage = {};}, een rij voor de,,,,, we creëren tussen de drie methoden een rij voorbeeld: Alle delen van het team, size () (gegevens),,,,,, een team (data).Ik zal een overzicht worden gegeven van de doelstellingen van elke methode, waaruit blijkt dat de methode en de code van elke interpretatie van elke methode, de code.  ,,,,, 3, 1:   size (,,,,,, we hebben twee doelstellingen: deze methode, de omvang van de rij, De terugkeer van een juiste, behoud van een een rij. De sleutel van de juiste bereik.,, queue.prototype.size = functie) (terug te keren. _newestindex dit. _oldestindex;};,, de uitvoering, de omvang (), lijkt misschien onbeduidend, maar je zal snel ontdekt dat is nep.Om te begrijpen waarom, we moeten snel weer weten, de omvang, het bereiken van een stapel.  , met ons concept van een model, stel je eens voor, we hebben vijf kamers duo.We Stack is de omvang van de vijf, en elke kamer heeft een verband met het nummer van een (eerste aanvullend bord) tot 5 (de laatste extra plaat).Als we uit de drie borden, dan hebben we er twee borden.We kunnen alleen uit de drie min vijf om de juiste grootte, dit is 2.Dit is de stapel van de omvang van de meeste belangrijke punt: de huidige omvang is de goede sleutel, bovenaan de stapel (2) en van de andere in de stapel platen (1).Met andere woorden, de sleutels van de huidige omvang van de werkingssfeer tot 1. Nu, laten we deze uitvoering van de stapel, de omvang van de rij, naar ons.Stel je voor, vijf klanten van het systeem van onze kaartjes.De eerste klant van een ticket aan de nummer 1 en de vijf klanten hebben een stemmen toont het nummer 5.De eerste rij, en voor de eerste   diensten.,,, laten we nu stel je voor, de eerste klant van de diensten, het ticket is verwijderd uit de rij.Die vergelijkbaar zijn met die van de stapel, zodat we de juiste grootte, we in de rij van 1 5.Op dit moment hebben we vier   rij dienst   stemmen.Nu, dit is een kwestie die niet langer correct: de omvang van de vertegenwoordiger van het nummer.Als we alleen uit de vijfde min één, we hebben vier maten.We kunnen het gebruik van de resterende 4 in de rij bij de huidige werkingssfeer.We hebben geen kaartje uit de nummer 1 tot en met 4 of van 2 tot 5?Het antwoord is niet duidelijk.  ,,, dit is een van de volgende twee eigenschappen in een rij, en   _oldestindex voordelen:,, _newestindex,.Dit alles lijkt confusing-i of soms in de war.Om me te helpen met alles wat is de volgende voorbeelden die ik heb ontwikkeld.,, stel je voor dat we van de winkel heeft twee kaartverkoopsysteem:  ,,,, _newestindex, vertegenwoordiger van de klanten van het systeem, de la _oldestindex.,, namens de werknemers van het systeem van de la.,, hier Is de meest moeilijke concept van twee kaartjes voor de cijfers in de twee systemen: wanneer is dezelfde, in de rij van elke klant is opgelost en rij leeg is.We gebruiken de volgende scenario 's: een versterking van deze logica van de klant een kaartje nodig.De klant van haar, dit is van  , _newestindex, opvragen, 1.De volgende klant van de stemmen beschikbaar is voor het systeem 2.  , werknemers en werknemers niet de kaartjes, kaartjes voor het systeem op dit moment in stemming is 1.  , hebben we een cliënt - systeem de huidige nummer (2) en het aantal werknemers) minus (1) wordt de nummer 1.Het aantal vertegenwoordigers van de digitale 1 stemmen nog steeds geen rij te schrappen.  , de werknemers een kaartje nodig van het systeem.Dit kaartje stemmen namens de klanten aan.Stemmen, is van  , _oldestindex, het herstel, het blijkt dat we de nummer 1.  , herhaal stap 4, en het verschil is nu niet meer in de rij met nul stemmen.Dat hebben we nu een eigenschap (_newestindex, kan het ons vertellen,) (de belangrijkste) de meest aangewezen in de rij staan,   eigenschappen (, _oldestindex,), kan zeggen dat onze oudste index (belangrijke) in de rij staan. , hebben we voldoende over de omvang (),,, dus laten we nu het team (data),,,,, 3, 2,   methode: het team (data),,,,, in de rij staan, en we hebben twee doelstellingen:,,, _newestindex, als een van de belangrijkste van deze  ,. _storage, en elk gebruik van gegevens worden toegevoegd als de belangrijkste waarde, toegevoegde waarden, _newestindex, 1.,, de twee doelstellingen van de basis zullen we tot de volgende rij (gegevens), dat queue.prototype.enqueue = functie:,, (data) {dit. _storage [het]. _newestindex = gegevens; + + + + + + de. _newestindex;};,, deze methode betreft omvat twee lijnen van de code.In de eerste regel, gebruiken we deze. _newestindex, het creëren van een nieuwe sleutel voor deze _storage, en verspreiden van gegevens, het.Het   altijd. _newestindex, 1 uur.De code, op de tweede rij ons bijkomende, dit. _newestindex, 1, de vernieuwing van de waarde van 2.  , alle codes nodig, bij het team (data).Laten we nu te bereiken, dequeue (3),,,,,,, 3:  , dequeue (),  ,,,, en dat is het doel van de wet:  , in de rij staan, het schrappen van de oudste gegevens, een bijkomende, _oldestindex,.,, queue.prototype.dequeue = functie) (het oldestindex = var. _oldestindex, deleteddata = het oldestindex. _storage []; geschrapt. _storage [oldestindex]; dit. _oldestindex + +; terug naar deleteddata;};,, lichaam, dequeue (), en we stellen twee variabelen.De eerste toewijzing van variabele, oldestindex,, een rij van de huidige waarde van dit _oldestindex,.Twee variabelen, de waarde van de deleteddata, distributie, oldestindex. _storage [].  , we schrappen, de oudste index in de rij.We worden geschrapt, de bijkomende, dit _oldestindex, 1.Tot slot, keren we terug naar de gegevens worden geschrapt.  , zoals in mijn land het probleem voor de uitvoering van de eerste, de pop (),   en Stack, de uitvoering, dequeue (), de behandeling van de zaak niet is geschrapt, gegevens voor elk gegevens toe te voegen.We moeten de voorwaarden te scheppen voor de behandeling van deze zaak.  ,, queue.prototype.dequeue = functie () {VAR oldestindex = het. _oldestindex, newestindex = het. _newestindex, deleteddata; als (oldestindex!= = = = = = = = = = = = = newestindex) {deleteddata dit. _storage [oldestindex]; geschrapt. _storage [oldestindex]; dit. _oldestindex + +; terug naar deleteddata;}};,, wanneer  , oldestindex, de waarden, de newestindex,   niet gelijk zijn,   dan We ons voor de uitvoering van de logica van de  ,,. Een rij, de volledige verwezenlijking van de verwezenlijking van de rij, we zijn compleet.Laten we kijken naar de code.,, functionele queue () {dit. _oldestindex = 1; deze _newestindex = 1; deze _storage = {}} queue.prototype.size = functie) (terug te keren. _newestindex dit. _oldestindex;}; queue.prototype.enqueue = functie (data) {dit. _storage [dit _newestindex] = gegevens; Deze. + + + + + + _newestindex;}; queue.prototype.dequeue = (() {VAR oldestindex = het. _oldestindex, newestindex = het. _newestindex, deleteddata; als (oldestindex!= = = = = = = = = = = = = newestindex) {deleteddata dit. _storage [oldestindex]; geschrapt. _storage [oldestindex]; dit. _oldestindex + +; terug naar deleteddata;}};,, conclusies, en wij in dit artikel over twee lineaire structuur van de gegevens: Stack en rij.Stack de volgorde en de schrapping van de laatste gegevens opgeslagen gegevens toe te voegen, een rij van opgeslagen gegevens van de eerste orde, maar de verwijdering van de gegevens bij.  , als deze uitvoering van de structuur van de gegevens te verwaarlozen onszelf eraan te herinneren dat de doelstelling van de structuur van de gegevens.Ze is niet zo ingewikkeld is het ontwerp, de organisatie van hun gegevens, om ons te helpen.In dat geval, als je vindt dat je moet hebben om rekening te houden met het gebruik van de gegevens, een stapel of  , rij.

Final product image



Previous:
Next Page: