Menu
Coddy logo textTech
Lernpfad

Algorithmen und Datenstrukturen in Rust

Die Standardbibliothek von Rust hat die meisten Strukturen (Vec, VecDeque, HashMap, BTreeMap, BinaryHeap), und der Borrow Checker redet bei denen mit, die du selbst schreibst: Eine einfach verkettete Liste ist Option<Box<Node>>, und ein Baum mit Elternverweisen braucht Rc, RefCell und Weak. Auf diesem Pfad baust du jede Struktur in Rust, sortierst dann damit, arbeitest rekursiv, durchsuchst Graphen und schließt mit bewerteten Interviewaufgaben ab. Kostenlos, im Browser, mit einem Zertifikat in den meisten Kursen.

377 Lektionen228 Aufgaben702 Quizfragen

DSA in Rust, Schritt für Schritt

38 Kurse377 Lektionen228 Aufgaben702 Quizfragen

Jeder Schritt besteht aus bestehenden Coddy-Kursen, und jeder Klick auf „Starten“ öffnet sie in Rust. Die drei Kurse, die es noch nicht in Rust gibt, sind nach den Schritten aufgeführt.

  1. 1
    Diesen Schritt startenStartenStack, Queue, Binärbaum, Hashtabelle und verkettete Liste, jeweils in Rust von Grund auf gebaut und danach zum Lösen von Aufgaben genutzt. In Rust ist ein Knoten, der den nächsten besitzt, eine Option<Box<Node>>, deshalb beginnt sich Ownership hier natürlich anzufühlen, und danach weißt du, was Vec, VecDeque und HashMap für dich erledigen.Starten
  2. 2
    Diesen Schritt startenStartenDoppelt verkettete Liste, Heaps und Prioritätswarteschlangen, Tries, Graphen und der selbstbalancierende AVL-Baum. Die doppelt verkettete Liste ist in Rust die schwierige, weil zu jedem Knoten zwei Verweise führen; nach diesem Schritt ist BinaryHeap ein Heap, den du selbst geschrieben hast, standardmäßig mit dem größten Element zuerst, und BTreeMap ein geordneter Baum, den du verstehst.Starten
  3. 3
    Diesen Schritt startenStartenBubble-, Selection-, Insertion-, Merge-, Quick-, Heap-, Counting- und Radixsort, in Rust geschrieben und im Visualizer beobachtet. sort ist stabil und sort_unstable meist schneller; nach diesem Schritt kannst du sagen, was Stabilität kostet und wann du auf sie verzichtest.Starten
  4. 4
    Diesen Schritt startenStartenRekursionsaufgaben in Rust. Ein rekursiver Typ braucht eine Box, bevor der Compiler ihm eine Größe gibt, und eine rekursive Funktion darüber prüft per Pattern Matching jeden Fall, Some oder None, so wie sich Basisfall und rekursiver Fall trennen. Rust garantiert keine Tail-Call-Optimierung, deshalb führt eine ausreichend tiefe Rekursion zu einem Stacküberlauf, der das Programm abbricht. Dynamische Programmierung und Bitmanipulation sind nach den Schritten aufgeführt, da sie in Python und C++ unterrichtet werden.StartenEigene Seite
  5. 5
    Diesen Schritt startenStartenBreiten- und Tiefensuche, Dijkstra, Bellman-Ford, topologische Sortierung, Kruskal und Prim in Rust, auf dem Graphen, den du in Schritt zwei gebaut hast. Die Prioritätswarteschlange für Dijkstra ist in Rust ein BinaryHeap aus Reverse((distance, node)): der Heap aus Schritt zwei, zum Min-Heap umgedreht.Starten
  6. 6
Das bekommst du
Alles, was du zum Programmierenlernen nutzt

Learn by Doing

Write real code, query databases, build websites, and master AI prompts. Our interactive lessons cover every skill modern developers need.

playground.js
Code Editor
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Input
"Alex"
Output
"Hello, Coddy! Alex"

Build Your Coding Streak

Stay consistent and watch your progress grow! Track your daily coding habit, protect your streak with freeze days, and earn rewards for showing up every day.

12 days streak

Return tomorrow to keep your streak!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

Double or Nothing

Day 5 of 7

fire Freeze icon

Streak Freeze

2 left

Code Anywhere, Anytime

Take your coding journey on the go! No setup, no downloads - just open and start coding. Available on iOS, Android and Web with 4.9 star ratings.

Python
7Streak
250Score
5Energy
Variables
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
CONTINUE
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Journey
Goals
Leaderboard
Profile
4.9
StarStarStarStarStar
Rating

You're Not Alone in This

Compete on global leaderboards, invite friends to earn rewards, and celebrate each other's wins. Coding is better with friends!

Challenger League
Challenger LeagueTop 7 advance
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconPromotion zoneleaderboard Arrow Up icon

Every way to learn

Read, listen, test yourself, ask the AI, or look up anything you've already covered. Every lesson meets you where you are.

Intro to Variables
Audio

A variable is a named container that stores a value you can reference later in your program.

In Python, you create one by writing the name, an equals sign, then the value you want to store.

The value can change over time - reassigning the name simply points it to a new value.

1xSarah

Prove Your Skills

Earn certificates for every course you complete. Add them to your LinkedIn profile and resume to showcase your coding expertise to employers.

CoddyCertificate of Completion
This certifies thatJohn Doehas successfully completed
python iconPython Fundamentals
Verified
DateJan 2026
LinkedInAdd to LinkedIn

Warum DSA in Rust mit Coddy lernen

  • Ownership dort, wo es am schwersten ist. Bei verketteten Listen und Bäumen beißen Rusts Regeln zuerst zu: Jeder Wert hat genau einen Besitzer, und diese Strukturen wollen Knoten, die aufeinander zeigen. Beim Schreiben werden Box, Option::take, Rc<RefCell<T>> und Weak von Syntax zu Entscheidungen, weshalb ein bekannter Leitfaden zur Sprache Learning Rust With Entirely Too Many Linked Lists heißt.
  • Collections mit klaren Kosten. Vec<T> ist dein Stack, VecDeque<T> ein Ringpuffer und deine Queue, HashMap eine Hashtabelle, die mit zufälligem Seed gegen absichtliche Kollisionen geschützt ist, BTreeMap ein geordneter B-Baum und BinaryHeap<T> ein Max-Heap. Baue die Strukturen einmal selbst, und du weißt, welche ein Problem verlangt und warum Dijkstra seine Einträge in Reverse verpackt.
  • Fast der ganze Pfad in Rust. Jede Datenstruktur, jedes Sortierverfahren, jeder Graphalgorithmus, jede Rekursionsaufgabe und jedes Interviewpaket wird in Rust unterrichtet. Drei werden in einer anderen Sprache unterrichtet und sind nach den Schritten aufgeführt, jeweils mit einem Link: dynamische Programmierung und die Python-Interviewreihe in Python sowie Bitmanipulation in C++. Bitmanipulation lässt sich mit einem einzigen Unterschied in der Schreibweise übertragen: Rust schreibt NOT als !x und zählt gesetzte Bits mit count_ones().
  • Bewertet wie im Interview. Jede Lektion endet mit einer Rust-Aufgabe, die per Testfällen geprüft wird, und schlägt sie fehl oder kompiliert nicht, liest Bugsy deinen Code und führt dich zur Lösung, ohne sie zu verraten. Ein kostenloses Zertifikat in den meisten Kursen, jedes unter seiner eigenen URL verifizierbar.

Häufige Fragen zu DSA in Rust

Eignet sich Rust für Datenstrukturen und Algorithmen?

Zum Benutzen sehr gut: Die Standard-Collections sind schnell und gut dokumentiert, sort ist stabil, und sicheres Rust schließt hängende Zeiger und Data Races schon zur Kompilierzeit aus, ohne Garbage Collector. Zum Schreiben zeigerbasierter Strukturen ist es schwerer als C oder Java, denn Ownership verbietet geteilte, veränderliche Verweise, solange du nicht bewusst zu Rc und RefCell greifst, und eine doppelt verkettete Liste oder ein Baum mit Elternzeigern besteht genau daraus. Diese Schwierigkeit ist zugleich die Lektion: Sobald du sie in Rust schreiben kannst, weißt du genau, wem was gehört.

Welche Rust-Collections entsprechen welchen Datenstrukturen?

Vec<T> ist ein dynamisches Array und dein Stack, VecDeque<T> ist ein Ringpuffer und deine Queue, HashMap und HashSet sind Hashtabellen (standardmäßig mit SipHash, das absichtlichen Kollisionen standhält, auf Kosten von etwas Geschwindigkeit), BTreeMap und BTreeSet sind geordnete B-Bäume, BinaryHeap<T> ist ein Max-Heap, und LinkedList<T> ist eine doppelt verkettete Liste, die du einem Vec oder einer VecDeque selten vorziehen wirst. Einen Trie- oder Graph-Typ gibt es nicht; die baust du selbst.

Warum ist eine verkettete Liste in Rust so schwer zu schreiben?

Weil jeder Wert genau einen Besitzer hat. Eine einfach verkettete Liste passt zu dieser Regel: Jeder Knoten besitzt den nächsten über Option<Box<Node>>. Eine doppelt verkettete Liste oder ein Baum mit Elternverweisen passt nicht, weil zu jedem Knoten zwei Zeiger führen, also greifst du zu Rc<RefCell<Node>> mit Weak für die Rückverweise oder hältst die Knoten in einem Vec und verknüpfst sie über Indizes. Learning Rust With Entirely Too Many Linked Lists gibt es, weil so viele genau hier hängen bleiben.

Wie bekomme ich in Rust einen Min-Heap?

BinaryHeap<T> ist ein Max-Heap, also verpackst du jedes Element in std::cmp::Reverse: Füge Reverse(x) ein, und das kleinste x kommt zuerst heraus. Für Dijkstra fügst du Reverse((distance, node)) ein, und das Tupel wird zuerst nach der Distanz verglichen. Wenn du in Schritt zwei selbst einen Heap geschrieben hast, ist das Umdrehen seiner Reihenfolge offensichtlich.

Welche Kurse auf diesem Pfad werden nicht in Rust unterrichtet?

Drei: Dynamische Programmierung und die Python-Interviewreihe werden in Python unterrichtet, Bitmanipulation in C++. Sie sind nach den Schritten aufgeführt, jeweils mit einem Link, der den Kurs in seiner eigenen Sprache öffnet. Eine Memo-Tabelle ist in Rust ein Vec oder eine HashMap, und ein Ganzzahlüberlauf löst im Debug-Build eine Panic aus, deshalb macht ein Bit-Trick, der auf Wrapping setzt, das mit wrapping_add oder wrapping_mul explizit.

Muss ich Rust können, bevor ich mit diesem Pfad anfange?

Mindestens Ownership, Borrowing, Structs, Enums und Option; Box und Traits helfen. Wenn das neu für dich ist, bringt dich Coddys Rust-Kurs zuerst dorthin, kostenlos, und dieser Pfad setzt dort an, wo er endet.

Weitere Lernpfade

Dieselben Kurse, für eine andere Rolle geordnet. Der Fortschritt bleibt erhalten: Ein auf einem Pfad abgeschlossener Kurs zählt auf jedem Pfad, der ihn enthält.

Alle Lernpfade
Coddy programming languages illustration

Starte den Datenstrukturen & Algorithmen-Pfad kostenlos

Jetzt lernen