Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp kamino ir eilės

Stack ir Queue abu yra ne primityvios duomenų struktūros. Pagrindiniai skirtumai tarp kamino ir eilės yra tai, kad krūva naudoja „LIFO“ (paskutinis iš pirmojo išeities) metodą prieiti prie duomenų elementų ir pridėti juos, o eilė naudoja „FIFO“ („Pirmas iš pradžių“) metodą, skirtą pasiekti ir pridėti duomenų elementus.

Sraigtas turi tik vieną galą, atidarytą duomenų elementų stūmimui ir iškėlimui, o kita vertus, eilutė turi abu galus, kad būtų galima išgauti ir išardyti duomenų elementus.

Srautas ir eilė yra duomenų struktūros, naudojamos duomenų elementams saugoti ir iš tikrųjų yra pagrįstos tam tikru realaus pasaulio lygiu. Pavyzdžiui, kamino yra kompaktinių plokštelių krūva, kurioje galite išimti ir įdėti kompaktinį diską per kompaktinių diskų kamino viršų. Panašiai, eilė yra teatrų bilietų eilė, kurioje pirmiausia stovintis asmuo, ty eilės priekis, bus įteiktas pirmiausia, o naujasis atvykęs asmuo pasirodys eilės gale (eilės gale).

Palyginimo diagrama

Palyginimo pagrindasStackEilė
Veikimo principasLIFO (paskutinį kartą iš pradžių)FIFO (iš pradžių iš pradžių)
StruktūraTas pats galas naudojamas elementams įterpti ir ištrinti.Vienas galas naudojamas įterpimui, ty galinis galas ir kitas galas yra naudojami elementams ištrinti, ty priekiniam galui.
Naudotų taškų skaičiusVienasDu (paprastoje eilėje)
Atliktos operacijosPush ir PopNustatyti ir dequeue
Tuščios būklės tyrimasĮ viršų == -1Priekinis == -1 || Priekinis == Galinis + 1
Visos būklės tyrimas
Į viršų == Max - 1Galinis == Max - 1
VariantaiJi neturi variantų.Jis turi variantų, tokių kaip apvali eilė, prioritetinė eilė, dvigubai baigta eilė.
ĮgyvendinimasPaprasčiauPalyginti sudėtinga

„Stack“ apibrėžimas

Stack yra ne primityvi linijinė duomenų struktūra. Tai yra užsakytas sąrašas, kuriame pridedamas naujas elementas, o esamas elementas ištrinamas tik iš vieno galo, vadinamas kamino viršuje (TOS). Kadangi visas ištrynimas ir įterpimas į krūvą atliekamas iš kamino viršaus, paskutinis pridėtas elementas bus pirmasis, kuris bus pašalintas iš kamino. Tai yra priežastis, kodėl krūva vadinama „Last-in-First-out“ (LIFO) tipo sąrašu.

Atkreipkite dėmesį, kad elementas, dažnai pasiekiamas krūva, yra viršutinis elementas, o paskutinis galimas elementas yra kamino apačioje.

Pavyzdys

Kai kurie iš jūsų gali valgyti sausainius (arba „Poppins“). Jei manote, tik viena dangtelio pusė yra suplėšyta, o sausainiai išimami po vieną. Tai vadinama popping, ir panašiai, jei norite tam tikrą laiką išsaugoti kai kuriuos sausainius, tuos pačius suplėšytus galus juos įdėti į pakuotę.

Eilės apibrėžimas

Eilė yra tiesinė duomenų struktūra, esanti ne primityviojo tipo kategorijoje. Tai panašaus tipo elementų rinkinys. Naujų elementų pridėjimas vyksta viename gale, vadinamas galiniu galu. Panašiai, esamų elementų ištrynimas vyksta kitame gale, vadinamame „Front-end“, ir tai logiškai yra „First in first out“ (FIFO) sąrašo tipas.

Pavyzdys

Mūsų kasdieniame gyvenime mes susiduriame su daugeliu atvejų, kai mes laukiame norimos paslaugos, ten mes turime patekti į laukimo liniją, kad galėtume aptarnauti. Ši laukimo eilė gali būti laikoma eile.

Pagrindiniai skirtumai tarp kamino ir eilės

  1. „Stack“ seka „LIFO“ mechanizmą, kita vertus, eilė seka FIFO mechanizmą, kad pridėtų ir pašalintų elementus.
  2. Stekke tas pats galas naudojamas elementams įterpti ir ištrinti. Priešingai, eilėje įterpiami ir ištrinami du skirtingi galai.
  3. Kaip Stack turi tik vieną atvirą galą, tai yra priežastis, kodėl naudokite tik vieną rodyklę, kad galėtumėte matyti kamino viršų. Tačiau eilėje yra du rodyklės, kad būtų galima nukreipti eilę į priekį ir galą.
  4. „Stack“ atlieka dvi operacijas, žinomas kaip „push“ ir „pop“, o eilėje yra žinoma kaip „enqueue“ ir „dequeue“.
  5. Stekų diegimas yra paprastesnis, o eilių įgyvendinimas yra sudėtingas.
  6. Eilėje yra variantų, tokių kaip apvali eilė, prioritetinė eilė, dvigubai baigta eilė ir pan. Priešingai, kamino variantų nėra.

Stekų įgyvendinimas

Steką galima taikyti dviem būdais:

  1. Statinis diegimas naudoja masyvus, kad sukurtų kaminą. Statinis įgyvendinimas yra paprastas metodas, bet nėra lankstus kūrimo būdas, nes kamino dydžio deklaracija turi būti padaryta programos kūrimo metu, po to dydis negali būti keičiamas. Be to, statinis įgyvendinimas nėra labai veiksmingas atminties panaudojimui. Kadangi masyvas (kamino įgyvendinimui) yra paskelbtas prieš operacijos pradžią (programos kūrimo metu). Dabar, jei elementų, kurie turi būti surūšiuoti, skaičius yra mažesnis krūvoje, statiškai paskirstyta atmintis bus švaistoma. Kita vertus, jei ten yra daugiau elementų, kuriuos reikia saugoti kamino, mes negalime pakeisti masyvo dydžio, kad padidintume jo pajėgumą, kad būtų galima pritaikyti naujus elementus.
  2. Dinaminis įgyvendinimas taip pat vadinamas susietu sąrašų vaizdavimu ir naudoja rodykles, kad būtų įgyvendintas duomenų struktūros kamino tipas.

Eilės įgyvendinimas

Eilė gali būti įgyvendinama dviem būdais:

  1. Statinis įgyvendinimas : Jei eilė įgyvendinama naudojant matricas, būtinas tikslus elementų, kuriuos norime išsaugoti eilėje, skaičius, nes masyvo dydis turi būti deklaruojamas projektavimo metu arba prieš pradedant apdorojimą. Tokiu atveju masyvo pradžia tampa eilės priekine dalimi, o paskutinė masyvo vieta veiks kaip eilės galas. Toliau pateiktas ryšys suteikia eilėje visus elementus, kai jie įgyvendinami naudojant matricas:
    priekinis - galinis + 1
    Jei „galinis <priekis“, tada eilėje nebus elementų arba eilė visada bus tuščia.
  2. Dinaminis diegimas : eilių įgyvendinimas naudojant rodykles, pagrindinis trūkumas yra tas, kad susietos reprezentacijos mazgas sunaudoja daugiau atminties vietos nei atitinkamas masyvo atvaizdavimo elementas. Kadangi kiekviename mazge yra bent du laukai duomenų laukui ir kitiems, kad būtų saugomas kito mazgo adresas, o susietame vaizde yra tik duomenų laukas. Susieto atvaizdo naudojimo privalumai tampa akivaizdūs, kai reikia įterpti ar ištrinti elementą kitų elementų grupės viduryje.

Operacijos ant kamino

Pagrindinės operacijos, kurias galima naudoti ant kamino, yra tokios:

  1. PUSH : kai į viršų įdėtas naujas elementas yra žinomas kaip PUSH operacija. Paspaudus elementą kaminai, pridedamas elementas, nes naujas elementas bus įterptas viršuje. Po kiekvienos stūmimo operacijos viršuje padidinama viena. Jei masyvas yra pilnas, ir negali būti pridedamas naujas elementas, tai vadinama STACK-FULL arba STACK OVERFLOW. PUSH OPERATION - funkcija C:
    Atsižvelgiant į kamino deklaravimą,
    int stack [5], top = -1;
    void push()
    {
    int item;
    if (top < 4)
    {
    printf ("Enter the number") ;
    scan ("%d", & item) ;
    top = top + 1;
    stack [top] = item;
    }
    else
    {
    printf (" Stack is full");
    }
    }
  2. POP : kai elementas ištrinamas iš viršaus, tai vadinama POP operacija. Po kiekvieno „pop“ operacijos sklypas sumažinamas vienu. Jei kamino vietoje nėra palikto elemento, o pop bus atlikta, tai sukels STACK UNDERFLOW būseną, o tai reiškia, kad jūsų kaminai yra tuščias. POP OPERATION - funkcijos C:
    Atsižvelgiant į kamino deklaravimą,
    int stack [5], top = -1;
    void pop()
    {
    int item;
    if (top >= 4)
    {
    item = stack [top];
    top = top - 1;
    printf ("Number deleted is = %d", item) ;
    }
    else
    {
    printf (" Stack is empty");
    }
    }

Operacijos eilėje

Pagrindinės operacijos, kurias galima atlikti eilėje, yra šios:

  1. Enqueue : įterpti elementą į eilę.Patikrinimo operacijos funkcija C:
    Eilė yra deklaruojama kaip
    int queue [5], Front = -1 and rear = -1;
    void add ()
    {
    int item;
    if ( rear < 4)
    {
    printf ("Enter the number") ;
    scan ("%d", & item) ;
    if (front == -1)
    {
    front =0 ;
    rear =0 ;
    }
    else
    {
    rear = rear + 1;
    }
    queue [rear] = item ;
    }
    else
    {
    printf ("Queue is full") ;
    }
    }
  2. Dequeue : norėdami ištrinti elementą iš eilės.Patikrinimo operacijos funkcija C:
    Eilė yra deklaruojama kaip
    int queue [5], Front = -1 and rear = -1;
    void delete ()
    {
    int item;
    if ( front ! = -1)
    {
    item = queue [ front ] ;
    if (front == rear)
    {
    front =-1 ;
    rear =-1 ;
    }
    else
    {
    front = front + 1;
    printf ("Number deleted is = %d", item) ;
    }
    }
    else
    {
    printf ("Queue is empty") ;
    }
    }

„Stack“ programos

  • Analizavimas kompiliatoriuje.
  • „Java“ virtualioji mašina.
  • Atšaukite teksto redagavimo priemonę.
  • Atgal mygtukas žiniatinklio naršyklėje.
  • Spausdintuvams skirta „PostScript“ kalba.
  • Funkcijų skambučių diegimas kompiliatoriuje.

Eilės programos

  • Duomenų buferiai
  • Asinchroninis duomenų perdavimas (failas IO, vamzdžiai, lizdai).
  • Prašymų paskirstymas bendram ištekliui (spausdintuvas, procesorius).
  • Eismo analizė.
  • Nuspręskite, kiek kasų turi būti prekybos centre.

Išvada

Stekų ir eilių eilutės yra tiesinės duomenų struktūros, kurios tam tikrais būdais skiriasi, pavyzdžiui, darbo mechanizmas, struktūra, įgyvendinimas, variantai, tačiau abu naudojami saugoti elementų sąraše ir atlikti operacijas sąraše, pavyzdžiui, elementų pridėjimas ir ištrynimas. Nors yra keletas paprastos eilės apribojimų, kurie atgaunami naudojant kitų tipų eilę.

Top