Ми рахували підрахунок слів у нашому попередньому дописі: заздалегідь посилаючись на Google MapReduce. Тепер ми напишемо C-структуровану програму підрахунку слів книги K&R на C ++, спростивши код нашого попереднього класу. Ми будемо глибоко проштовхувати зворотний простір, тому що це буде справжньою оптимізацією, оскільки в цьому завданні нам не потрібно будувати двійкове дерево за логікою алгоритму LZW, а лише природою a'la.

programming

Ми можемо зробити перевантажений структурний вузол * дерево (struct tnode *, char *), але давайте будемо трохи креативнішими! (У нашому випадку, звичайно, це буде Node * замість struct tnode *.)

"Вузол" завжди починається з кореня і вказує на те, куди ми намагаємось вставити нове слово, яке ми отримали. Спочатку дерева немає (на відміну від нашого прикладу LZW, корінь не був у вільному сховищі, але стек був там за замовчуванням), тому з першим словом гілка if підбирає це слово. Потім друге слово, якщо перше відповідає вмісту, то відповідно до першого else, якщо гілка, ми просто збільшуємо лічильник поточного вузла, якщо він був меншим, то праворуч, якщо більший, ніж на лівому піддереві (або віце навпаки:) ще раз вставте.

Клацніть на посилання нижче, щоб отримати повне джерело чи інші альтернативні рішення для «підрахунку слів».