2009-04-16 12 views
27

Stuła jest strukturą danych drzewa, gdzie wyższe poziomy drzewa zawsze zawierają większe (lub mniejsze, jeśli jest ustawione w ten sposób) wartości niż niższe poziomy. "The" heap to garść wolnej pamięci RAM, którą program ma do alokacji dynamicznej. Obaj nazywani są "kupą", ale co ma wspólnego z drugim?Jaki jest związek między stertą "a" i stosem?

+0

Podobne posty [tutaj] (https://stackoverflow.com/q/1699057/465053) i [tutaj] (https://stackoverflow.com/q/660855/465053) – RBT

Odpowiedz

23

Nic wielkiego, szczerze mówiąc. Wyobrażam sobie, że słowo sterty zostało po prostu zrobione z jego codziennym (nietechnicznym) użyciem i zastosowane do tych dwóch pojęć indywidualnie jako względnie dobrych analogii.

W pierwszym przypadku (znaczenie struktury drzewa danych) opis stóg jest najbardziej odpowiedni, ponieważ "większe" obiekty są umieszczone wyżej w drzewie (gdzie "większy" jest określony przez dowolną funkcję klawisza) - tj. jest coś w rodzaju palowania mniejszych obiektów na większych (lub większych na górze, w zależności od tego, jak myślisz). Tak właśnie to zinterpretuję; ktokolwiek pierwszy zastosował nazwę kupa do tej struktury danych myślał, że jest to odpowiednie imię w jego umyśle, i po prostu utknęło.

W drugim przypadku (fragmenty pamięci RAM) nazwa sterty może być nieco bardziej widoczna. "Stert" to po prostu "duży zbiór rzeczy w wysoce arbitralnej kolejności", który zdawałby się równie dobrze stosować w powszechnym użyciu, jak przy dynamicznie przydzielanych porcjach pamięci.

W każdym razie nie martwię się abstrakcyjnymi metaforycznymi podobieństwami, które można wyciągnąć między tymi dwoma pomysłami. Traktuj je zupełnie osobno i nie zawiedziesz się w każdej sytuacji.

Edit: Wydaje struktury danych oparty na drzewie może wzięli swoją nazwę od heap z algebry abstrakcyjnej, jak jest to racjonalnie powszechne w informatyce. Jednak nie chciałbym potwierdzić ani zaprzeczyć temu ...

2

Oni ... mają to samo imię! to jest to!

5

Oboje mają tę samą nazwę, to już wszystko.
"Sterty" nigdy nie są ułożone jako rzeczywista struktura danych sterty.

2

Jedynym związkiem między nimi jest nazwa "sterty".

0

Definicja z answers.com

Heap: grupa rzeczy umieszczonych lub rzucone, jeden na drugim: sterty brudnych szmat leżących w kącie.

To tylko podstawowe nazewnictwo ze względu na koncepcyjny obraz rzucania przedmiotów w nieuporządkowany sposób. Jak wskazują inne plakaty, sterty nie są zorganizowane jako struktura danych sterty. To zależy od procedur alokacji pamięci w twojej bibliotece systemowej (np. Sprawdź, jak działa malloc)

3

Stuła (struktura danych) jest tak nazywana, ponieważ jeśli ją narysujesz, wygląda jak kupa. Stertę (pamięć) nazywa się stertą, ponieważ jest w pewien sposób zorganizowana, ale nie w pełni. Gromadzisz dane na stercie, ale możesz mieć w nim dziury i nieregularności. To tak, jakbyś kładł papiery na kupie. Czasami usuwasz jeden z dołu. Ma to postać kupy, tj. Zorganizowanej, ale nie w pełni.

+0

"jeśli go narysujesz, wygląda jak kupa "-> co oznacza rzeczownik orzecznikowy" ... wygląda jak kupa "? –

1

Aby dalej komplikować pytanie: w niektórych systemach (np. Microsoft Windows) istnieje wiele "stert" w sensie alokacji pamięci. "Kupa" to tylko the default heap. Ale jeśli zadzwonisz pod numer HeapAlloc(), możesz wybrać, z której alokacji pamięci chcesz przyporządkować.

Powiązane problemy