CS 50 Walkthrough 6 Problem Set 6: Mispellings Marta Bralic Slides courtesy of: Keito Uchiyama

Problem Set 6: Mispellings •  Topics:
 –  More
data
structures,
more
pointers
 –  More
File
I/O


•  You
implement:
 –  A
dic:onary
for
a
very
fast
spell
checker


The Distribution Code •  •  •  •  •  • 

texts
–
a
symlink
 speller.c
–
a
spellchecker
 dic:onary.h
–
the
header
file
 dic:onary.c
–
a
dic:onary
implementa:on
 Makefile
 ques:ons.txt


What to implement •  •  •  • 

load()
–
loads
a
dic:onary
into
memory

 size()
–
gets
the
size
of
the
dic:onary
 unload()
–
unloads
a
dic:onary
from
memory
 check()
–
checks
if
a
given
word
is
in
the
 dic:onary


Your options •  Slow
but
simple:
Linear
search
every
:me
 –  don’t
do
this!


•  Hash
tables
 •  Tries


Hash Tables

Image
courtesy
User:Davidgothberg
and
User:Helix84,
 Wikimedia
Commons


Hash Tables - Operations •  •  •  • 

Ini:alizing
our
hash
table
 Adding
dic:onary
words
 Checking
words
 Unloading
words


Ini:alizing
 //Here's
how
our
node
is
defined
 typedef
struct
node
{
 



char
word[LENGTH
+
1];
 



struct
node
*next;
 }
node;
 //We
have
our
main
directory
of
node





 //pointers
 node
*myarray[ARRAYSIZE];
 //
for
each
element
i
in
myarray:
 //




myarray[i]
=
NULL


Hash Tables – a Hash Function function
myHashFunction(string):
 
int
hashresult
 
foreach
character
in
string:
 
 
hashresult
+=
character
‐
97
 
return
hashresult
%
ARRAYSIZE


Loading
Dic:onary
Words
 •  fopen(dict)
same
as
in
pset5
 •  while
!feof(dict)

 –  create
nodes
for
them
 –  put
these
nodes
in
the
hash
table


Crea:ng
Nodes 

 •  malloc
space
for
new
node

(node
 *newnodeptr)
 –  store
each
leYer
i
of
the
word
in
that
node
 •  fgetc(dptr)
is
that
leYer
 •  newnodeptr‐>word[i]
is
where
leYer
should
be
stored
 •  un:l
you
reach
‘\n’
 –  newnodeptr‐>word[j]
=
‘\0’
at
this
point


Put
Node
in
Hash
Table
 •  hash(newnodeptr‐>word)
 –  go
to
that
place
in
array
(array[hashresult])
 •  if
nothing
is
there
(NULL)
 –  put
a
pointer
to
your
node
that
you
just
malloced
there

 –  set
newnodeptr‐>next
to
NULL


•  else
 –  set
newnodeptr‐>next
to
the
pointer
currently
there
 –  put
your
pointer
there


•  when
while
loop
exits,
fclose(dptr)


Size
 



Really
easy
if
you’ve
kept
a
counter
that
you
 increment
every
:me
you
load
a
word.


Check
 •  convert
each
leYer
of
word
tolower

 •  hash
word
and
go
to
that
place
in
array
 –  temporarily
store
the
ptr
you
find
there
 –  using
that
ptr,
traverse
the
linked
list
looking
for
 the
word
in
ptr‐>word


Unload
 •  Iterate
through
each
node,
like
in
check
 –  free
the
node
 –  free
the
spot
in
the
array
that
starts
the
linked
list
 –  return
true


•  run
valgrind
to
ensure
no
leaks!


Tries

Tries – A struct //Here's
an
example
of
what
each
node
 //in
our
struct
will
look
like
 typedef
struct
node
{
 



bool
is_word;
 



struct
node
*children[27];
 }
node;
 //We
have
our
root
node
 node
*root;


Tries - Operations •  •  •  • 

Ini:alizing
our
root
node
 Adding
words
 Checking
words
 Unloading
words


Tips •  Start
with
a
small
dic:onary
and
small
text
file
 (speller
[dict]
file)
 •  Mapping
out
data
structures
on
paper
and
on
 screen
 •  Using
gdb


Ques:ons?


CS 50 Walkthrough 6

Topics: – More data structures, more pointers. – More File I/O. • You implement: ... convert each le›er of word tolower. • hash word and go to that place in array.

222KB Sizes 1 Downloads 346 Views

Recommend Documents

CS 50 Walkthrough 6
create nodes for them. – put these nodes ... store each le›er i of the word in that node. • fgetc(dptr) is that ... put a pointer to your node that you just malloced there.

CS 50 Walkthrough 6 - CS50 CDN
Slow but simple: Linear search every fme. – don't do this! • Hash tables. • Tries ... easy if you've kept a counter that you increment every fme you load a word.

CS 50 Walkthrough 5
A bitmap is a series of consecuûve pixels described after each other. • Also has “metadata” in first 54 bytes consisûng of two headers.

CS 50 Walkthrough 5
Data structures, hexadecimal, and pointers. • Programs: – whodunit. – resize. – recover ... Image recovery! ... Go through each block in the disk image and: 1.

CS 50 Walkthrough 5
Image recovery - Steps. • Steps: Go through each block in the disk image and: 1. If we find a JPEG signature, start wriûng the bytes out to another file. 2. If we find a new JPEG signature, close that old file and go back to 2. 3. If we find the E

CS 50 Walkthrough 5 - CS50 CDN
A bitmap is a series of consecuûve pixels described after each other. • Also has “metadata” in first 54 bytes consisûng of two headers.

Computer Science 50 Walkthrough 2
This old man, he played one. He played knick-knack on my thumb. Knick-knack paddywhack, give your dog a bone. This old man came rolling home. This old man, he played two. He played knick-knack on my shoe. Knick-knack paddywhack, give your dog a bone.

Computer Science 50 Walkthrough 2
Computer Science 50. Introduction to Computer Science I. Harvard College. Marta Bralic [email protected]. Walkthrough 2 ...

Computer Science 50 Walkthrough 2
This old man, he played one. He played knick-knack on my thumb. Knick-knack paddywhack, give your dog a bone. This old man came rolling home. This old ...

Walkthrough 8
index.html – homepage. ▫ buildings.js – buildings in the game. ▫ houses.js – Harvard houses + locations. ▫ math3d.js – movement math. ▫ passengers.js – all the people in the game. ▫ service.css – appearance of the homepage. ▫

Walkthrough 8
Agenda. ▫ Distribution Code. ▫ HTML + CSS. ▫ Javascript. ▫ API's: Google Earth and Google Maps. ▫ Pickup. ▫ Dropoff. ▫ Choice of feature ...

Walkthrough 8
index.html – homepage. ▫ buildings.js – buildings in the game. ▫ houses.js – Harvard houses + locations. ▫ math3d.js – movement math. ▫ passengers.js – all the ...

form cs l mvr 50 pdf
Page 1 of 1. File: Form cs l mvr 50 pdf. Download now. Click here if your download doesn't start automatically. Page 1 of 1. form cs l mvr 50 pdf. form cs l mvr 50 ...

CS50 Walkthrough 4
To Do. ▫ distribution code. ▫ ncurses. ▫ move cursor. ▫ allow changing user-added ... Allows you to change colors, ... g.board[g.y][g.x] is spot on board where.

CS50 Walkthrough 4
function, takes one argument ch (ascii). ▫ if ch is 0, . , KEY_BACKSPACE, KEY_DC. ▫ set that spot in the board to 0. ▫ if ch is numerical between '1' and '9'.

CS50 Walkthrough #3
search. ▫ sort. ▫ fifteen.c. ▫ distribution code ... Re-implement as binary! ▫ why? ▫ 2 main ways. ▫ iterative. ▫ recursive. Page 6. Binary Search: Iterative. Go to middle.

CS50 Walkthrough 4
distribution code. ▫ ncurses. ▫ move cursor. ▫ allow changing user-added numbers, but not original ones. ▫ allow replacement of blank with number. ▫ invalid move? ▫ won? ... Moving the cursor. ▫ Switch statements! switch (test). { case

West Bengal University B.Tech CS APM Sem 6 2013 Production ...
d) none of these. Page 3 of 287. Main menu. Displaying West Bengal University B.Tech CS APM Sem 6 2013 Production & Operations Management.pdf. Page 1 ...

CS50 Walkthrough #3
Go to middle if k < value at middle search for k between first and the one before the middle if k > value at middle search for k between one after the middle and ...

Mobile Local Walkthrough
Feb 8, 2011 - or jQTouch) are not necessary, but you can certainly use more than one page if you'd like to. Page 6. Mobile Local. Walkthrough. Tommy. MacWilliam. Setup. JSONP. YQL. Tips and. Tricks. HTML Setup. ▷ HTML5 Doctype: . ▷ jQuery: .

CS50 Walkthrough 1
Videos on website. ▫ Purpose. ▫ To guide you through the week's assignment ... poor/fair/good/better/best ... Building Blocks. ▫ printf. ▫ GetInt(). ▫ “thinking”.

iOS: Evil Hangman Walkthrough - cs164
Mar 21, 2012 - Property Lists. Equivalence. Classes. Protocols. Transitioning. Between. Views. Settings. iOS: Evil Hangman Walkthrough. CS164 Walkthrough ...

Cognitive Walkthrough Forms
University of Colorado at Boulder. Department of Computer Science ... Alto, California designed and completed a study to compare a variety of usability ..... performed; where each "best way" corresponds to one sequence of user actions, eg. a ...