Menu
CoddyTech
Jalur belajar

Struktur Data dan Algoritma dengan Rust

Standard library Rust punya sebagian besar strukturnya (Vec, VecDeque, HashMap, BTreeMap, BinaryHeap), dan borrow checker punya pendapat sendiri tentang struktur yang kamu tulis sendiri: singly linked list adalah Option<Box<Node>>, dan tree dengan link ke parent butuh Rc, RefCell, dan Weak. Jalur ini memintamu membangun setiap struktur dalam Rust, lalu melakukan sorting, rekursi, dan penelusuran graf dengannya, dan menyelesaikan soal wawancara yang dinilai. Gratis, di browser, dengan sertifikat di sebagian besar kursus.

377 pelajaran284 tantangan702 soal kuis

DSA dengan Rust, langkah demi langkah

38 kursus377 pelajaran284 tantangan702 soal kuis

Setiap langkah adalah sekumpulan kursus Coddy yang sudah ada, dan setiap tombol Mulai membukanya dalam Rust. Tiga kursus yang belum diajarkan dalam Rust dicantumkan setelah langkah-langkahnya.

  1. 1
    Mulai langkah iniMulaiStack, queue, binary tree, hash table, dan linked list, masing-masing dibangun dari nol dalam Rust lalu dipakai untuk menyelesaikan soal. Di Rust, node yang memiliki node berikutnya adalah Option<Box<Node>>, jadi di sinilah ownership mulai terasa alami, dan setelahnya kamu tahu apa yang dilakukan Vec, VecDeque, dan HashMap untukmu.Mulai
  2. 2
    Mulai langkah iniMulaiDoubly linked list, heap dan priority queue, trie, graf, dan AVL tree yang menyeimbangkan dirinya sendiri. Doubly linked list adalah yang paling sulit di Rust, karena ada dua link yang menuju setiap node; setelah langkah ini BinaryHeap adalah heap yang pernah kamu tulis, yang terbesar lebih dulu secara default, dan BTreeMap adalah tree terurut yang kamu pahami.Mulai
  3. 3
    Mulai langkah iniMulaiBubble, selection, insertion, merge, quick, heap, counting, dan radix sort, ditulis dalam Rust dan dilihat di visualizer. sort stabil dan sort_unstable biasanya lebih cepat; setelah langkah ini kamu bisa menjelaskan berapa biaya stabilitas dan kapan melepaskannya.Mulai
  4. 4
    Mulai langkah iniMulaiTantangan rekursi dalam Rust. Tipe rekursif butuh Box sebelum compiler mau memberinya ukuran, dan fungsi rekursif atasnya mencocokkan setiap kasus, Some atau None, seperti cara base case dan recursive case terbagi. Rust tidak menjanjikan tail-call optimization, jadi rekursi yang cukup dalam akan membuat stack overflow dan menghentikan program. Dynamic programming dan bit manipulation dicantumkan setelah langkah-langkahnya, karena diajarkan dalam Python dan C++.MulaiHalaman khusus
  5. 5
    Mulai langkah iniMulaiBreadth-first search dan depth-first search, Dijkstra, Bellman-Ford, topological sort, Kruskal, dan Prim dalam Rust, pada graf yang kamu bangun di langkah dua. Priority queue untuk Dijkstra di Rust adalah BinaryHeap berisi Reverse((distance, node)): heap dari langkah dua, diubah menjadi min-heap.Mulai
  6. 6
Yang kamu dapatkan
Semua yang kamu pakai untuk belajar coding

Belajar sambil praktik

Tulis kode sungguhan, query database, buat website, dan kuasai prompt AI. Pelajaran interaktif kami mencakup setiap keterampilan yang dibutuhkan developer modern.

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

Bangun streakmu

Tetap konsisten dan lihat progresmu bertumbuh! Pantau kebiasaan coding harianmu, lindungi streakmu dengan hari beku, dan raih hadiah karena hadir setiap hari.

12 hari streak

Kembali besok untuk menjaga streakmu!

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

Gandakan atau hangus

Hari ke-5 dari 7

fire Freeze icon

Pembeku Streak

2 left

Coding di mana saja

Bawa perjalanan coding-mu ke mana saja! Tanpa setup, tanpa unduhan: cukup buka dan mulai coding. Tersedia di iOS, Android, dan Web dengan rating bintang 4,9.

Python
7Streak
250Skor
5Energi
Variabel
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
Lanjutkan
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
Perjalanan
Target
Papan peringkat
Profil
4.9
BintangBintangBintangBintangBintang
Rating

Kamu tidak sendirian

Bersaing di papan peringkat global, ajak teman untuk mendapat hadiah, dan rayakan kemenangan satu sama lain. Coding lebih seru bersama teman!

Liga Challenger
Liga Challenger7 teratas naik
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 iconZona promosileaderboard Arrow Up icon

Semua cara belajar

Baca, dengarkan, uji dirimu, tanya AI, atau cari lagi apa pun yang sudah kamu pelajari. Setiap pelajaran menyesuaikan diri denganmu.

Pengenalan variabel
Audio

Variabel adalah wadah bernama yang menyimpan nilai yang bisa kamu pakai lagi nanti di programmu.

Di Python, kamu membuatnya dengan menulis nama, tanda sama dengan, lalu nilai yang ingin kamu simpan.

Nilainya bisa berubah seiring waktu. Menetapkan ulang nama itu cukup membuatnya menunjuk ke nilai baru.

1xSarah

Dapatkan sertifikat

Dapatkan sertifikat untuk setiap kursus yang kamu selesaikan. Tambahkan ke profil LinkedIn dan CV-mu untuk menunjukkan keahlian coding-mu kepada pemberi kerja.

CoddySertifikat Penyelesaian
Dengan ini menyatakan bahwaBudi Santosotelah berhasil menyelesaikan
python iconDasar Python
Terverifikasi
TanggalJan 2026
LinkedInTambahkan ke LinkedIn

Kenapa belajar DSA dengan Rust di Coddy

  • Ownership di tempat yang paling sulit. Linked list dan tree adalah tempat aturan Rust pertama kali terasa menggigit: setiap nilai punya satu pemilik, sementara struktur-struktur ini ingin node yang saling menunjuk. Menulisnya adalah saat Box, Option::take, Rc<RefCell<T>>, dan Weak berhenti menjadi sekadar sintaks dan menjadi keputusan, itulah kenapa salah satu panduan terkenal untuk bahasa ini berjudul Learning Rust With Entirely Too Many Linked Lists.
  • Collection dengan biaya yang jelas. Vec<T> adalah stack-mu, VecDeque<T> adalah ring buffer sekaligus queue-mu, HashMap adalah hash table yang di-seed untuk menahan collision yang disengaja, BTreeMap adalah B-tree terurut, dan BinaryHeap<T> adalah max-heap. Bangun strukturnya sekali dan kamu tahu mana yang dibutuhkan sebuah soal, dan kenapa Dijkstra membungkus entrinya dengan Reverse.
  • Hampir seluruh jalur dalam Rust. Setiap struktur data, sorting, algoritma graf, tantangan rekursi, dan paket wawancara diajarkan dalam Rust. Tiga diajarkan dalam bahasa lain dan dicantumkan setelah langkah-langkahnya dengan link ke masing-masing: dynamic programming dan seri wawancara Python dalam Python, serta bit manipulation dalam C++. Bit manipulation terbawa dengan satu perubahan penulisan: Rust menulis NOT sebagai !x, dan menghitung bit yang aktif dengan count_ones().
  • Dinilai seperti wawancara. Setiap pelajaran diakhiri tantangan Rust yang diperiksa dengan kasus uji, dan saat satu gagal atau tidak bisa di-compile, Bugsy membaca kodemu dan mengarahkanmu ke perbaikannya tanpa memberikan jawabannya. Sertifikat gratis di sebagian besar kursus, masing-masing bisa diverifikasi di URL-nya sendiri.

Pertanyaan umum tentang DSA dengan Rust

Apakah Rust bagus untuk struktur data dan algoritma?

Untuk memakainya, sangat bagus: collection standarnya cepat dan terdokumentasi dengan baik, sort stabil, dan safe Rust mencegah dangling pointer dan data race saat compile, tanpa garbage collector. Untuk menulis struktur berbasis pointer, Rust lebih sulit daripada C atau Java, karena ownership melarang link yang dibagi dan bisa diubah kecuali kamu memilih memakai Rc dan RefCell, dan doubly linked list atau tree dengan pointer ke parent tersusun persis dari hal-hal itu. Kesulitan itu juga pelajarannya: begitu kamu bisa menulisnya dalam Rust, kamu tahu persis siapa memiliki apa.

Collection Rust mana yang cocok dengan struktur data mana?

Vec<T> adalah dynamic array sekaligus stack-mu, VecDeque<T> adalah ring buffer sekaligus queue-mu, HashMap dan HashSet adalah hash table (SipHash secara default, yang menahan collision yang disengaja dengan sedikit mengorbankan kecepatan), BTreeMap dan BTreeSet adalah B-tree terurut, BinaryHeap<T> adalah max-heap, dan LinkedList<T> adalah doubly linked list yang jarang akan kamu pilih dibanding Vec atau VecDeque. Tidak ada tipe trie atau graf; itu kamu bangun sendiri.

Kenapa linked list begitu sulit ditulis di Rust?

Karena setiap nilai punya tepat satu pemilik. Singly linked list cocok dengan aturan itu: setiap node memiliki node berikutnya lewat Option<Box<Node>>. Doubly linked list atau tree dengan link ke parent tidak cocok, karena ada dua pointer yang menuju setiap node, jadi kamu memakai Rc<RefCell<Node>> dengan Weak untuk link baliknya, atau menyimpan node di dalam Vec dan menghubungkannya lewat indeks. Learning Rust With Entirely Too Many Linked Lists ada karena begitu banyak orang terjebak persis di sini.

Bagaimana cara mendapatkan min-heap di Rust?

BinaryHeap<T> adalah max-heap, jadi bungkus setiap item dengan std::cmp::Reverse: push Reverse(x) dan x terkecil keluar lebih dulu. Untuk Dijkstra, push Reverse((distance, node)), dan tuple itu dibandingkan berdasarkan jarak lebih dulu. Setelah kamu menulis heap sendiri di langkah dua, membalik urutannya jadi jelas.

Kursus mana di jalur ini yang tidak diajarkan dalam Rust?

Tiga: dynamic programming dan seri wawancara Python, yang diajarkan dalam Python, serta bit manipulation, yang diajarkan dalam C++. Ketiganya dicantumkan setelah langkah-langkahnya, masing-masing dengan link yang membukanya dalam bahasanya sendiri. Tabel memo di Rust adalah Vec atau HashMap, dan integer overflow memicu panic di build debug, jadi trik bit yang mengandalkan wrapping menuliskannya secara eksplisit dengan wrapping_add atau wrapping_mul.

Apakah aku perlu bisa Rust sebelum memulai jalur ini?

Setidaknya ownership, borrowing, struct, enum, dan Option; Box dan trait membantu. Kalau semua itu masih baru, kursus Rust Coddy membawamu ke sana lebih dulu, gratis, dan jalur ini melanjutkan dari tempat kursus itu berakhir.

Apakah aku mendapat sertifikat untuk jalur Struktur Data & Algoritma?

Ya. Selesaikan setiap langkah dan kamu akan mendapat satu sertifikat gratis untuk seluruh jalur Struktur Data & Algoritma. Sertifikat ini mencantumkan setiap kursus yang kamu selesaikan di sepanjang jalan, dan menautkan sertifikat masing-masing kursus, sehingga siapa pun bisa memeriksa setiap keterampilan yang disebutkannya. Kamu bisa menambahkannya ke profil LinkedIn-mu. Ini adalah sertifikat penyelesaian dari Coddy, bukan kualifikasi terakreditasi.

Jalur belajar lainnya

Kursus yang sama, disusun untuk peran yang berbeda. Progres terbawa: kursus yang selesai di satu jalur dihitung di setiap jalur yang memuatnya.

Semua jalur belajar
Ilustrasi bahasa pemrograman di Coddy

Mulai jalur Struktur Data & Algoritma secara gratis

Mulai belajar