Buku
Struktur Data
Struktur Data dengan C++, Java, dan Python — Setiap program yang pernah Anda pakai menyimpan sesuatu: daftar lagu, antrean pesan, peta jalan, katalog buku. Cara ia menyimpannya — berjajar dalam satu baris, bertaut satu ke berikutnya, tersusun sebagai pohon, tersebar ke dalam ember-ember bernomor — menentukan apakah program yang sama menjawab dalam sekejap atau membuat Anda menunggu.
Ringkasan
Bab 1 sampai 3 membangun fondasi: cara memori menyimpan data, penyegaran C++ dari nol, array secara mendalam beserta cicipan pertama kompleksitas, dan penyiapan lengkap VS Code untuk C++, Java, dan Python di Windows, macOS, dan Linux; lalu pencarian, dari pencarian sekuensial dan sentinel-nya sampai binary search, interpolation search, dan jump search; lalu pengurutan, dari bubble sort, selection sort, dan insertion sort, melalui Shell sort, merge sort, dan quicksort, sampai counting sort dan radix sort, semuanya diukur pada data nyata. Bab 5 sampai 7 menambahkan struktur yang dapat tumbuh dan menyusut: stack dan queue beserta aplikasi klasiknya — mencocokkan tanda kurung, undo dan redo, infiks ke postfiks, call stack fungsi, queue sirkular, dan deque; pointer, referensi, dan fungsi, dengan memori dinamis, nullptr, const, dan smart pointer, serta apa yang dikerjakan referensi Java dan nama Python sebagai gantinya; dan single linked list, dengan pointer head dan tail, dummy head node, list sirkular, serta bukti bahwa tidak ada memori yang bocor. Bab 9 sampai 11 melangkah lebih jauh di sepanjang tautan: double linked list dan linked list sirkular dengan sentinel, sebuah deque, dan daftar “baru saja dipakai”; rekursi, yang diikuti bingkai demi bingkai pada call stack melalui faktorial, Fibonacci, algoritma Euclid, perpangkatan cepat, dan Menara Hanoi, sampai batas kedalaman di setiap bahasa; serta tree dan binary search tree, dengan setiap cara penelusuran, bentuk seimbang dan merosot, dan pandangan pertama pada tree yang menyeimbangkan diri. Bab 13 sampai 15 menuntaskan perjalanan: graf, dengan cara-cara merepresentasikannya, breadth-first search dan depth-first search, komponen terhubung, topological sort, dan Dijkstra yang ramah pemula; heap dan priority queue, dari sift-up dan sift-down sampai membangun heap dalam waktu linear, heap sort, dan top-k; serta hashing, dengan fungsi hash, tabrakan dan batas ulang tahun, separate chaining, open addressing, load factor dan rehashing yang diukur, dan tinjauan ke dalam std::unordered_map, HashMap Java, dan dict Python.
Bab 4, 8, 12, dan 16 adalah bab Evaluasi dan Pembahasan. Masing-masing menutup seperempat bagian buku dengan menyelesaikan persoalan utuh secara tuntas — setiap persoalan dinyatakan ulang, dirancang di kertas, diprogram, diuji, dijalankan, dan dijelaskan — lengkap dengan penyelesaian keliru yang menggoda beserta pembongkarannya, dan varian “uji diri” di akhir setiap persoalan. Bab terakhir di antaranya ditutup dengan memilih struktur data yang tepat untuk satu katalog dan mengukur setiap struktur dalam buku ini terhadapnya.
Di sepanjang buku, satu perpustakaan kecil tumbuh bab demi bab: Pustaka Ceria, perpustakaan kampus yang dibuka dengan delapan buku bertumpuk di lantai dan setahun kemudian memiliki delapan puluh ribu buku. Katalognya disimpan dalam array, dicari, dan diurutkan; kereta pengembalian bukunya adalah stack dan antrean katalogisasinya adalah queue; data bukunya ditautkan, disusun menjadi search tree, dan di-hash menurut judul; peta kampusnya adalah graf dan permintaan pemesanan bukunya adalah heap. Di sampingnya berjalan Profitina Laundry, usaha binatu kecil yang menjadi studi kasus praktik dalam buku-buku Profitina: pesanan hariannya diurutkan dari yang terberat, antrean regular dan express-nya, total mingguannya, menu layanannya sebagai tree, situs webnya sebagai graf, dan meja layanannya yang dibangun dari hash map dan priority queue. Setiap bab juga memiliki subbab Profitina dalam Praktik yang menunjukkan di mana gagasan yang sama muncul dalam produk nyata.
Setiap program dalam buku ini sudah dijalankan sebelum keluarannya dicetak. Program-program itu dikumpulkan, bab demi bab, dalam folder Code yang menyertai buku ini, dengan versi cpp, java, dan python berdampingan di setiap bab, dan README yang menjelaskan cara membangun serta menjalankan setiap program di terminal dan di VS Code, pada Windows, macOS, dan Linux. Setiap kode dalam buku ini adalah berkas di folder itu, karakter demi karakter.
Isi Buku
- Fondasi: Penyegaran C++, Memori, dan Array
- Pencarian
- Pengurutan
- Evaluasi dan Pembahasan I: Array, Pencarian, dan Pengurutan, Diselesaikan Langkah demi Langkah
- Stack dan Queue
- Pointer, Referensi, dan Fungsi
- Single Linked List
- Evaluasi dan Pembahasan II: Stack, Pointer, dan Linked List dalam Penerapan
- Double Linked List dan Linked List Sirkular
- Rekursi
- Tree dan Binary Search Tree
- Evaluasi dan Pembahasan III: Rekursi Bekerja pada List dan Pohon
- Graf
- Heap dan Priority Queue
- Hashing dan Tabel Hash
- Evaluasi dan Pembahasan IV: Graf, Heap, dan Tabel Hash dalam Praktik
Profitina · profitina.com

