.NET Tip #18: Generické kolekce (5/6) - Stack (zásobník)

Tomáš Jecha, MVP, MCSD       17.10.2008       C#, .NET Tips       13094 zobrazení

Dnes si povíme o generické kolekci typu Stack - v překladu zásobník. Je velmi podobná frontě, kterou jsme probírali minule. Má jen 2 základní funkce:

  • Push - přidání jedné položky do zásobníku
  • Pop - odebrání jedné položky z vrchu zásobníku

Jako příklad může sloužit zásobník na CD.

CD Stack 

Příkaz Push přidává CD do zásobníku a Pop je z vrchu odebírá. Tentokrát se jedná o seznam typu FILO - zkratka first in last out - tedy první dovnitř poslední ven. Pokud přidáme CD v pořadí A, B, C, vyjmeme je postupně v pořadí C, B, A:

Dim zasobnik As New System.Collections.Generic.Stack(Of String)()

zasobnik.Push("A") ' CD A je na dně zásobníku
zasobnik.Push("B") ' CD B je nad CD A
zasobnik.Push("C") ' CD C je nad CD B, které je nad CD A

Console.WriteLine(zasobnik.Pop()) ' první odebereme z vrchu CD C
Console.WriteLine(zasobnik.Pop()) ' druhé odebereme z vrchu CD B
Console.WriteLine(zasobnik.Pop()) ' a poslední na dně CD A

Stejně jako u fronty i zde máme funkci Peek, která vrací vrchní záznam ze zásobníku (stejně jako Pop), ale nevyjme tento prvek ven.

V této sérii jsem psal i o následujících třídách:

  • List
  • Dictionary
  • SortedDictionary a SortedList
  • Queue
  • Stack
  • HashSet
  •  

    hodnocení článku

    0       Hodnotit mohou jen registrované uživatelé.

     

    Nový příspěvek

     

    Diskuse: .NET Tip #17: Generické kolekce (4/7) - Queue (fronta)

    Akurát som chcel použiť zásobník 'Stack(OF T)',

    avšak zásobník nefunguje poľa opisu v článku.

    Push - Pridá položku do zásobníku, lenže na vrch 'TOP'

    Pop - Vráti položku z vrchu tiež 'TOP'

    Napr.

    .Push("A")

    .Push("B")

    .Push("C")

    .Pop - Vráti A

    .Pop - Vráti B

    .Pop - Vráti C

    Používam .Net 3.5 SP1, takto to skutočne funguje a takto o tom hovorí aj XML popis funkcií...

    Lenže ja by som potreboval 'Stack' ktorý sedí podľa opisu článku, neviete poradiť?

    nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

    Zrada bola v mojom kóde, takže všetko je OK....

    nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                           
    Nadpis:
    Antispam: Komu se občas házejí perly?
    Příspěvek bude publikován pod identitou   anonym.

    Nyní zakládáte pod článkem nové diskusní vlákno.
    Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

    Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

     

    • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
      Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
    • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

    přihlásit pomocí externího účtu

    přihlásit pomocí jména a hesla

    Uživatel:
    Heslo:

    zapomenuté heslo

     

    založit nový uživatelský účet

    zaregistrujte se

     
    zavřít

    Nahlásit spam

    Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

    Nahlásit Zrušit

    Chyba

    zavřít

    feedback