CS- Woche 5

Apr 03, 2025 pm 11:06 PM
c语言 键值对 typedef

Detaillierte Erläuterung der Datenstruktur: vom Array zum Baum und dann zur Hash -Tabelle

In diesem Artikel werden mehrere gemeinsame Datenstrukturen erörtert, darunter Arrays, verknüpfte Listen, binäre Suchbäume (BSTs) und Hash -Tabellen und erklärt ihre Organisation im Gedächtnis sowie deren Vor- und Nachteile.

Informationsstruktur und abstrakte Datenstruktur

Informationsstruktur bezieht sich auf die Art und Weise, wie Informationen im Gedächtnis organisiert werden, während abstrakte Datenstrukturen unser konzeptionelles Verständnis dieser Strukturen sind. Das Verständnis abstrakter Datenstrukturen hilft uns, verschiedene Datenstrukturen in der Praxis besser zu implementieren.


Stapel und Warteschlange

Warteschlangen sind eine abstrakte Datenstruktur, die dem FIFO -Prinzip (zuerst in, zuerst) folgt, ähnlich wie das Warten in der Linie. Zu den Hauptvorgängen gehören Enqueinging (Hinzufügen von Elementen zum Schwanz der Warteschlange) und Dequeuing (Entfernen der Kopfelemente der Warteschlange).

Der Stapel folgt dem LIFO -Prinzip (zuletzt in erster Out), genau wie das Stapeln eines Telleres. Zu den Vorgängen gehören das Schieben (Hinzufügen von Elementen an die Spitze des Stapels) und das Knallen (Topelemente des Stapels).


Array

Ein Array ist eine Struktur, die Daten kontinuierlich im Speicher speichert. Wie in der folgenden Abbildung gezeigt, belegen Arrays einen kontinuierlichen Speicherplatz im Speicher.

CS- Woche 5

Andere Programme, Funktionen und Variablen können im Speicher sowie redundante Daten vorhanden sein, die zuvor verwendet wurden. Wenn Sie dem Array neue Elemente hinzufügen müssen, müssen Sie den Speicher neu zuweisen und das gesamte Array kopieren, was ineffizient sein kann.

CS- Woche 5CS- Woche 5CS- Woche 5

Obwohl zu viel Speicher vorab, kann es den Kopiervorgang reduzieren, aber es wird Systemressourcen ab verschwenden. Daher ist es wichtig, Gedächtnis gemäß den tatsächlichen Bedürfnissen zuzuweisen.


Linkliste

Verbindete Listen sind leistungsstarke Datenstrukturen, die die Verkettung von Werten in verschiedenen Speicherregionen in eine Liste ermöglichen und die dynamische Expansion oder Reduzierung unterstützen.

CS- Woche 5

Jeder CS- Woche 5 enthält zwei Werte: den Datenwert und ein Zeiger auf den nächsten CS- Woche 5. Der Zeigerwert des letzten CS- Woche 5s ist null, was das Ende der verknüpften Liste angibt.

CS- Woche 5CS- Woche 5

In der C -Sprache können CS- Woche 5 wie folgt definiert werden:

 <code class="c">typedef struct node { int number; struct node *next; } node;</code>
Nach dem Login kopieren

Das folgende Beispiel zeigt den Prozess des Erstellens einer verknüpften Liste:

CS- Woche 5CS- Woche 5CS- Woche 5CS- Woche 5CS- Woche 5CS- Woche 5CS- Woche 5CS- Woche 5

Zu den Nachteilen verknüpfter Listen gehören die Notwendigkeit zusätzlicher Speicherspeicherzeiger und die Unfähigkeit, über Indexe direkt auf Elemente zuzugreifen.


Binärer Suchbaum (BST)

Ein binärer Suchbaum ist eine Baumstruktur, die Daten effizient speichert, durchsucht und abruft.

CS- Woche 5CS- Woche 5CS- Woche 5

Die Vorteile von BST sind dynamisch und die Suchseffizienz (O (log n)), und der Nachteil besteht darin, dass die Suchffizienz auf o (n) fällt, wenn der Baum nicht ausbalanciert ist und zusätzliche Speicherspeicherzeiger erfordert.


Hash -Tisch

Eine Hash-Tabelle ähnelt einem Wörterbuch und enthält Schlüsselwertpaare. Es verwendet eine Hash -Funktion, um Tasten an Array -Indizes zu kartieren und so die durchschnittliche Suchzeit von O (1) zu erreichen.

CS- Woche 5

Hash -Konflikte (mehrere Schlüssel, die demselben Index zugeordnet sind) können durch verknüpfte Listen oder andere Methoden gelöst werden. Das Design von Hash -Funktionen ist entscheidend für die Leistung von Hash -Tabellen. Ein Beispiel für eine einfache Hash -Funktion ist wie folgt:

 <code class="c">#include <ctype.h> unsigned int hash(const char *word) { return toupper(word[0]) - 'A'; }</ctype.h></code>
Nach dem Login kopieren

Dieser Artikel wird basierend auf CS50X 2024 Quellcode zusammengestellt.

Das obige ist der detaillierte Inhalt vonCS- Woche 5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie ist die Methode, um Vue.js -Zeichenfolgen in Objekte umzuwandeln? Wie ist die Methode, um Vue.js -Zeichenfolgen in Objekte umzuwandeln? Apr 07, 2025 pm 09:18 PM

Die Verwendung von JSON.Parse () String to Object ist am sichersten und effizientesten: Stellen Sie sicher, dass die Zeichenfolgen den JSON -Spezifikationen entsprechen, und vermeiden Sie häufige Fehler. Verwenden Sie Try ... Fang, um Ausnahmen zu bewältigen, um die Code -Robustheit zu verbessern. Vermeiden Sie die Verwendung der Methode EVAL (), die Sicherheitsrisiken aufweist. Für riesige JSON -Saiten kann die Analyse oder eine asynchrone Parsen in Betracht gezogen werden, um die Leistung zu optimieren.

C Sprachdatenstruktur: Datenrepräsentation und Betrieb von Bäumen und Grafiken C Sprachdatenstruktur: Datenrepräsentation und Betrieb von Bäumen und Grafiken Apr 04, 2025 am 11:18 AM

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 hinter dem Problem der C -Sprachdatei Die Wahrheit hinter dem Problem der C -Sprachdatei Apr 04, 2025 am 11:24 AM

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 unterscheidet ich zwischen dem Schließen eines Browser -Registerkartens und dem Schließen des gesamten Browsers mit JavaScript? Wie unterscheidet ich zwischen dem Schließen eines Browser -Registerkartens und dem Schließen des gesamten Browsers mit JavaScript? Apr 04, 2025 pm 10:21 PM

Wie unterscheidet ich zwischen den Registerkarten und dem Schließen des gesamten Browsers mit JavaScript in Ihrem Browser? Während der täglichen Verwendung des Browsers können Benutzer ...

Wie Debian Readdir sich in andere Tools integriert Wie Debian Readdir sich in andere Tools integriert Apr 13, 2025 am 09:42 AM

Die Readdir -Funktion im Debian -System ist ein Systemaufruf, der zum Lesen des Verzeichnisgehalts verwendet wird und häufig in der C -Programmierung verwendet wird. In diesem Artikel wird erläutert, wie Readdir in andere Tools integriert wird, um seine Funktionalität zu verbessern. Methode 1: Kombinieren Sie C -Sprachprogramm und Pipeline zuerst ein C -Programm, um die Funktion der Readdir aufzurufen und das Ergebnis auszugeben:#include#include#includeIntmain (intargc, char*argv []) {Dir*Dir; structDirent*Eintrag; if (argc! = 2) {{

Hadidb: Eine leichte, horizontal skalierbare Datenbank in Python Hadidb: Eine leichte, horizontal skalierbare Datenbank in Python Apr 08, 2025 pm 06:12 PM

Hadidb: Eine leichte, hochrangige skalierbare Python-Datenbank Hadidb (HadIDB) ist eine leichte Datenbank in Python mit einem hohen Maß an Skalierbarkeit. Installieren Sie HadIDB mithilfe der PIP -Installation: PipinstallHadIDB -Benutzerverwaltung erstellen Benutzer: createUser (), um einen neuen Benutzer zu erstellen. Die Authentication () -Methode authentifiziert die Identität des Benutzers. fromHadidb.operationImportUseruser_obj = user ("admin", "admin") user_obj.

Ist die von Vue Axios angeforderte URL korrekt? Ist die von Vue Axios angeforderte URL korrekt? Apr 07, 2025 pm 10:12 PM

Ja, die von Vue Axios angeforderte URL muss korrekt sein, damit die Anfrage erfolgreich sein kann. Das Format von URL lautet: Protokoll, Hostname, Ressourcenpfad, optionale Abfragezeichenfolge. Zu den häufigen Fehlern gehören fehlende Protokolle, Rechtschreibfehler, doppelte Schrägstriche, fehlende Portnummern und ein falsches Abfrage -String -Format. So überprüfen Sie die Richtigkeit der URL: Geben Sie manuell in die Browseradressleiste ein, verwenden Sie das Online -Verifizierungstool oder verwenden Sie die Option validatestatus von Vue Axios in der Anforderung.

So verwenden Sie den Befehl Redis So verwenden Sie den Befehl Redis Apr 10, 2025 pm 08:45 PM

Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err).

See all articles