


Was ist die Datenstruktur in C-Sprache? Was sind die gängigen Datenstrukturen?
In der C-Sprache bezieht sich die Datenstruktur auf eine Sammlung von Datenelementen, die eine oder mehrere spezifische Beziehungen zueinander haben. Dabei handelt es sich um die Art und Weise, wie Computer Daten speichern und organisieren: lineare Datenstrukturen (Arrays, verknüpfte Listen, Stapel, Warteschlange und lineare Liste), Baumstruktur (Binärbaum, vollständiger Binärbaum, binärer Suchbaum, Heap), Diagrammstruktur (gerichteter Graph und ungerichteter Graph).
Die Betriebsumgebung dieses Tutorials: Windows 7-System, c99-Version, Dell G3-Computer.
Was ist eine Datenstruktur?
Datenstruktur ist die Art und Weise, wie Computer Daten speichern und organisieren. Eine Datenstruktur bezieht sich auf eine Sammlung von Datenelementen, die eine oder mehrere spezifische Beziehungen zueinander haben. Die Implementierung der meisten Datenstrukturen erfordert die Hilfe von Zeigern und Strukturtypen in der C-Sprache. Kommen wir nun zum heutigen FokusO ( ∩_∩)O Mehrere gängige Datenstrukturen
(1) Lineare Datenstruktur: Es gibt im Allgemeinen eine Eins-zu-Eins-Beziehung zwischen Elementen. Typische Datenstrukturen sind: Array, Stack, Warteschlange und lineare Liste
(2) Baumstruktur: Zwischen Knoten besteht eine hierarchische Beziehung. Ein Knoten in jeder Ebene kann und kann nur mit einem Knoten in der vorherigen Ebene verknüpft sein, er kann jedoch auch mit der nächsten Ebene verknüpft sein. Mehrere Knoten sind verknüpft, was als „Eins-zu-viele“-Beziehung bezeichnet wird: Baum, Heap
(3) Grafische Struktur: In der Diagrammstruktur dürfen mehrere Knoten verknüpft sein, was als „viele“ bezeichnet wird -zu-viele“-Beziehung. „Viele“-Beziehung
Das Folgende ist eine kurze Einführung in jede dieser Datenstrukturen:
1. Lineare Datenstrukturen: Typische sind: Arrays, Stapel, Warteschlangen und lineare Tabellen
(1) Arrays und verknüpfte Liste
a Array: Speichert einen Satz von Daten desselben Typs. Die Länge des Arrays muss im Voraus angegeben werden, z. B. ein eindimensionales Array oder ein zweidimensionales Array , mehrdimensionales Array usw. b Verknüpfte Liste ist eine weit verbreitete Methode in der C-Sprache. Die Struktur wird in Form von dynamisch zugewiesenem Speicher implementiert. Eine Reihe beliebiger Speichereinheiten wird zum Speichern einer verknüpften Liste verwendet von Datenelementen. Im Allgemeinen wird für jedes Element ein Zeigerfeld hinzugefügt, um auf nachfolgende Elemente zu verweisen.
c Der Unterschied zwischen Arrays und verknüpften Listen:
Aus Sicht der logischen Struktur: Das Array muss eine im Voraus definierte feste Länge haben und kann sich nicht an die dynamische Zunahme und Abnahme von Daten anpassen; die verknüpfte Liste führt die Speicherzuweisung dynamisch durch und kann sich an die dynamische Zunahme und Abnahme von Daten anpassen und Datenelemente problemlos einfügen und löschen (beim Einfügen oder Löschen von Datenelementen im Array). , andere Datenelemente müssen verschoben werden)
Aus der Perspektive der Speicherspeicherung: (statische) Arrays weisen Speicherplatz vom Stapel zu (erstellt mit NEW im Heap), was für Programmierer bequem und schnell ist, aber der Freiheitsgrad ist klein; die verknüpfte Liste reserviert Platz vom Heap und der Freiheitsgrad ist groß, aber die Anwendungsverwaltung ist problematischer
Von der Zugriffsmethode: Das Array wird kontinuierlich im Speicher gespeichert, sodass der Indexindex verwendet werden kann Direkter Zugriff; die verknüpfte Liste ist Beim Zugriff auf Elemente kann auf die verkettete Speicherstruktur nur sequentiell von vorne nach hinten zugegriffen werden, sodass die Zugriffseffizienz geringer ist als die von Arrays
(2) Stapel, Warteschlange und lineare Tabelle : Sequentielle Speicherung und Verkettung können verwendet werden. Speichermethode für die Speicherung.Sequentielle Speicherung: Verwenden Sie die relative Position von Datenelementen im Speicherplatz, um die logische Beziehung zwischen Elementen auszudrücken. Kettenspeicher: Verwenden Sie Zeiger, die die Speicheradressen von Datenelementen darstellen um die logische Beziehung zwischen Elementen auszudrücken
a. Stapeloperationen sind nur am Ende der Sequenz zulässig. Im Allgemeinen wird der Stapel auch als Last-in-First bezeichnet -out oder First-in-last-out-lineare Struktur: Es wird eine sequentielle Speicherstruktur verwendet, das heißt, es wird ein Platz mit fortlaufenden Adressen benötigt, um die Elemente des Stapels zu speichern . Der Typ des sequentiellen Stapels ist wie folgt definiert:
Kettenstapel: Ein Stapel, der eine Kettenspeicherstruktur verwendet, wird als Kettenstapel bezeichnet:
c. Bedienung an jeder Position in der Sequenz. Die Bedienung der linearen Tabelle ist auch sehr flexibel B. Elemente an beliebiger Stelle abfragen und ändern
Sequentielle Tabelle: Eine durch eine sequentielle Speicherstruktur dargestellte lineare Tabelle wird als sequentielle Tabelle bezeichnet. Ein Satz von Speichereinheiten mit aufeinanderfolgenden Adressen wird verwendet, um die Datenelemente der linearen Tabelle gleichzeitig zu speichern, dh die benachbarten Speicherorte Die Lücke zwischen zwei Elementen in sequentieller Reihenfolge. Um das Verschieben von Elementen zu vermeiden, wird in der Schnittstellendefinition der Sequenztabelle im Allgemeinen nur das Einfügen und Löschen von Elementen berücksichtigt Methode kann auch als Stapeltabelle bezeichnet werden:
Lineare Tabelle: umfasst im Allgemeinen einfach verknüpfte Liste, doppelt verknüpfte Liste, zirkulär verknüpfte Liste und bidirektional verknüpfte Liste.
Einfach verknüpfte Liste:
Doppelt verknüpft Liste:
Lineare Tabelle Vergleich zweier Speicherstrukturen:
Sequentielle Tabelle:
Vorteile: In der Tabelle sind zwei benachbarte Elemente in der Logik auch an physischen Positionen benachbart, was die Suche erleichtert Die Komplexität des Zugriffs auf ein Element beträgt O(1)
Nachteile: Nicht zum Einfügen oder Löschen an einer beliebigen Position geeignet. Da das Element verschoben werden muss, beträgt die durchschnittliche Zeitkomplexität O(n)
Verknüpfte Liste:
Vorteile : Um ein Element an einer beliebigen Position des Links einzufügen oder zu löschen, müssen Sie nur den entsprechenden Zeiger ändern und das Element nicht bei Bedarf dynamisch verschieben. Es ist nicht erforderlich, einen kontinuierlichen Leerraum entsprechend vorab zuzuweisen die maximale Nachfrage
Nachteile: Um ein Element zu finden, müssen Sie vom Kopfzeiger aus entlang des Zeigerfelds suchen, daher beträgt die durchschnittliche Zeitkomplexität O(n)
2. Baumstruktur: Knoten Dort Es besteht eine hierarchische Beziehung zwischen ihnen. Ein Knoten in jeder Ebene kann nur mit einem Knoten in der vorherigen Ebene verknüpft sein, er kann jedoch auch mit mehreren Knoten in der nächsten Ebene verknüpft sein. Dies wird als „Eins-zu-viele“ bezeichnet " Beziehung. Sie kommt häufig vor. Zu den Typen gehören: Baum, Heap
(1) Binärbaum: Binärbaum ist eine rekursive Datenstruktur, bei der es sich um eine endliche Menge mit n (n>=0) Knoten handelt. Binärbaum weist die folgenden Eigenschaften auf :
Der Binärbaum kann ein leerer Baum sein. Jeder Knoten eines Binärbaums hat genau zwei Teilbäume, von denen einer oder beide leer sein können. Wenn die Positionen der beiden geändert werden, werden sie zum anderen. Ein Binärbaum
(2) Vollständiger Binärbaum: Nummerieren Sie jeden Knoten des vollständigen Binärbaums fortlaufend von oben nach unten und von links nach rechts 1 bis n, wenn jeder Knoten mit der Tiefe von k zusammenhängt. Die von 1 bis n nummerierten Knoten im vollständigen Binärbaum entsprechen eins zu eins, was als vollständiger Binärbaum bezeichnet wird
a Es wird eine sequentielle Speicherstruktur übernommen: a Ein eindimensionales Array wird zum Speichern des vollständigen Binärbaums verwendet, und die Nummer des Knotens hängt mit dem Index des Knotens zusammen (z. B. Die Wurzel ist 1, dann ist das linke Kind der Wurzel 2i = 21 = 2 usw.) das rechte Kind ist 2i+1=21+1=2)
b, unter Verwendung einer Kettenspeicherstruktur:
Binär verknüpfte Liste:
Ternär verknüpfte Liste: Sein Knoten hat ein weiteres übergeordnetes Zeigerfeld als eine binär verknüpfte Liste, die verwendet wird, um die übergeordneten Knoten auszuführen und die Suche nach übergeordneten Knoten zu erleichtern
Vergleich zweier Speicherstrukturen: Für einen vollständigen Binärbaum wird die Reihenfolge verwendet Sparen Sie Platz, verwenden Sie aber auch den Indexwert des Array-Elements, um die Position des Knotens im Binärbaum und die Beziehung zwischen den Knoten zu bestimmen. Die Verwendung einer sequentiellen Speicherstruktur zum Speichern allgemeiner Binärbäume kann jedoch leicht zu Platzverschwendung führen . Die Kettenstruktur kann dieses Problem überwinden
(3) Binärer Suchbaum: Der binäre Suchbaum, auch binärer Sortierbaum genannt, ist entweder ein leerer Binärbaum oder ein Binärbaum mit den folgenden Merkmalen:
a. Wenn sein linker Teilbaum nicht leer ist, sind die Werte aller Knoten im linken Teilbaum kleiner als der Wert des Wurzelknotens
b. Wenn sein rechter Teilbaum nicht leer ist, dann sind die Werte aller Knoten auf Der rechte Teilbaum ist größer als der Wert des Wurzelknotens. Ein ausgeglichener Binärbaum ist entweder ein leerer Baum oder eine binäre Suche mit den folgenden Eigenschaften: Baum: Sein linker und rechter Teilbaum sind beide ausgeglichene Binärbäume, und der absolute Wert des Höhenunterschieds zwischen dem linken Teilbaum und dem rechten Teilbaum gilt nicht 1 überschreiten
Das Ungleichgewicht und die Anpassung eines ausgeglichenen Binärbaums können wie folgt zusammengefasst werden: Vier Situationen: LL-Typ, RR-Typ, LR-Typ, RL-Typ (5) Baum: Ein Baum ist eine endliche Menge mit n (n>=0) Knoten: a. Und es gibt nur einen bestimmten Knoten namens Wurzel
b. Wenn n>1, können die verbleibenden Knoten in m (m>0) unterteilt werden. gegenseitig disjunkte endliche Mengen T1, T2,...,Tm, wobei jede Menge selbst ein Baum ist und T1, T2,...,Tm Teilbäume der Wurzel genannt werden
(6) Heap: Ein Heap ist ein vollständiger Binärbaum mit den folgenden Eigenschaften. Alle seine Nicht-Blattknoten sind nicht größer (oder nicht kleiner) als seine linken und rechten untergeordneten Knoten. Wenn alle Nicht-Blattknoten im Heap nicht größer sind als ihre linken und rechten untergeordneten Knoten, spricht man von einem kleinen oberen Heap (kleiner Wurzel-Heap). Wenn alle Nicht-Blattknoten im Heap nicht kleiner sind als ihre linken und rechten Untergeordnete Knoten werden als großer Heap (großer Root-Heap) bezeichnet ={S1, S2, S3,…,Sn }
(8) B-Baum
3 Grafische Struktur: In der grafischen Struktur ist eine Korrelation zwischen mehreren Knoten zulässig, was als „many-to-many“ bezeichnet wird „Beziehung, die in gerichtete Graphen und ungerichtete Graphen unterteilt werden kann
Tutorial-Empfehlung: „C-Sprach-Tutorial-Video“
Das obige ist der detaillierte Inhalt vonWas ist die Datenstruktur in C-Sprache? Was sind die gängigen Datenstrukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



C Sprachdatenstruktur: Die Datenrepräsentation des Baumes und des Diagramms ist eine hierarchische Datenstruktur, die aus Knoten besteht. Jeder Knoten enthält ein Datenelement und einen Zeiger auf seine untergeordneten Knoten. Der binäre Baum ist eine besondere Art von Baum. Jeder Knoten hat höchstens zwei Kinderknoten. Die Daten repräsentieren structTreenode {intdata; structTreenode*links; structTreenode*rechts;}; Die Operation erstellt einen Baumtraversalbaum (Vorbereitung, in Ordnung und späterer Reihenfolge) Suchbauminsertion-Knoten Lösches Knotendiagramm ist eine Sammlung von Datenstrukturen, wobei Elemente Scheitelpunkte sind, und sie können durch Kanten mit richtigen oder ungerechten Daten miteinander verbunden werden, die Nachbarn darstellen.

Die Wahrheit über Probleme mit der Dateibetrieb: Dateiöffnung fehlgeschlagen: unzureichende Berechtigungen, falsche Pfade und Datei besetzt. Das Schreiben von Daten fehlgeschlagen: Der Puffer ist voll, die Datei ist nicht beschreibbar und der Speicherplatz ist nicht ausreichend. Andere FAQs: Langsame Dateitraversal, falsche Textdateicodierung und Binärdatei -Leser -Fehler.

Wie gibt ich einen Countdown in C aus? Antwort: Verwenden Sie Schleifenanweisungen. Schritte: 1. Definieren Sie die Variable N und speichern Sie die Countdown -Nummer in der Ausgabe. 2. Verwenden Sie die while -Schleife, um n kontinuierlich zu drucken, bis n weniger als 1 ist; 3. Drucken Sie im Schleifenkörper den Wert von n aus; 4. Am Ende der Schleife subtrahieren Sie N um 1, um den nächsten kleineren gegenseitigen gegenseitigen gegenseitigen gegenseitig auszugeben.

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.

Algorithmen sind die Anweisungen zur Lösung von Problemen, und ihre Ausführungsgeschwindigkeit und Speicherverwendung variieren. Bei der Programmierung basieren viele Algorithmen auf der Datensuche und Sortierung. In diesem Artikel werden mehrere Datenabruf- und Sortieralgorithmen eingeführt. Die lineare Suche geht davon aus, dass es ein Array gibt [20.500,10,5,100, 1,50] und die Nummer 50 ermitteln muss. Der lineare Suchalgorithmus prüft jedes Element im Array Eins nach eins nach dem anderen, bis der Zielwert gefunden oder das vollständige Array durchquert wird. Der Algorithmus-Flussdiagramm lautet wie folgt: Der Pseudo-Code für die lineare Suche lautet wie folgt: Überprüfen Sie jedes Element: Wenn der Zielwert gefunden wird: Return Return Falsch C-Sprache Implementierung: #includeIntmain (void) {i

Die Rückgabewerttypen von C -Sprachfunktion umfassen Int-, Float-, Doppel-, Zeichen-, Hohlraum- und Zeigertypen. INT wird verwendet, um Ganzzahlen zurückzugeben, zu schweben und doppelt zu doppelt sind, um Schwimmer zurückzugeben, und char gibt Zeichen zurück. Void bedeutet, dass die Funktion keinen Wert zurückgibt. Der Zeigertyp gibt die Speicheradresse zurück. Achten Sie darauf, Speicherverlust zu vermeiden. Eine Struktur oder ein Konsortium kann mehrere verwandte Daten zurückgeben.

C -Sprachfunktionen sind wiederverwendbare Codeblöcke, empfangen Parameter für die Verarbeitung und die Rückgabeergebnisse. Es ähnelt dem schweizerischen Armeemesser, mächtig und erfordert sorgfältige Verwendung. Funktionen umfassen Elemente wie das Definieren von Formaten, Parametern, Rückgabetwerten und Funktionskörpern. Die erweiterte Verwendung umfasst Funktionszeiger, rekursive Funktionen und Rückruffunktionen. Häufige Fehler sind Fehlanpassung vom Typ und Vergessen, Prototypen zu deklarieren. Zu den Debugging -Fähigkeiten gehören das Druckvariablen und die Verwendung eines Debuggers. Leistungsoptimierung verwendet Inline -Funktionen. Das Funktionsdesign sollte dem Prinzip der einzigen Verantwortung folgen. Kenntnisse in C -Sprachfunktionen können die Programmierungseffizienz und die Codequalität erheblich verbessern.

C -Sprachfunktionen sind wiederverwendbare Codeblöcke. Sie erhalten Input, führen Vorgänge und Rückgabergebnisse aus, die modular die Wiederverwendbarkeit verbessert und die Komplexität verringert. Der interne Mechanismus der Funktion umfasst Parameterübergabe-, Funktionsausführung und Rückgabeteile. Der gesamte Prozess beinhaltet eine Optimierung wie die Funktion inline. Eine gute Funktion wird nach dem Prinzip der einzigen Verantwortung, der geringen Anzahl von Parametern, den Benennungsspezifikationen und der Fehlerbehandlung geschrieben. Zeiger in Kombination mit Funktionen können leistungsstärkere Funktionen erzielen, z. B. die Änderung der externen Variablenwerte. Funktionszeiger übergeben Funktionen als Parameter oder speichern Adressen und werden verwendet, um dynamische Aufrufe zu Funktionen zu implementieren. Das Verständnis von Funktionsmerkmalen und Techniken ist der Schlüssel zum Schreiben effizienter, wartbarer und leicht verständlicher C -Programme.
