Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

C - Realloc jako stos - implementacja

Softmar 02 Apr 2014 00:55 855 4
  • #1
    Softmar
    Level 9  
    Hej, zastanawiam się jak napisać funkcje z tablicą dynamiczną, która będzie zapisywać dane na zasadzie stosu. Chciałem to zrobić za pomocą realloc'a.
    Nie chcę używać <stack>, ani STL'a czy list.
    Czy jest możliwe napisanie tego za pomocą realloc'a czy malloc'a?
    A jeżeli tak to w jaki sposób ?

    Code:
    float *ptr = realloc(tab, (size + 1) * sizeof *ptr);


    Proszę o pomoc i ewentualne wskazówki :D
  • #2
    Akane
    Level 27  
    Problem nie jest całkiem jasny, wzbudza pytania takie jak: czy chcesz zaimplementować objekt stosu z metodami push, pop, używajac zwyczajny alokator pamięci malloc ?.

    Pisz proszę w pierwszej osobie liczby pojedynczej - "nie chcę" - zamiast w trzeciej, o kimś innym - "nie chce". Ta plaga (delikatnie podsumowana) gubienia ogonków zniechęca większość czytających do doczytania tematu do końca, nie wspominając o udzieleniu odpowiedzi, bo nagle pojawia się jakaś tajemnicza, obca osoba, zupełnie bez imienia, o której autor zaczyna pisać:
    Quote:
    Witajcie, chce zrobić[...]
    Kto chce zrobić ? O kim on pisze? Nie czytam dalej.
  • #3
    Softmar
    Level 9  
    Tak, chcę to zrobić za pomocą zwyczajnego alokatora malloc :D
  • Helpful post
    #4
    Akane
    Level 27  
    Proszę bardzo, to jest jedna z tych bardzo prostych implementacji, ograniczona do minimum.

    Dodawanie elementów wypełnia tablicę o określonym rozmiarze (STACKARRAYMAX elementów). Gdy zabraknie miejsca, nowa tablica zostaje zaalokowana i dopisana do końca listy.

    Ściągając elementy ze stosu, wyszukiwana jest ostatnia tablica listy z conajmniej jednym elementem. Tablice bez elementów pozostają w liście - ich automatyczne zwalnianie pozostawiam Tobie.

    Code: cpp
    Log in, to see the code
  • #5
    Softmar
    Level 9  
    Dzięki za pomoc :D