Forskellen mellem stak og kø

Forfatter: Laura McKinney
Oprettelsesdato: 2 April 2021
Opdateringsdato: 16 Kan 2024
Anonim
Forskellen mellem stak og kø - Teknologi
Forskellen mellem stak og kø - Teknologi

Indhold


Stabel og kø er begge de ikke-primitive datastrukturer. De største forskelle mellem stak og kø er, at stak bruger LIFO-metode (sidst i første ud) til at få adgang til og tilføje dataelementer, mens køen bruger FIFO-metode (Først i første ud) til at få adgang til og tilføje dataelementer.

Stakken har kun den ene ende åben for at skubbe og sprænge dataelementerne på den anden side Køen har begge ender åben for at udtømme og afmatte dataelementerne.

Stak og kø er de datastrukturer, der bruges til lagring af dataelementer og er faktisk baseret på noget ægteækvivalent. For eksempel er stakken en stak cd'er, hvor du kan tage ud og sætte en cd gennem toppen af ​​stakken med cd'er. På lignende måde er køen en kø for teaterbilletter, hvor den person, der står i første omgang, dvs. forresten af ​​køen, serveres først, og den nye person, der ankommer, vises på bagsiden af ​​køen (bagenden af ​​køen).


  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Implementering
  5. operationer
  6. Applikationer
  7. Konklusion

Sammenligningstabel

Grundlag for sammenligningStak
ArbejdsprincipLIFO (sidst først ud)FIFO (First in First out)
StrukturSamme ende bruges til at indsætte og slette elementer.Den ene ende bruges til indsættelse, dvs. bagenden og en anden ende bruges til sletning af elementer, dvs. frontenden.
Antal anvendte pegepindeEnTo (i enkel køsak)
Foretagne operationerTryk og pop Enqueue og dequeue
Undersøgelse af tom tilstandTop == -1Foran == -1 || Foran == Bageste + 1
Undersøgelse af fuld stand
Top == Max - 1Bageste == Maks - 1
VarianterDet har ikke varianter.Det har varianter som cirkulær kø, prioriteringskø, dobbelt afsluttet kø.
ImplementeringenklereRelativt kompleks


Definition af stak

En stak er en ikke-primitiv lineær datastruktur. Det er en ordnet liste, hvor det nye element tilføjes, og det eksisterende element slettes fra den ene ende, kaldet som toppen af ​​stakken (TOS). Da al sletning og indsættelse i en stabel udføres fra toppen af ​​stakken, vil det sidste element, der blev tilføjet, være det første, der fjernes fra stakken. Det er grunden til, at stack kaldes Last-in-First-out (LIFO) type liste.

Bemærk, at det element, der ofte åbnes i stakken, er det øverste element, mens det sidst tilgængelige element er i bunden af ​​stakken.

Eksempel

Nogle af jer spiser måske kiks (eller Poppins). Hvis du antager, er der kun en side af dækslet, der er revet, og kiks tages ud én efter én. Dette kaldes popping, og på lignende måde, hvis du vil bevare nogle kiks i et stykke tid senere, vil du sætte dem tilbage i pakken gennem den samme revne ende kaldes skubbe.

Definition af kø

En kø er en lineær datastruktur kommer i kategorien af ​​den ikke-primitive type. Det er en samling af lignende type elementer. Tilsætningen af ​​nye elementer finder sted i den ene ende kaldet bagenden. På samme måde finder sletning af de eksisterende elementer sted i den anden ende kaldet Front-end, og det er logisk set en liste over først i første ud (FIFO).

Eksempel

I vores daglige liv støder vi på mange situationer, hvor vi ude at vente på den ønskede service, der er vi nødt til at komme ind på ventelinjen for vores tur til at få service. Denne ventekø kan betragtes som en kø.

  1. Stak følger LIFO-mekanisme på den anden side Kø følger FIFO-mekanisme for at tilføje og fjerne elementer.
  2. I en stak bruges den samme ende til at indsætte og slette elementerne. Tværtimod bruges to forskellige ender i køen til at indsætte og slette elementerne.
  3. Da stak kun har en åben ende, er det grunden til, at du kun bruger en markør til at henvise til toppen af ​​stakken. Men køen bruger to pegepunkter til at henvise foran og bagenden af ​​køen.
  4. Stack udfører to operationer, der er kendt som push and pop, mens de i kø er kendt som enqueue og dequeue.
  5. Stakimplementering er lettere, mens køimplementering er vanskelig.
  6. Kø har varianter som cirkulær kø, prioriteringskø, dobbelt afsluttet kø osv. I modsætning hertil har stak ikke varianter.

Stakimplementering

Stakken kan påføres på to måder:

  1. Statisk implementering bruger arrays til at oprette en stak. Statisk implementering er skønt en ubesværet teknik, men er ikke en fleksibel måde at skabe, da erklæringen af ​​stabelens størrelse skal udføres under programdesign, hvorefter størrelsen ikke kan varieres. Derudover er statisk implementering ikke særlig effektiv med hensyn til hukommelsesudnyttelse. Da en matrix (til implementering af stak) er erklæret inden operationens start (på programdesigntidspunktet). Hvis antallet af elementer, der skal sorteres, er meget mindre i stakken, spildes den statisk tildelte hukommelse. På den anden side, hvis der er flere antal elementer, der skal gemmes i stakken, kan vi ikke være i stand til at ændre størrelsen på arrayet for at øge dens kapacitet, så det kan rumme nye elementer.
  2. Dynamisk implementering kaldes også linkliste-repræsentation og bruger pointers til at implementere stacktypen af ​​datastrukturen.

Køimplementering

Kø kan implementeres på to måder:

  1. Statisk implementering: Hvis en kø implementeres ved hjælp af arrays, skal det nøjagtige antal elementer, vi vil gemme i køen, være sikret forud for, fordi størrelsen på arrayet skal deklareres på designtidspunktet eller før behandlingen starter. I dette tilfælde vil starten af ​​arrayet blive den forreste af køen, og den sidste placering af arrayen fungerer som bagsiden af ​​køen. Følgende forhold viser, at hele elementerne findes i køen, når de implementeres ved hjælp af arrays:
    forreste - bageste + 1
    Hvis "bag <foran", vil der ikke være noget element i køen, eller køen vil altid være tom.
  2. Dynamisk implementering: Implementering af køer ved hjælp af pegere, den største ulempe er, at en knude i en sammenkoblet repræsentation bruger mere hukommelsesplads end et tilsvarende element i matrixrepræsentationen. Da der er mindst to felter i hver knude et for datafeltet og andet til at gemme adressen på den næste knude, medens der i tilknyttet repræsentation kun er datafelt der. Fortjenesten ved at bruge den tilknyttede repræsentation bliver åbenlyst, når det kræves at indsætte eller slette et element midt i en gruppe af andre elementer.

Operationer på stak

De grundlæggende operationer, der kan betjenes på stakken, er som følger:

  1. SKUBBE: Når et nyt element føjes til toppen af ​​stakken kaldes PUSH-operation. Ved at skubbe et element i stakken påkaldes tilføjelse af elementet, da det nye element indsættes øverst. Efter hver skubbeoperation øges toppen med en. Hvis matrixen er fuld, og der ikke kan tilføjes noget nyt element, kaldes det STACK-FULL-tilstand eller STACK OVERFLOW. PUSH OPERATION - funktion i C:
    Betragtning af stak er erklæret som
    int stack, top = -1;
    tomt skub ()
    {
    int vare;
    hvis (øverste <4)
    {
    f ("Indtast nummeret");
    scanning ("% d", & vare);
    top = top + 1;
    stak = vare;
    }
    andet
    {
    f ("Stakken er fuld");
    }
    }
  2. POP: Når et element slettes fra toppen af ​​stakken kaldes det POP-operation. Stakken formindskes med en efter hver pop-operation. Hvis der ikke er noget element tilbage på stakken, og popen udføres, vil dette resultere i STACK UNDERFLOW-tilstand, hvilket betyder, at din stak er tom. POP-BETJENING - funktioner i C:
    Betragtning af stak er erklæret som
    int stack, top = -1;
    ugyldig pop ()
    {
    int vare;
    hvis (top> = 4)
    {
    vare = stak;
    top = top - 1;
    f ("Antal slettet er =% d", vare);
    }
    andet
    {
    f ("Stakken er tom");
    }
    }

Handlinger i en kø

De grundlæggende handlinger, der kan udføres i køen er:

  1. Sæt i kø: Sådan indsættes et element i en kø. Indtastningsfunktion i C:
    Kø erklæres som
    int kø, Front = -1 og bageste = -1;
    ugyldig tilføjelse ()
    {
    int vare;
    hvis (bag <4)
    {
    f ("Indtast nummeret");
    scanning ("% d", & vare);
    if (front == -1)
    {
    front = 0;
    bageste = 0;
    }
    andet
    {
    bageste = bageste + 1;
    }
    kø = vare;
    }
    andet
    {
    f ("Køen er fuld");
    }
    }
  2. dequeue: Sådan slettes et element fra køen. Fremhævelsesfunktion i C:
    Kø erklæres som
    int kø, Front = -1 og bageste = -1;
    ugyldig sletning ()
    {
    int vare;
    hvis (foran! = -1)
    {
    vare = kø;
    if (foran == bag)
    {
    front = -1;
    bageste = -1;
    }
    andet
    {
    front = front + 1;
    f ("Antal slettet er =% d", vare);
    }
    }
    andet
    {
    f ("Køen er tom");
    }
    }

Anvendelser af Stack

  • Parring i en compiler.
  • Java virtuel maskine.
  • Fortryd i en tekstbehandler.
  • Tilbage-knap i en webbrowser.
  • PostScript-sprog for ers.
  • Implementeringsfunktionsopkald i en compiler.

Anvendelser af kø

  • Data buffere
  • Asynkron dataoverførsel (fil IO, rør, stikkontakter).
  • Tildeling af anmodninger på en delt ressource (er, processor).
  • Trafikanalyse.
  • Bestem antallet af kasserer, der skal have i et supermarked.

Konklusion

Stabel og kø er lineære datastrukturer er forskellige på visse måder som arbejdsmekanisme, struktur, implementering, varianter, men begge bruges til at gemme elementerne på listen og udføre operationer på listen som tilføjelse og sletning af elementerne. Selvom der er nogle begrænsninger af den enkle kø, der er samlet tilbage ved hjælp af andre typer kø.