Haben Sie verkettete Listen, doppelt verkettete Listen verwenden und so weiter, in der Wirtschaft Programmierung?

StackOverflow https://stackoverflow.com/questions/1027496

  •  06-07-2019
  •  | 
  •  

Frage

Sind Datenstrukturen wie verknüpfte Listen etwas, das für echte Programmierung rein akademisch sind oder sie wirklich Sie sie nutzen? Sind sie Dinge, die von Generika abgedeckt werden, so dass Sie sie nicht bauen müssen (vorausgesetzt, Ihre Sprache hat Generika)? Ich diskutieren nicht die Bedeutung zu verstehen, was sie sind, nur die Nutzung von ihnen außerhalb der Hochschule. Ich frage von einer vorderen Ende web, Backend-Datenbank Perspektive. Ich bin sicher, dass jemand irgendwo diese Builds. Ich frage aus meinem Kontext.

Danke.

EDIT: Sind Generics, so dass Sie verkettete Listen nicht bauen müssen und dergleichen

?
War es hilfreich?

Lösung

Es hängt von der Sprache und Frameworks Sie verwenden. Die meisten modernen Sprachen und Frameworks werden Sie nicht diese Räder machen neu erfinden. Stattdessen werden sie Dinge wie List<T> oder HashTable liefern.

EDIT:

Wir wahrscheinlich verkettete Listen die ganze Zeit, aber es nicht erkennen. Wir haben keine Implementierungen von verknüpften Listen auf unseren eigenen zu schreiben, da die Gerüste nutzen wir sie schon für uns geschrieben haben.

Sie können auch verwirrt werden immer über „Generika“. Sie können wie List<T> auf generische Liste Klassen beziehen werden. Dies ist genau das gleiche wie die nicht-generische Klasse Liste, aber wo das Element immer vom Typ T. Es wird wahrscheinlich als eine verknüpfte Liste implementiert, aber wir müssen darüber nicht kümmern.

Wir müssen auch nicht über Zuweisung von physischen Speicher kümmern, oder wie unterbricht Arbeit, oder wie ein Dateisystem zu erstellen. Wir haben Betriebssysteme, die für uns zu tun. Aber wir können nur das gleiche, dass die Informationen in der Schule unterrichtet werden.

Andere Tipps

Auf jeden Fall. Viele „Liste“ Implementierungen in modernen Sprachen sind Listen tatsächlich verbunden sind, manchmal in Kombination mit Arrays oder Hash-Tabellen für den direkten Zugriff (durch den Index als zu Iteration gegen).

Listen Linked (insbesondere doppelt verkettete Listen) sind sehr häufig in "real-world" Datenstrukturen verwendet.

Ich würde es wagen, jede gemeinsame Sprache zu sagen hat eine vorgefertigte Umsetzung der verknüpften Liste, entweder als Sprache primitiv, nativen Vorlagenbibliothek (zB C ++), native Bibliothek (zB Java) oder eine 3rd-Party-Implementierung (wahrscheinlich Open Quelle).

Dass gesagt wird, mehrmals in der Vergangenheit habe ich eine verknüpfte Liste Implementierung von Grund auf selbst wenn Infrastruktur-Code für komplexe Datenstrukturen zu schaffen. Manchmal ist es eine gute Idee, die volle Kontrolle über die Umsetzung zu haben, und manchmal braucht man einen „Twist“ der klassischen Umsetzung hinzuzufügen, um es Ihren spezifischen Anforderungen gerecht zu werden. Es gibt kein richtig oder falsch, wenn es darum geht, ob eine eigene Implementierung zu codieren, solange Sie die Alternativen und Kompromisse zu verstehen. In den meisten Fällen, und sicherlich in sehr modernen Sprachen wie C # würde ich es vermeiden.

Ein weiterer Punkt ist, wenn Sie Listen im Vergleich Array / Vektoren oder Hash-Tabellen verwendet werden sollen. Aus Ihrer Frage verstehe ich Sie kennen die Kompromisse sind hier, damit ich nicht zu viel hinein gehen, aber im Grunde, wenn Ihre Hauptverwendung deutlich Listen von Ordnung, und die Liste Größe durchqueren kann variieren, eine Liste kann sein ein gangbarer Weg. Eine weitere Überlegung ist die Art der Einfügung. Wenn ein häufiger Anwendungsfall ist „in der Mitte Einfügen“, als Listen einen signifikanten Vorteil gegenüber Arrays / Vektoren haben. Ich kann weitermachen, aber diese Information ist in den klassischen CS Büchern:)

Zur Verdeutlichung:. Meine Antwort ist sprachunabhängig und bezieht sich nicht speziell auf Generics die mein Verständnis hat eine verknüpfte Liste Implementierung

Eine einfach verkettete Liste ist der einzige Weg, um eine effiziente Speicher unveränderliche Liste zu haben, die zusammengesetzt werden können, um „mutieren“ es. Schauen Sie, wie Erlang tut es. Es kann etwas langsamer als eine Array-backed Liste sein, aber es hat sehr nützliche Eigenschaften in multithreaded und rein funktionellen Implementierungen.

Ja, es reale Anwendung, die Liste verknüpft verwenden, muß ich manchmal eine große Anwendung aufrechtzuerhalten, die sehr haben von verknüpften Listen machen.

Und ja, sind verkettete Listen in fast jede Klassenbibliothek von C ++ / STL enthält .net.

Und ich wünschte, es verwendet Arrays statt.

In der realen Welt verkettete Listen, weil Dinge wie Paging und CPU-Cache-Größe SLOW sind (verkettete Listen Sie neigen dazu, Daten zu verbreiten und das macht es wahrscheinlicher, dass Sie Daten aus verschiedenen Bereichen der Speicher zugreifen müssen, und das ist viel langsamer auf den heutigen Computern als Arrays verwenden, die in einer Sequenz, alle Daten zu speichern).

Google "Referenzlokalität" für weitere Informationen.

Nie handgemachte Listen mit Ausnahme von Hausaufgaben an der Universität verwendet.

Verbrauch Je eine verkettete Liste könnte die beste Option sein. Löscht von der Vorderseite der Liste ist viel schneller mit einer verketteten Liste als eine Array-Liste.

In einem Java-Programm, das ich behaupte Profilierung zeigte, dass ich die Leistung steigern konnte, indem von einem Arraylist zu einer LinkedList für eine Liste zu bewegen, die am Anfang viele Löschungen hatten.

Ich habe Linie von Business-Anwendungen entwickelt (.NET) seit Jahren und ich kann nur von einer Instanz denken, wo ich verknüpfte Liste verwendet habe, und selbst dann habe ich nicht das Objekt erstellen muß.

Das ist meine Erfahrung gerade gewesen.

würde ich sagen, dass es auf der Nutzung abhängt, in einigen Fällen sind sie schneller als typischer Random Access Container.

Auch ich denke, dass sie von einigen Bibliotheken als zugrunde liegende Auflistung Typ verwendet werden, so was wie eine nicht-verkettete Liste aussehen kann tatsächlich ein unter sein könnte.

In einer C / C ++ Anwendung, die ich bei meinem letzten Unternehmen entwickelt verwendeten wir doppelt Listen die ganze Zeit verbunden. Sie waren wichtig, was wir taten, was war in Echtzeit 3D-Grafiken.

Ja, alle Arten von Daten-Strukturen sind sehr nützlich, in der täglichen Software-Entwicklung. In den meisten Sprachen, die ich kenne (C / C ++ / Python / Objective-C) gibt Frameworks ist, die diese Datenstrukturen implementieren, so dass Sie das Rad nicht neu erfinden.

Und ja, Datenstrukturen für Wissenschaftler nicht nur, sie sind sehr nützlich und Sie wäre ohne sie nicht in der Lage sein, Software zu schreiben (hängt davon ab, was Sie tun).

Sie verwenden, um Daten-Strukturen in Nachrichtenwarteschlangen, Datenkarten, Hash-Tabellen, in dem Datum bestellt, ein schneller Zugriff / Entfernen / Einfügen und so weiter abhängen, was getan werden muss.

Ja, das tue ich. Es hängt alles von der Situation ab. Wenn ich nicht viele Daten in ihnen, oder wenn die spezifische Anwendung benötigt eine FIFO-Struktur speichert wird, werde ich sie ohne einen zweiten Gedanken verwenden, weil sie schnell zu implementieren sind.

Bei Anwendungen für andere Entwickler Ich weiß, es gibt Zeiten, dass eine verknüpfte Liste perfekt, außer dass eine schlechte Gegend passen würde viel Cache-Misses verursacht.

Ich kann nicht viele Programme vorstellen, die mit Listen nicht beschäftigen. Die Minute, die Sie brauchen, um mit mehr als 1, was von etwas, Listen in allen Formen und Formen beschäftigen wird benötigt, da Sie irgendwo müssen diese Dinge zu speichern. Diese Liste könnte eine einzeln / doppelt verknüpften Liste, ein Array, ein Satz, eine Hash-Tabelle, wenn Sie Ihre Sachen Index basieren auf einem Schlüssel benötigen, eine Prioritätswarteschlange, wenn Sie sie brauchen usw. zu sortieren.

Normalerweise würden Sie diese Listen in einem Datenbanksystem gespeichert werden, aber irgendwo müssen Sie sie von der DB holen, speichern Sie sie in Ihrer Anwendung und manipulieren sie, auch wenn es so einfach ist, eine kleine Liste der Dinge holen Sie bevölkern in eine Dropdown-Combobox.

In diesen Tagen, in Sprachen wie C #, Python, Java und viele mehr, sind Sie in der Regel weg abstrahiert aus mit Ihren eigenen Listen zu implementieren. Diese Sprachen sind mit vielen Abstraktionen von Containern können Sie speichern Sachen in. Entweder über Standardbibliotheken oder in die Sprache integriert.

Sie sind immer noch im Vorteil, diese Themen zu lernen, zum Beispiel wenn Sie mit C # arbeiten würden Sie wissen wollen, wie ein Arraylist funktioniert und wheter würden Sie wählen Arraylist oder etwas anderes je nach Bedarf hinzufügen / Insert / search / random Index eine solche Liste.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top