Kiedy programiści mówią o „strukturach danych”, czy mówią tylko o abstrakcyjnych typach danych, takich jak listy , drzewa , skróty , wykresy itp.?
Czy też termin ten obejmuje dowolną strukturę przechowującą dane, taką jak typy złożone (obiekty klasy, struktury, wyliczenia itp.) I typy pierwotne (boolean, int, char itp.)?
Słyszałem tylko, że programiści używają tego terminu w odniesieniu do złożonych struktur danych lub abstrakcyjnych typów danych, jednak artykuł w Wikipedii, który zawiera listę struktur danych, zawiera zarówno typy złożone, jak i typy pierwotne w definicji, co nie jest tym, czego się spodziewałem (nawet choć ma to sens).
Rozglądając się online, widzę inne miejsca, które odnoszą się do terminu „struktura danych” w sensie programowania jako odnoszące się tylko do abstrakcyjnych typów danych, takich jak wykład z Wydziału Informatyki Uniwersytetu Stony Brook, który stwierdza
Struktura danych jest faktyczną implementacją określonego abstrakcyjnego typu danych.
lub ten wikibook o strukturach danych , który używa tego terminu w zdaniach takich jak ten:
Ponieważ struktury danych są abstrakcjami wyższego poziomu, przedstawiają nam operacje na grupach danych, takie jak dodawanie elementu do listy lub wyszukiwanie elementu o najwyższym priorytecie w kolejce
Dlaczego więc kiedykolwiek słyszę programistów odnoszących się do złożonych struktur danych lub abstrakcyjnych typów danych, gdy używają terminu „struktura danych”? Czy programiści mają inną definicję terminu niż definicja słownika?
if programmers mean something different when they talk about data structures
wciąż jednak szuka opinii.Odpowiedzi:
Ogólna definicja „struktury danych” to wszystko, co może przechowywać dane w uporządkowany sposób, więc tak, obejmowałoby to typy złożone i typy pierwotne oprócz abstrakcyjnych typów danych. Na przykład a
string
jest strukturą danych, ponieważ może przechowywać sekwencję znaków w uporządkowany sposób.Jednak termin ten ma również inne znaczenie dla programistów.
Ponieważ termin „struktury danych” jest tak szeroki, programiści zwykle używają bardziej szczegółowego terminu, aby zidentyfikować to, o czym mówią, na przykład
class
lubdata object
lubprimitive type
, a konkretnym terminem używanym dla najbardziej złożonych lub abstrakcyjnych typów danych jest „struktura danych”Dlatego słyszysz, że „struktura danych” jest najczęściej używana w abstrakcyjnych typach danych, takich jak tablice, listy, drzewa i tabele skrótów, a nie w takich rzeczach, jak prymitywne typy danych
źródło
Lists
,Trees
,Graphs
itp właśnie dzieje się „struktury danych”Termin odnosi się do obu, choć rzeczy takie jak
ints
ibooleans
są zwykle uważane za prymitywne typy danych (lub prymitywne struktury danych). Sam termin po prostu odnosi się do wszystkiego, co przechowuje dane w określony sposób. Z pewnościąint
spełnia tę definicję, podobnie jak coś w rodzaju tabeli mieszania, tyle że jest prostsze.Zazwyczaj, gdy ludzie używają struktury danych, odnoszą się do bardziej złożonych struktur danych, a nie tych prostszych, ale obie spełniają definicję.
źródło
int
się „strukturą danych”.Najprostszą i bardzo podstawową definicją, jaką kiedykolwiek słyszałem o strukturach danych, jest przechowywanie danych w pamięci w taki sposób, aby podstawowe operacje, takie jak wstawianie, aktualizacja, usuwanie itp., Mogły być wykonywane w wydajny sposób pod względem czasu i pamięci.
Tak więc typ danych informuje o typie danych, które w nim zapisaliśmy. Może to być liczba całkowita, dziesiętna, znak, ciąg lub obiekt. Mogą to być typy złożone lub typy pierwotne oprócz abstrakcyjnych typów danych.
Ale korzystamy ze struktur danych, gdy chcemy przechowywać w pamięci wszelkie złożone dane. To jest powód, dla którego słyszymy tylko o typach danych, takich jak tablice, listy, drzewa i tabele skrótów, a nie o rzeczach takich jak prymitywne typy danych
źródło