Razlika između staka i reda

Autor: Laura McKinney
Datum Stvaranja: 2 Travanj 2021
Datum Ažuriranja: 16 Svibanj 2024
Anonim
Жакет крючком НЕЗАБУДКА - подробный мастер класс для начинающих. Вязание - кайма крючком МК ЧАСТЬ 2
Video: Жакет крючком НЕЗАБУДКА - подробный мастер класс для начинающих. Вязание - кайма крючком МК ЧАСТЬ 2

Sadržaj


Stack i Queue su neprimitivne strukture podataka. Glavne razlike između skupa i čekanja su u tome što skup koristi LIFO (zadnji u prvom izlasku) metodu za pristup i dodavanje elemenata podataka, dok Queue koristi FIFO (First in first out) metodu za pristup i dodavanje elemenata podataka.

Sklop ima samo jedan kraj otvoren za guranje i iskakanje podatkovnih elemenata s druge strane. Red je otvoren i za završavanje i uklanjanje podataka.

Skup i redoslijed podataka su strukture podataka koje se koriste za spremanje elemenata podataka i zapravo se temelje na stvarnom ekvivalentu stvarnog svijeta. Na primjer, snop je snop CD-a iz kojeg možete izvaditi i staviti CD u vrh snopa CD-ova. Slično tome, red je red za ulaznice za kazalište, gdje će osoba koja stoji na prvom mjestu, tj. Prva čestica biti poslužena prva, a nova osoba koja je stigla pojavit će se na stražnjem dijelu reda (stražnji kraj reda).

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. izvršenje
  5. operacije
  6. Prijave
  7. Zaključak

Usporedni grafikon

Osnove za usporedbuStog Red
Princip radaLIFO (Posljednji u prvom izlasku)FIFO (prvo u prvom izlasku)
StrukturaIsti se kraj koristi za umetanje i brisanje elemenata.Jedan kraj koristi se za umetanje, tj. Stražnji kraj, a drugi kraj za brisanje elemenata, tj. Prednji.
Broj upotrijebljenih pokazivačaJedanDva (u jednostavnom slučaju iz reda čekanja)
Izvršene operacijePush and Pop Enqueue i dequeue
Ispitivanje praznog stanjaVrh == -1Prednja strana == -1 || Prednja strana == Straga + 1
Ispitivanje punog stanja
Vrh == Max - 1Straga == Max - 1
varijanteNema varijante.Ima varijante poput kružnog reda, red prioriteta, red s dvostrukim završetkom.
izvršenjejednostavnijeUsporedno složen


Definicija Stacka

Snop je neprimitivna linearna struktura podataka. To je naručeni popis gdje se dodaje nova stavka, a postojeći element se briše sa samo jednog kraja, koji se zove kao vrh snopa (TOS). Budući da se sve brisanje i umetanje u niz vrši s vrha snopa, posljednji dodani element bit će prvi koji je uklonjen iz snopa. To je razlog zašto se hrpa naziva vrsta Last-in-First-out (LIFO).

Imajte na umu da je element kojem se često pristupa u nizu najviši element, dok je zadnji raspoloživi element na dnu snopa.

Primjer

Neki od vas mogu jesti kekse (ili Poppins). Ako pretpostavljate, samo je jedna strana korice razvaljena, a keksi se vade jedan po jedan. To se zove pucanje, a slično, ako želite neko vrijeme sačuvati kekse, vratit ćete ih u pakiranje kroz isti istrgani kraj naziva se guranje.

Definicija reda

Red čestica je linearna struktura podataka koja dolazi u kategoriju neprimitivnog tipa. To je zbirka elemenata slične vrste. Dodavanje novih elemenata odvija se na jednom kraju koji se naziva stražnji kraj. Slično tome, brisanje postojećih elemenata događa se na drugom kraju koji se naziva Front-end, a logično je vrsta popisa First in first out (FIFO).


Primjer

U našem svakodnevnom životu nailazimo na mnoge situacije u kojima čekamo željenu uslugu, tamo moramo ući u red čekanja za naš red da bismo je servisirali. Taj red čekanja može se zamisliti kao red čekanja.

  1. Slaganje slijedi LIFO mehanizam s druge strane Red slijedi FIFO mehanizam za dodavanje i uklanjanje elemenata.
  2. U snopu se isti kraj koristi za umetanje i brisanje elemenata. Suprotno tome, dva se različita kraja koriste u redu za umetanje i brisanje elemenata.
  3. Kako Stack ima samo jedan otvoreni kraj, to je i razlog korištenja samo jednog pokazivača za vrh snopa. Ali red koristi dva pokazivača za upućivanje prednjeg i stražnjeg kraja reda.
  4. Stack izvodi dvije operacije poznate kao push i pop, dok je u Queueu poznat i kao enqueue i dequeue.
  5. Provedba snopa je lakša, dok je implementacija čekanja zahtjevna.
  6. Red čekanja ima varijante poput kružnog reda, red prioriteta, red s dvostrukim završetkom itd. Suprotno tome, stog nema varijante.

Provedba snopa

Korak se može primijeniti na dva načina:

  1. Statička primjena koristi nizove za stvaranje snopa. Statička primjena je iako jednostavna tehnika, ali nije fleksibilan način stvaranja, jer deklariranje veličine snopa mora biti učinjeno tijekom dizajniranja programa, nakon čega se veličina ne može mijenjati. Uz to, statička implementacija nije baš učinkovita u pogledu iskorištavanja memorije. Budući da se niz (za implementaciju snopa) deklarira prije početka operacije (u vrijeme dizajna programa). Ako je broj elemenata za razvrstavanje vrlo manji u snopu, nestaje statički dodijeljena memorija. S druge strane, ako tada postoji veći broj elemenata koji se moraju pohraniti u gomilu, ne možemo promijeniti veličinu matrice kako bismo povećali njezin kapacitet tako da može primiti nove elemente.
  2. Dinamična implementacija naziva se također povezano predstavljanje popisa i koristi pokazivače za implementaciju vrste strukture podataka.

Realizacija reda

Red čekanja može se implementirati na dva načina:

  1. Statička primjena: Ako se red realizira pomoću nizova, prije se mora osigurati točan broj elemenata koje želimo pohraniti u red, jer veličina matice mora biti deklarirana u vrijeme dizajna ili prije nego što započne obrada. U ovom slučaju, početak matrice postat će prednji dio reda, a posljednja lokacija matice će djelovati kao stražnji dio reda. Sljedeći odnos daje da čitavi elementi postoje u redu čekanja kada se implementiraju pomoću nizova:
    prednji - stražnji + 1
    Ako je stražnji <prednji> tada u redu neće biti elemenata ili će red čekanja uvijek biti prazan.
  2. Dinamična implementacija: Implementacija redova pomoću pokazivača, glavni nedostatak je taj što čvor u povezanoj reprezentaciji troši više memorijskog prostora od odgovarajućeg elementa u predstavljanju polja. Budući da u svakom čvorištu postoje najmanje dva polja, jedno za podatkovno polje, a drugo za pohranu adrese sljedećeg čvora, dok je u povezanom predstavljanju samo polje podataka. Zasluga korištenja povezanog prikaza postaje očita kada je potrebno umetnuti ili izbrisati element usred grupe drugih elemenata.

Operacije na stoku

Osnovne operacije koje se mogu izvoditi na hrpi su sljedeće:

  1. GURNUTI: kada se novi vrh doda na vrh snopa poznat je i kao PUSH operacija. Guranje elementa u snop poziva na dodavanje elementa jer će se novi element umetnuti na vrh. Nakon svakog pritiska, vrh se povećava za jedan. Ako je niz pun i ne može se dodati novi element, to se zove STACK-FULL condition ili STACK OVERFLOW. PUSH Operation - funkcija u C:
    Razmatranje snopa je deklarirano kao
    int stack, top = -1;
    void push ()
    {
    stavka int;
    ako (vrh <4)
    {
    f ("Unesite broj");
    skeniranje ("% d", & stavka);
    top = vrh + 1;
    stack = stavka;
    }
    drugo
    {
    f ("Snop je pun");
    }
    }
  2. POP: Kada je element izbrisan s vrha snopa, poznat je kao POP rad. Korak se smanjuje za jedan, nakon svake pop operacije. Ako na snopu ne ostane nijedan element, a pop je izveden, to će rezultirati STACK UNDERFLOW uvjetom, što znači da je vaš hrpa prazan. RAD POP - funkcije u C:
    Razmatranje snopa je deklarirano kao
    int stack, top = -1;
    void pop ()
    {
    stavka int;
    ako je (vrh> = 4)
    {
    stavka = stog;
    vrh = vrh - 1;
    f ("Broj obrisanih je =% d", stavka);
    }
    drugo
    {
    f ("Snop je prazan");
    }
    }

Operacije na redu

Osnovne operacije koje se mogu izvesti na red su:

  1. Postavi u red: Za umetanje elementa u red.Uključivanje operativne funkcije u C:
    Red čekanja je proglašen kao
    int red, prednji = -1 i zadnji = -1;
    nevažeći dodaj ()
    {
    stavka int;
    ako (straga <4)
    {
    f ("Unesite broj");
    skeniranje ("% d", & stavka);
    ako (prednji == -1)
    {
    prednja strana = 0;
    straga = 0;
    }
    drugo
    {
    straga = straga + 1;
    }
    red = stavka;
    }
    drugo
    {
    f ("Red je pun");
    }
    }
  2. Dequeue: Za brisanje elementa iz čekanja. Izvršite radnu funkciju u C:
    Red čekanja je proglašen kao
    int red, prednji = -1 i zadnji = -1;
    void delete ()
    {
    stavka int;
    ako (prednji! = -1)
    {
    stavka = red;
    ako (sprijeda == straga)
    {
    prednji = -1;
    straga = -1;
    }
    drugo
    {
    prednji = prednji + 1;
    f ("Broj obrisanih je =% d", stavka);
    }
    }
    drugo
    {
    f ("Red je prazan");
    }
    }

Primjene snopa

  • Razvrstavanje u sastavljač.
  • Java virtualni stroj.
  • Poništavanje programa za obradu teksta.
  • Gumb Natrag u web-pregledniku.
  • PostScript jezik za ers.
  • Implementacija poziva funkcije u prevoditelju.

Aplikacije reda

  • Spremnici podataka
  • Asinhroni prijenos podataka (datoteka IO, cijevi, utičnice).
  • Dodjeljivanje zahtjeva na zajedničkom resoru (er, procesor).
  • Analiza prometa.
  • Odredite broj blagajnika koje imaju u supermarketu.

Zaključak

Stack i Queue linearne strukture podataka razlikuju se na određene načine kao što su radni mehanizam, struktura, implementacija, inačice, ali obje se koriste za pohranu elemenata u popis i izvođenje operacija na popisu poput dodavanja i brisanja elemenata. Iako postoje ograničenja jednostavnog reda koji se nadoknađuje pomoću drugih vrsta čekanja.