Mi multispisok

Már nézte meg ezt a képet, és próbálja megérteni, mi az multispisok, de még mindig nem értem, hogyan valósítható meg.

Itt vannak a kísérletek végrehajtására multispisok.

Kérjük példát multispiska + például Betételemek.

A legegyszerűbb módja, hogy végre ezt a C ++ - kezelhető shared_ptr adattárolásra A, B, C, D (shared_ptr - ez egy mutató referencia számlálás), és köti őket a szokásos lista:

Ebben az esetben minden erőforrás helyesen szabadul fel, amikor a lista törlésre kerül, és a lista bármilyen szám lehet (általában akkor megépíteni a grafikont).

De ez a memória az adatok is dinamikusan osztja, és ugyanabban az időben dinamikusan allokált memóriát minden egyes csomóponthoz. A referencia száma is létrehozhatók a kupac, ha nem használja make_shared.

Meg lehet próbálni, hogy egyszerűsítse referencia számlálás (sőt, egészen a logikai zászló -, hogy a csomópont egy eleme két lista, vagy csak egy), de a kérdés az, hogyan kell törölni csomópontokat, hogy ne távolítsa el kétszer ugyanazt, és hogyan kell hozzáadni egy csomópont mindkét lista.

Kaptam egy listát (c ++ 14):

A csomópontok adunk a lista elejére, mert ő egyirányú, nem hajtották végre egy betétet tetszőleges helyen és eltávolítására csomópont (eltávolítására van szükség, hogy hívja next1.release () és next2.release ()., ami visszaállítja a mutató, de nem távolítja el a tárgyat, de először meg kell találni az előző elemek mindkét listában)

EDIT: eltávolítása a listából eredetileg történt baj, úgy tűnik. Meg kell most működik megfelelően.

Kapcsolódó cikkek