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.

A416 BabBI · ENC++ · Java · Python1.579 halaman
Profitina Struktur Data
Unduh Buku Lengkap (PDF) Unduh Semua Materi Kuliah (PDF) Unduh Source Code (ZIP)

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

  1. Fondasi: Penyegaran C++, Memori, dan Array
  2. Pencarian
  3. Pengurutan
  4. Evaluasi dan Pembahasan I: Array, Pencarian, dan Pengurutan, Diselesaikan Langkah demi Langkah
  5. Stack dan Queue
  6. Pointer, Referensi, dan Fungsi
  7. Single Linked List
  8. Evaluasi dan Pembahasan II: Stack, Pointer, dan Linked List dalam Penerapan
  9. Double Linked List dan Linked List Sirkular
  10. Rekursi
  11. Tree dan Binary Search Tree
  12. Evaluasi dan Pembahasan III: Rekursi Bekerja pada List dan Pohon
  13. Graf
  14. Heap dan Priority Queue
  15. Hashing dan Tabel Hash
  16. Evaluasi dan Pembahasan IV: Graf, Heap, dan Tabel Hash dalam Praktik
Untuk siapa buku ini: Anda dianggap belum tahu apa-apa. Bukan “belum tahu apa-apa tentang struktur data” — benar-benar belum tahu apa-apa. Jika Anda belum pernah menulis sebaris kode, belum pernah mengompilasi program, belum pernah bertanya-tanya di mana sebuah variabel sebenarnya tinggal, Andalah pembaca yang dibayangkan saat buku ini ditulis. Setiap istilah diperkenalkan dengan kata-kata sederhana sebelum dipakai, setiap struktur digambar keadaan demi keadaan sebelum diprogram, dan setiap program dalam buku ini sudah dijalankan sebelum keluarannya dicetak di sini.

Profitina · profitina.com

💬 Diskusi Komunitas