Project 7: Huffman Code - PowerPoint PPT Presentation

1 / 20
About This Presentation
Title:

Project 7: Huffman Code

Description:

Project 7: Huffman Code * ... * Deserialization Algorithm While any node data left in serialized stream: Get next node data from serialized stream. – PowerPoint PPT presentation

Number of Views:191
Avg rating:3.0/5.0
Slides: 21
Provided by: Roll63
Category:
Tags: code | data | huffman | project

less

Transcript and Presenter's Notes

Title: Project 7: Huffman Code


1
Project 7 Huffman Code
2
Project 7 Huffman Code
  • Extend the most recent version of the Huffman
    Code program to include decode information in the
    binary output file and use that information to
    restore the original ASCII text.

3
Embedding the Code
  • In order for the coded file to be useful, we have
    to store the code along with it.
  • Then we can read and decode the file at a later
    time.
  • Even on a different computer (with the same
    architecture)
  • In order to decode
  • First read the code
  • Then read and decode the message

4
Serialization
  • We will need to serialize the decode tree.
  • Convert data structure into a byte array.
  • Necessary any time an object is to be written to
    a file or transmitted over a network.
  • Also deserialize.
  • Convert byte array back into the data structure
    in memory.
  • Serialize and deserialize methods are required
    for any class whose objects need to be preserved
    in files or transmitted over a network.

5
Serialization
  • We will write the serialized decode tree into the
    binary output file ahead of the coded message.
  • On decode, first read back and deserialize the
    decode tree, then read and decode the message.
  • Serialization and deserialization are byte level
    operations.
  • Don't want to do one bit at a time.
  • Will need new operations in our binary file
    classes.
  • http//www.cse.usf.edu/turnerr/Data_Structures/Do
    wnloads/Project_7_Binary_File_Classes/

6
Serializing the Decode Tree
  • How do we convert the decode tree into a byte
    array that can be converted back into a decode
    tree elsewhere?
  • Don't output pointers!
  • We can't put nodes back into the same memory
    locations.
  • Have to create new nodes and link them together
    in the same way they were linked in the original
  • but at new memory locations.
  • Applies to all serialization operations.

7
How to serialize a decode tree?
Note that each nonleaf node has two child nodes.
8
How to deserialize a decode tree?
  • Need the child node addresses in order to restore
    a nonleaf node.
  • Get restored left child address.
  • Get restored right child address.
  • Get data for node.
  • Create new node with data, and pointers to left
    child and right child.

9
How to deserialize a decode tree?
  • Work from the bottom up.
  • Leaf nodes can be restored immediately from the
    serialized data.
  • Push addresses onto a stack.
  • Get parent data from serialized data.
  • Pop left child address.
  • Pop right child address.
  • Restore parent node.
  • Push parent node address onto stack.

10
Serialization Algorithm
  • Do a postorder depth-first traversal
  • Output node data as each node is visited.
  • Output only the node data
  • not the pointers.

11
Deserialization Algorithm
  • While any node data left in serialized stream
  • Get next node data from serialized stream.
  • If it is a leaf
  • Create a new node in memory with the data.
  • Push address of new node onto stack.
  • Else
  • Pop child address from stack.
  • Pop child address from stack.
  • Create new node in memory with data from the
    serialized stream and child addresses from the
    stack.
  • Push address of new node onto the stack.

12
Implementing Serialization
  • Add code to class Huffman_Tree to serialize and
    deserialize the decode tree.
  • Output and input data from the Char_Freq objects.
  • Need serialize and deserialize methods in that
    class also.

13
Implementing Serialization
  • How do we indicate end of the serialized decode
    tree?
  • Use a sentinel.
  • A unique value that cannot appear as real data.
  • Char_Freq(0, 0)

14
Sample Run
15
Test on Full Text
Delete screen output of decoded text.
16
The Files
17
Development Environment
  • You may develop your program on any system you
    like.
  • The same source files should compile and run on
    either Windows or Linux.

18
Ground Rules
  • You may work with one other person.
  • OK to work alone if you prefer.
  • If you do work as a pair
  • Work together!
  • Both members are expected to contribute.
  • Both members should understand the program in
    detail.
  • Submit a single program.
  • Do not share your code with other students.
  • Before or after submitting the project.
  • OK to discuss the project.
  • Do not copy any other students work.
  • Dont look at anyone elses program.
  • Dont let anyone look at your program.

19
Ground Rules
  • Except for code posted on the current class web
    site
  • Do not copy code from the Internet
  • or any other source.
  • Write your own code.

20
Submission
  • Project is due by 1159 PM, Sunday night, April
    24
  • Deliverables
  • Source files only.
  • Zip using Windows "Send to Compressed Folder"
  • If you work with another student, include both
    names in the assignment comments.
  • Other student submit just a Blackboard submission
    comment including both names.
  • End of Presentation

20
Write a Comment
User Comments (0)
About PowerShow.com