UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering. Program 10 EECE.3220 Data Structures Fall 2017.
|
|
- Reynard Simon
- 6 years ago
- Views:
Transcription
1 UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering Program 10 EECE.3220 Data Structures Fall 2017 Hash Tables Program 10 is a repeat of Program 9, but in Program 10 the word list will be stored as a hash table. This program uses 3 of the data structures from class: hash tables, binary search trees, and linked lists. Program 10 supports the following commands: Command A C D I O Q Description Remove entries one at-a-time from the hash table, inserting each word into a binary search tree until the hash table is empty; then display the BST in alphabetical order. After displaying the alphabetized list, remove leaf nodes from the BST one at-a-time, inserting them back into the hash table until the BST is empty. Clear (erase) the entire hash table. Accept a word from the keyboard and delete it from the hash table. Accept a word from the keyboard and if not already there insert it into the hash table. If the word is already in the table simply update its count. Ask for the name of a text file from the keyboard. Open and read the text file, storing words and their number of occurrences in the hash table. The word list is stored as a hash table, sorted only when needed into a binary search tree. After using the sorted list, it must be restored to a hash table. Terminate the application. Hash Table Collision Handling The words of the dictionary are to be stored in a hash table. Collisions are to be handled by chaining. The hash table is an array of pointers to linked lists (buckets). Each bucket stores words that hash to one position in the hash table. Your Program 4 linked list class will be used to operate on the bucket lists. Hash Function Use the first and last letters in the word to form x in the following equation to randomize the distribution of your hash function: Hash(x) = ((C1 * x) + C2) % C3 % Capacity where x = word[0]+(word[word.size()-1]<<8) where C1 = 25173, C2 = 13849, C3 = 65536, and Capacity = 11. Note that you need not provide a destructor function, a copy constructor, or assignment operator for your hash table class. BST Module Use your BST class template from Program 8. You will need to add the two functions RemoveLeaf() and RRemoveLeaf() given below, and remove the function OutputByLevel(). Linked List Module Use your linked list class from Program 4 to implement the chained buckets; convert this class to a class template.
2 Program 10 EECE.3220 Page 2 REQUIRED FILES The following files are required. FILES Prog10.cpp Provided do not modify. HashTable_T.h You supply this module. BST_T.h Your Program 8 file BST_T.h updated LinkedList_T.h Your program 6 linked list module CONTENTS The main program file. Defines the class template for class HashTable. Same as Program 8, but remove the function OutputBylevel(), add the public member function RemoveLeaf() and the private member function RRemoveLeaf(). Same as Program 6, but convert your linked list class to a class template. In addition to turning the class into a class template you must also add one inline member function called Update( ) whose purpose is to update the data member of a linked list node.. Here is the function definition to add to your linked list class definition: WordCounter.h CursorCntl.h CursorCntl.cpp Provided, do not change. Provided, do not change // Update the current entry. void Update(const NodeData &d) assert(!atend()); current->data = d; } Defines a class WordCount, whose objects store a word string along with an unsigned integer that counters the number of occurrences of that word. This version adds the function HashKey( ). The CursorCntl module provides functions for controlling the cursor position in the console window. >i tom >i bob >i sue >i ralph >i tom >i bob >i sue >i tom >i bob >i tom >a bob=3 ralph=1 sue=2 tom=4 >d bob >a ralph=1 sue=2 tom=4 SAMPLE RUN >c >owordfile.txt >d all >d come >d jumped >d fox >a brown=3 doggie=9 for=5 good=7 is=2 lazy=8 men=8 now=1 over=6 party=13 quick=2 the=23 time=4 to=20 >q Press any key to continue.
3 Program 10 EECE.3220 Page 3 Hash Table Module The class definition for the HashTable class template is shown below: REQUIRED HASH TABLE CLASS TEMPLATE DEFINITION #include "LinkedList_T.h" //----- c l a s s H a s h T a b l e template <typename ItemData, unsigned NumBuckets> class HashTable public: //Constructor: Make all buckets empty. HashTable(); // Search the table for entry "d." If "d" is found, return true,make "d" // the current entry for this bucket, and make this the current bucket. // If "d" is not found, return false. bool Search(ItemData &d); // Add an entry to the table. void Insert(ItemData &d); // Delete the current entry. void Delete(); // Return true if the table is empty. bool Empty() return size == 0; } // Return the number of entries in the table. unsigned Size() return size; } // Return the current entry. ItemData CurrentEntry(); // Remove the first entry from the table. ItemData Remove(); // Output the entire table to the stream "os", 1 entry per line. void Output(ostream &os); // Show the hash table on the right side of the screen. void Show(); unsigned size; // The number of entries in the table. unsigned curbucket; // The index of the current bucket LinkedList<ItemData> *bucket[numbuckets]; // Array of pointers to linked lists // The hashing function unsigned long Hash(unsigned x); BST Module This is the BST class template from Program 8 with the following changes: 1. Do not include Queue_T.h. 2. Remove the function OutputByLevel( ). 3. Add the public function RemoveLeaf() see below. 4. Add the private function RRemoveLeaf( ) see below. The class definition for the BST class template is shown below:
4 Program 10 EECE.3220 Page 4 REQUIRED BST CLASS TEMPLATE DEFINITION template <typename NodeData> class BST // Tree node class definition struct Node // Constructors Node() : left(0), right(0) } Node(const NodeData &d) : data(d), left(0), right(0) } // Data Members NodeData data; // The "contents" of the node Node *left; // Link to the left successor node Node *right; // Link to the right successor node public: // Constructor BST() : root(0), current(0) } // True if the tree is empty bool Empty() const return root == 0;} // Search for an entry in the tree. If the entry is found, // make it the "current" entry. If not, make the current entry // NULL. Return true if the entry is found; otherwise return false. bool Search(NodeData &d); // Add a new node to the tree. void Insert(NodeData &d); // Delete the current node. void Delete(); // Remove the leftmost leave node and return its data. NodeData RemoveLeaf() return RRemoveLeaf(root); } // Output the tree to the "os" in the indicated sequence. void OutputInOrder(ostream &os) const; // Output inorder void OutputPreOrder(ostream &os) const; // Output preorder void OutputPostOrder(ostream &os) const; // Output postorder // Retrieve the data part of the current node. NodeData &Current() assert(!empty()); return current->data; } // Show the binary tree on the screen. void ShowTree() const; Node *root; // Points to the root node Node *current; // Points to the current node Node *parent; // Points to current node's parent // Recursive Search bool RSearch(Node *subtree, NodeData &d); // Recursive remove the leftmost leave node and return its data. NodeData RRemoveLeaf(Node *&r); // Recursive Insert void RInsert(Node *&subtree, NodeData &d); // Recursive Traversal Functions void ROutputInOrder(Node *subtree, ostream &os) const; void ROutputPreOrder(Node *subtree, ostream &os) const; void ROutputPostOrder(Node *subtree, ostream &os) const; // Find the parent of leftmost right successor of the current node. Node *ParentOfLeftMostRightSucc(Node *node, Node *parent) const; // Show the binary tree on the screen. void RShowTree(Node *subtree, int x, int y) const;
5 Program 10 EECE.3220 Page 5 Function RRemoveLeaf() /* R R e m o v e L e a f ( ) PURPOSE Remove the leftmost leaf node and delete it from the tree. PRECONDITION the subtree "r" is not empty. INPUT PARAMETERS r - the root node of the subtree from which the leaf node is to be removed RETURN VALUE the data part of the removed leaf node */ template <typename NodeData> NodeData BST<NodeData>::RRemoveLeaf(Node *&r) // Make sure that the tree is not empty. assert(r!= 0); // Does this node have any successors? if (r->left!= 0) // There is a left successor, traverse left subtree return RRemoveLeaf(r->left); else if (r->right!= 0) // There is a right successor, traverse right subtree return RRemoveLeaf(r->right); else // There are no successors; it's a leaf node, capture node data NodeData result = r->data; // Delete the leaf node delete r; // Mark the subtree empty r = 0; } // Return the data from the removed node. return result; }
6 Program 10 EECE.3220 Page 6 Word Counter Module The class definition for the HashTable class template is shown below: REQUIRED WORD COUNTER CLASS DEFINITION (Updated) class WordCount public: // Constructors WordCount() : word(""), count(0) } WordCount(string theword, unsigned thecount = 1) : word(theword), count(thecount) } // Accessors string Word() const return word; } unsigned Count() const return count; } unsigned Size() return word.size(); } // Hash key unsigned HashKey() return word[0] + (word[word.size()-1]<<8); } // Mutator void Update() ++count; } // Output a Word to a stream. void Show(ostream &os) os << word << "=" << count; } // Overloaded operators bool operator<(wordcount &rhs) return word < rhs.word; } bool operator<=(wordcount &rhs) return word <= rhs.word; } bool operator>(wordcount &rhs) return word > rhs.word; } bool operator>=(wordcount &rhs) return word >= rhs.word; } bool operator==(wordcount &rhs) return word == rhs.word; } bool operator!=(wordcount &rhs) return word!= rhs.word; } string word; // The word to be counted unsigned count; // The number of occurrences
7 Program 10 EECE.3220 Page 7 Linked List The class definition for the LinkedList class template is shown below (same as Program 4): REQUIRED LINKED LIST CLASS TEMPLATE DEFINITION (Updated) //----- C l a s s L i n k e d L i s t template <typename NodeData> class LinkedList // List node class definition struct Node NodeData data; // The "contents" of the node Node *next; // Link to the next node // Node Constructor Functions Node()} Node(const NodeData &thedata, Node * const thenext = 0) : data(thedata), next(thenext) } public: // Constructors LinkedList(); // True if the list is empty bool Empty() const; // True if the current position is beyond the last entry. bool AtEnd() const; // Rewind the current entry to the beginning of the list. void Rewind() current = first; pred = 0; } // Skip to the next entry in the list. void Skip(); // Get the contents of the current list entry. NodeData CurrentEntry(); // Insert a new list entry before the current entry. void Insert(const NodeData &d); void Increment() assert(!atend(); current->update); } // Update the current entry. void Update(const NodeData &d) assert(!atend()); current->data = d; } //Delete the current entry. //The new current entry is the successor of the deleted node. void Delete(); Node *first; Node *current; Node *pred; // Points to the first node in the list // Points to the current node // Points to the node preceding the current entry.
8 Program 10 EECE.3220 Page 8 GENERAL REQUIREMENTS 1. Your hash table must be implemented as class template in the file HashTable_T.h, and must be completely generic, having no knowledge of the structure of the data part of an entry. 2. Use the provided files Prog10.cpp, WordCount.h, CursorCntl.cpp and CursorCntl.h starter files without change. 3. You may not define any additional data members. 4. Use your BST class template from Program 8 updated as described above.. 5. Use your linked list class from Program 4converted to a class template. 6. Your program's output must appear exactly as shown in the sample run above, producing exactly the same output format. 7. Use const definitions to define symbolic constants rather than hard-coding constants into your program. For example specify the array dimensions (size) with a symbolic constant. Then, it is easy to change the sizes of all of the arrays. Do not use #define to name constants. 8. Use descriptive names throughout your program. Strive to make your code so readable that is self-explanatory. 9. Use a consistent indentation scheme to help show the structure of your program. 10. Use a consistent capitalization convention to distinguish variables from constants. The preferred convention is that constant names, type names, class names, and function names have the first letter of each word capitalized (e.g., MaxCurvePoints). Variable names, data members, and parameter names, have the first letter of every word except the first capitalized (e.g., thepoint, numpoints). Using this convention, names representing values that may change (L-values) start with lower case. If a name starts with a capital, its value cannot be changed. 11. Include a sufficient number of comments to explain your program. See your instructor s demo programs, which illustrate acceptable comment usage. 12. Do not use goto statements. 13. Do not use global variables. 14. No function definition may be longer than one page (60 lines). 15. Do not use redundant code. If you need the same procedure in more than one place, make it a function. 16. Keep your functions simple. If your program seems overly complex, it probably is. This means that you did not spend enough time designing, before you started typing code. KEEP IT SIMPLE! 17. Eliminate all warning messages. 18. Do not use C-style input-output functions (stdio) such as printf(), scanf(), getchar(), putchar(), etc. Hand in the following items: SUBMISSION REQUIREMENTS 1. A computer printout of the files HashTable_T.h, LinkedList_T.h, and BST_T.h. 2. A computer printout of 2 test run(s) of your program showing two examples of your program s operation. Make sure that you include the sample run shown above. 3. Zip up the source files: HashTable_T.h, LinkedList_T.h and BST_T.h. Name the zip file LASTNAME.zip, and submit it via blackboard. These source files must be identical to the printouts from item 1. If you make changes, then submit the changed version. Only the last submission will be graded. Make sure that your zip file includes only the requested files and no folders. NOTE: Programs received after 1:00 PM on the due date will be considered late.
UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering. Program 8 EECE.3220 Data Structures Fall 2017
UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering Program 8 EECE.3220 Data Structures Fall 2017 Binary Search Trees and Class Templates Word Counter Application The object
More informationUNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering. Program 9 EECE.3220 Data Structures Fall 2017
UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering Program 9 EECE.3220 Data Structures Fall 2017 Heaps and Heap Sort Word Counter Application Revisited The object of this
More informationChapter 20: Binary Trees
Chapter 20: Binary Trees 20.1 Definition and Application of Binary Trees Definition and Application of Binary Trees Binary tree: a nonlinear linked list in which each node may point to 0, 1, or two other
More informationUNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering EXAM November 2016
UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering 16.322 EXAM 2 14 November 2016 Problem Weight Score 1 30 % 2 36 % 3 32 % Bonus 2 % TOTAL 100 % INSTRUCTIONS You may
More informationSerIODriver.c Prog2.c SerIODriver.c. Figure 1: Program 2 Data Flow
UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering Program 2 EECE.4720 / EECE.5720 Embedded Real Time Systems Spring 2018 Polled I/O and Cooperative Multitasking The purpose
More information! Tree: set of nodes and directed edges. ! Parent: source node of directed edge. ! Child: terminal node of directed edge
Trees & Heaps Week 12 Gaddis: 20 Weiss: 21.1-3 CS 5301 Fall 2018 Jill Seaman!1 Tree: non-recursive definition! Tree: set of nodes and directed edges - root: one node is distinguished as the root - Every
More informationTrees, Binary Trees, and Binary Search Trees
COMP171 Trees, Binary Trees, and Binary Search Trees 2 Trees Linear access time of linked lists is prohibitive Does there exist any simple data structure for which the running time of most operations (search,
More informationTrees, Part 1: Unbalanced Trees
Trees, Part 1: Unbalanced Trees The first part of this chapter takes a look at trees in general and unbalanced binary trees. The second part looks at various schemes to balance trees and/or make them more
More information! Tree: set of nodes and directed edges. ! Parent: source node of directed edge. ! Child: terminal node of directed edge
Trees (& Heaps) Week 12 Gaddis: 20 Weiss: 21.1-3 CS 5301 Spring 2015 Jill Seaman 1 Tree: non-recursive definition! Tree: set of nodes and directed edges - root: one node is distinguished as the root -
More informationChapter 12: Searching: Binary Trees and Hash Tables. Exercises 12.1
Chapter 12: Searching: Binary Trees and Hash Tables Exercises 12.1 1. 4, 6 2. 4, 1, 2, 3 3. 4, 6, 5 4. 4, 1, 0 5. 4, 6, 7, 8 6. template linearsearch(elementtype x[], ElementType
More informationCMSC 341 Lecture 10 Binary Search Trees
CMSC 341 Lecture 10 Binary Search Trees John Park Based on slides from previous iterations of this course Review: Tree Traversals 2 Traversal Preorder, Inorder, Postorder H X M A K B E N Y L G W UMBC CMSC
More informationProgramming II (CS300)
1 Programming II (CS300) Chapter 11: Binary Search Trees MOUNA KACEM mouna@cs.wisc.edu Fall 2018 General Overview of Data Structures 2 Introduction to trees 3 Tree: Important non-linear data structure
More informationCMSC 341. Binary Search Trees CMSC 341 BST
CMSC 341 Binary Search Trees CMSC 341 BST Announcements Homework #3 dues Thursday (10/5/2017) Exam #1 next Thursday (10/12/2017) CMSC 341 BST A Generic Tree CMSC 341 BST Binary Tree CMSC 341 BST The Binary
More informationTREES. Trees - Introduction
TREES Chapter 6 Trees - Introduction All previous data organizations we've studied are linear each element can have only one predecessor and successor Accessing all elements in a linear sequence is O(n)
More informationTrees. Chapter 6. strings. 3 Both position and Enumerator are similar in concept to C++ iterators, although the details are quite different.
Chapter 6 Trees In a hash table, the items are not stored in any particular order in the table. This is fine for implementing Sets and Maps, since for those abstract data types, the only thing that matters
More informationTree: non-recursive definition. Trees, Binary Search Trees, and Heaps. Tree: recursive definition. Tree: example.
Trees, Binary Search Trees, and Heaps CS 5301 Fall 2013 Jill Seaman Tree: non-recursive definition Tree: set of nodes and directed edges - root: one node is distinguished as the root - Every node (except
More informationBinary Trees. For example: Jargon: General Binary Trees. root node. level: internal node. edge. leaf node. Data Structures & File Management
Binary Trees 1 A binary tree is either empty, or it consists of a node called the root together with two binary trees called the left subtree and the right subtree of the root, which are disjoint from
More informationBinary Tree Node Relationships. Binary Trees. Quick Application: Expression Trees. Traversals
Binary Trees 1 Binary Tree Node Relationships 2 A binary tree is either empty, or it consists of a node called the root together with two binary trees called the left subtree and the right subtree of the
More informationCS 206 Introduction to Computer Science II
CS 206 Introduction to Computer Science II 02 / 24 / 2017 Instructor: Michael Eckmann Today s Topics Questions? Comments? Trees binary trees two ideas for representing them in code traversals start binary
More information* Due 11:59pm on Sunday 10/4 for Monday lab and Tuesday 10/6 Wednesday Lab
===Lab Info=== *100 points * Due 11:59pm on Sunday 10/4 for Monday lab and Tuesday 10/6 Wednesday Lab ==Assignment== In this assignment you will work on designing a class for a binary search tree. You
More informationBinary Search Trees. Contents. Steven J. Zeil. July 11, Definition: Binary Search Trees The Binary Search Tree ADT...
Steven J. Zeil July 11, 2013 Contents 1 Definition: Binary Search Trees 2 1.1 The Binary Search Tree ADT.................................................... 3 2 Implementing Binary Search Trees 7 2.1 Searching
More informationa graph is a data structure made up of nodes in graph theory the links are normally called edges
1 Trees Graphs a graph is a data structure made up of nodes each node stores data each node has links to zero or more nodes in graph theory the links are normally called edges graphs occur frequently in
More informationBinary Trees. Examples:
Binary Trees A tree is a data structure that is made of nodes and pointers, much like a linked list. The difference between them lies in how they are organized: In a linked list each node is connected
More informationECE 244 Programming Fundamentals Fall Lab Assignment #5: Binary Search Trees
ECE 244 Programming Fundamentals Fall 2012 1. Objectives Lab Assignment #5: Binary Search Trees The objectives of this assignment are to provide you with more practice on the use of the various C++ concepts/constructs
More informationSCJ2013 Data Structure & Algorithms. Binary Search Tree. Nor Bahiah Hj Ahmad
SCJ2013 Data Structure & Algorithms Binary Search Tree Nor Bahiah Hj Ahmad Binary Search Tree A binary search tree has the following properties: For every node n in the tree Value of n is greater than
More informationTopic Binary Trees (Non-Linear Data Structures)
Topic Binary Trees (Non-Linear Data Structures) CIS210 1 Linear Data Structures Arrays Linked lists Skip lists Self-organizing lists CIS210 2 Non-Linear Data Structures Hierarchical representation? Trees
More informationselectors, methodsinsert() andto_string() the depth of a tree and a membership function
Binary Search Trees 1 Sorting Numbers using a Tree a sorting algorithm using a tree of integer numbers 2 Header Files defining a node struct defining a tree class 3 Definition of Methods selectors, methodsinsert()
More informationIX. Binary Trees (Chapter 10)
IX. Binary Trees (Chapter 10) -1- A. Introduction: Searching a linked list. 1. Linear Search /* To linear search a list for a particular Item */ 1. Set Loc = 0; 2. Repeat the following: a. If Loc >= length
More informationTopic 7: Algebraic Data Types
Topic 7: Algebraic Data Types 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 5.5, 5.7, 5.8, 5.10, 5.11, 5.12, 5.14 14.4, 14.5, 14.6 14.9, 14.11,
More informationMULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR
STUDENT IDENTIFICATION NO MULTIMEDIA COLLEGE JALAN GURNEY KIRI 54100 KUALA LUMPUR FIFTH SEMESTER FINAL EXAMINATION, 2014/2015 SESSION PSD2023 ALGORITHM & DATA STRUCTURE DSEW-E-F-2/13 25 MAY 2015 9.00 AM
More informationTrees. (Trees) Data Structures and Programming Spring / 28
Trees (Trees) Data Structures and Programming Spring 2018 1 / 28 Trees A tree is a collection of nodes, which can be empty (recursive definition) If not empty, a tree consists of a distinguished node r
More informationCS302 - Data Structures using C++
CS302 - Data Structures using C++ Topic: Implementation Kostas Alexis s Definition: A (BST) is a binary tree where each node has a Comparable key (and an associated value) and satisfies the restriction
More informationCSCE 210/2201 Data Structures and Algorithms. Prof. Amr Goneid
CSCE 20/220 Data Structures and Algorithms Prof. Amr Goneid Fall 208 / Spring 209 CSCE 20/220 DATA STRUCTURES AND ALGORITHMS Prof. Amr Goneid Instructor: Prof. Amr Goneid E-mail: goneid@aucegypt.edu Office:
More informationCSCE 210/2201 Data Structures and Algorithms. Prof. Amr Goneid. Fall 2018
CSCE 20/220 Data Structures and Algorithms Prof. Amr Goneid Fall 208 CSCE 20/220 DATA STRUCTURES AND ALGORITHMS Dr. Amr Goneid Course Goals To introduce concepts of Data Models, Data Abstraction and ADTs
More informationCOSC 2007 Data Structures II Final Exam. Part 1: multiple choice (1 mark each, total 30 marks, circle the correct answer)
COSC 2007 Data Structures II Final Exam Thursday, April 13 th, 2006 This is a closed book and closed notes exam. There are total 3 parts. Please answer the questions in the provided space and use back
More informationB.V. Patel Institute of Business Management, Computer & Information Technology, Uka Tarsadia University
Unit 1 Programming Language and Overview of C 1. State whether the following statements are true or false. a. Every line in a C program should end with a semicolon. b. In C language lowercase letters are
More informationBinary Trees, Binary Search Trees
Binary Trees, Binary Search Trees Trees Linear access time of linked lists is prohibitive Does there exist any simple data structure for which the running time of most operations (search, insert, delete)
More informationthe pointer range [first, last) into the tree
1 #ifndef BINARY_SEARCH_TREE_CLASS 2 #define BINARY_SEARCH_TREE_CLASS 3 4 #ifndef NULL 5 #include 6 #endif // NULL 7 8 #include // for setw() 9 #include // for format conversion
More informationCourse Review for. Cpt S 223 Fall Cpt S 223. School of EECS, WSU
Course Review for Midterm Exam 1 Cpt S 223 Fall 2011 1 Midterm Exam 1 When: Friday (10/14) 1:10-2pm Where: in class Closed book, closed notes Comprehensive Material for preparation: Lecture slides & in-class
More informationWe have the pointers reference the next node in an inorder traversal; called threads
Leaning Objective: In this Module you will be learning the following: Threaded Binary Tree Introduction: Threaded Binary Tree is also a binary tree in which all left child pointers that are NULL (in Linked
More informationReferences and Homework ABSTRACT DATA TYPES; LISTS & TREES. Abstract Data Type (ADT) 9/24/14. ADT example: Set (bunch of different values)
9// References and Homework Text: Chapters, and ABSTRACT DATA TYPES; LISTS & TREES Homework: Learn these List methods, from http://docs.oracle.com/javase/7/docs/api/java/util/list.html add, addall, contains,
More informationSolution printed. Do not start the test until instructed to do so! CS 2604 Data Structures Midterm Spring Instructions:
VIRG INIA POLYTECHNIC INSTITUTE AND STATE U T PROSI M UNI VERSI TY Instructions: Print your name in the space provided below. This examination is closed book and closed notes, aside from the permitted
More informationName CPTR246 Spring '17 (100 total points) Exam 3
Name CPTR246 Spring '17 (100 total points) Exam 3 1. Linked Lists Consider the following linked list of integers (sorted from lowest to highest) and the changes described. Make the necessary changes in
More informationAlso, recursive methods are usually declared private, and require a public non-recursive method to initiate them.
Laboratory 11: Expression Trees and Binary Search Trees Introduction Trees are nonlinear objects that link nodes together in a hierarchical fashion. Each node contains a reference to the data object, a
More informationAdvanced Java Concepts Unit 5: Trees. Notes and Exercises
Advanced Java Concepts Unit 5: Trees. Notes and Exercises A Tree is a data structure like the figure shown below. We don t usually care about unordered trees but that s where we ll start. Later we will
More informationHO #13 Fall 2015 Gary Chan. Hashing (N:12)
HO #13 Fall 2015 Gary Chan Hashing (N:12) Outline Motivation Hashing Algorithms and Improving the Hash Functions Collisions Strategies Open addressing and linear probing Separate chaining COMP2012H (Hashing)
More informationCS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 11:00 PM for 100 points Due Monday, October 11:00 PM for 10 point bonus
CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 15 @ 11:00 PM for 100 points Due Monday, October 14 @ 11:00 PM for 10 point bonus Updated: 10/10/2013 Assignment: This project continues
More informationBinary Trees and Binary Search Trees
Binary Trees and Binary Search Trees Learning Goals After this unit, you should be able to... Determine if a given tree is an instance of a particular type (e.g. binary, and later heap, etc.) Describe
More informationCSCI Trees. Mark Redekopp David Kempe
CSCI 104 2-3 Trees Mark Redekopp David Kempe Trees & Maps/Sets C++ STL "maps" and "sets" use binary search trees internally to store their keys (and values) that can grow or contract as needed This allows
More informationGarbage Collection: recycling unused memory
Outline backtracking garbage collection trees binary search trees tree traversal binary search tree algorithms: add, remove, traverse binary node class 1 Backtracking finding a path through a maze is an
More informationBinary Tree. Binary tree terminology. Binary tree terminology Definition and Applications of Binary Trees
Binary Tree (Chapter 0. Starting Out with C++: From Control structures through Objects, Tony Gaddis) Le Thanh Huong School of Information and Communication Technology Hanoi University of Technology 11.1
More informationComputer Science 302 Spring 2007 Practice Final Examination: Part I
Computer Science 302 Spring 2007 Practice Final Examination: Part I Name: This practice examination is much longer than the real final examination will be. If you can work all the problems here, you will
More informationBinary Search Trees Part Two
Binary Search Trees Part Two Recap from Last Time Binary Search Trees A binary search tree (or BST) is a data structure often used to implement maps and sets. The tree consists of a number of nodes, each
More informationProgramming Assignment #4 Binary Trees in C++
Programming Assignment #4 Binary Trees in C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie,
More informationB-Trees. nodes with many children a type node a class for B-trees. an elaborate example the insertion algorithm removing elements
B-Trees 1 B-Trees nodes with many children a type node a class for B-trees 2 manipulating a B-tree an elaborate example the insertion algorithm removing elements MCS 360 Lecture 35 Introduction to Data
More informationBRONX COMMUNITY COLLEGE of the City University of New York DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE. Sample Final Exam
BRONX COMMUNITY COLLEGE of the City University of New York DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE CSI33 Sample Final Exam NAME Directions: Solve problems 1 through 5 of Part I and choose 5 of the
More informationMARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Final Examination 8:30 AM, Wednesday, April 18, 2012
MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Final Examination 8:30 AM, Wednesday, April 18, 2012 Instructor: K. S. Booth Time: 150 minutes (two hours thirty minutes)
More informationCSC/MAT-220: Lab 6. Due: 11/26/2018
CSC/MAT-220: Lab 6 Due: 11/26/2018 In Lab 2 we discussed value and type bindings. Recall, value bindings bind a value to a variable and are intended to be static for the life of a program. Type bindings
More informationvoid insert( Type const & ) void push_front( Type const & )
6.1 Binary Search Trees A binary search tree is a data structure that can be used for storing sorted data. We will begin by discussing an Abstract Sorted List or Sorted List ADT and then proceed to describe
More informationCSE 143 Final Exam Part 1 - August 18, 2011, 9:40 am
CSE 143 Final Exam Part 1 - August 18, 2011, 9:40 am Name Student ID # Section TA Name The exam is closed book, closed notes, closed devices, except that you may have a 5x8 card with handwritten notes
More informationBST Implementation. Data Structures. Lecture 4 Binary search trees (BST) Dr. Mahmoud Attia Sakr University of Ain Shams
Lecture 4 Binary search trees (BST) Dr. Mahmoud Attia Sakr mahmoud.sakr@cis.asu.edu.eg Cairo, Egypt, October 2012 Binary Search Trees (BST) 1. Hierarchical data structure with a single reference to root
More informationGeneric BST Interface
Generic BST Interface Here s a partial generic BST interface: public class BST
More informationThis examination has 11 pages. Check that you have a complete paper.
MARKING KEY The University of British Columbia MARKING KEY Computer Science 252 2nd Midterm Exam 6:30 PM, Monday, November 8, 2004 Instructors: K. Booth & N. Hutchinson Time: 90 minutes Total marks: 90
More informationCS 142 Style Guide Grading and Details
CS 142 Style Guide Grading and Details In the English language, there are many different ways to convey a message or idea: some ways are acceptable, whereas others are not. Similarly, there are acceptable
More informationIX. Binary Trees (Chapter 10) Linear search can be used for lists stored in an array as well as for linked lists. (It's the method used in the find
IX. Binary Trees IX-1 IX. Binary Trees (Chapter 10) A. Introduction: Searching a linked list. 1. Linear Search /* To linear search a list for a particular Item */ 1. Set Loc = 0; 2. Repeat the following:
More informationSETS AND MAPS. Chapter 9
SETS AND MAPS Chapter 9 The set Functions Required methods: testing set membership (find) testing for an empty set (empty) determining set size (size) creating an iterator over the set (begin, end) adding
More informationCSC148-Section:L0301
Slides adapted from Professor Danny Heap course material winter17 CSC148-Section:L0301 Week#8-Friday Instructed by AbdulAziz Al-Helali a.alhelali@mail.utoronto.ca Office hours: Wednesday 11-1, BA2230.
More informationFriday Four Square! 4:15PM, Outside Gates
Binary Search Trees Friday Four Square! 4:15PM, Outside Gates Implementing Set On Monday and Wednesday, we saw how to implement the Map and Lexicon, respectively. Let's now turn our attention to the Set.
More informationCS302 - Data Structures using C++
CS302 - Data Structures using C++ Topic: Trees Kostas Alexis Trees List, stacks, and queues are linear in their organization of data. Items are one after another In this section, we organize data in a
More informationTrees can be used to store entire records from a database, serving as an in-memory representation of the collection of records in a file.
Large Trees 1 Trees can be used to store entire records from a database, serving as an in-memory representation of the collection of records in a file. Trees can also be used to store indices of the collection
More informationCS 206 Introduction to Computer Science II
CS 206 Introduction to Computer Science II 10 / 10 / 2016 Instructor: Michael Eckmann Today s Topics Questions? Comments? A few comments about Doubly Linked Lists w/ dummy head/tail Trees Binary trees
More informationBinary Trees
Binary Trees 4-7-2005 Opening Discussion What did we talk about last class? Do you have any code to show? Do you have any questions about the assignment? What is a Tree? You are all familiar with what
More informationPreface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS
Contents Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS 1.1. INTRODUCTION TO COMPUTERS... 1 1.2. HISTORY OF C & C++... 3 1.3. DESIGN, DEVELOPMENT AND EXECUTION OF A PROGRAM... 3 1.4 TESTING OF PROGRAMS...
More informationLec 17 April 8. Topics: binary Trees expression trees. (Chapter 5 of text)
Lec 17 April 8 Topics: binary Trees expression trees Binary Search Trees (Chapter 5 of text) Trees Linear access time of linked lists is prohibitive Heap can t support search in O(log N) time. (takes O(N)
More informationDiscussion 2C Notes (Week 8, February 25) TA: Brian Choi Section Webpage:
Discussion 2C Notes (Week 8, February 25) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs32 Trees Definitions Yet another data structure -- trees. Just like a linked
More informationKing Abdulaziz University Faculty of Computing and Information Technology Computer Science Department
King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department CPCS204, 2 nd Term 2014 Program 5: FCITbook Assigned: Thursday, May 1 st, 2014 Due: Thursday, May 15
More informationChapter 17. Linked Data Structures. Copyright 2016 Pearson, Inc. All rights reserved.
Chapter 17 Linked Data Structures Copyright 2016 Pearson, Inc. All rights reserved. Learning Objectives Nodes and Linked Lists Creating, searching Linked List Applications Stacks, queues, sets, hash tables
More informationPrinciples of Computer Science
Principles of Computer Science Binary Trees 08/11/2013 CSCI 2010 - Binary Trees - F.Z. Qureshi 1 Today s Topics Extending LinkedList with Fast Search Sorted Binary Trees Tree Concepts Traversals of a Binary
More informationBinary Trees. Height 1
Binary Trees Definitions A tree is a finite set of one or more nodes that shows parent-child relationship such that There is a special node called root Remaining nodes are portioned into subsets T1,T2,T3.
More informationTrees 2: Linked Representation, Tree Traversal, and Binary Search Trees
Trees 2: Linked Representation, Tree Traversal, and Binary Search Trees Linked representation of binary tree Again, as with linked list, entire tree can be represented with a single pointer -- in this
More informationBinary Tree Implementation
Binary Tree Implementation Lecture 31 Sections 12.2-12.3 Robb T. Koether Hampden-Sydney College Mon, Apr 5, 2010 Robb T. Koether (Hampden-Sydney College) Binary Tree Implementation Mon, Apr 5, 2010 1 /
More informationMakefiles Makefiles should begin with a comment section of the following form and with the following information filled in:
CS 215 Fundamentals of Programming II C++ Programming Style Guideline Most of a programmer's efforts are aimed at the development of correct and efficient programs. But the readability of programs is also
More informationHeaps & Priority Queues. (Walls & Mirrors - Remainder of Chapter 11)
Heaps & Priority Queues (Walls & Mirrors - Remainder of Chapter 11) 1 Overview Array-Based Representation of a Complete Binary Tree Heaps The ADT Priority Queue Heap Implementation of the ADT Priority
More informationPart I: Short Answer (12 questions, 65 points total)
CSE 143 Sp01 Final Exam Sample Solution page 1 of 14 Part I: Short Answer (12 questions, 65 points total) Answer all of the following questions. READ EACH QUESTION CAREFULLY. Answer each question in the
More information"sort A" "sort B" "sort C" time (seconds) # of elements
Test 2: CPS 100 Owen Astrachan and Dee Ramm April 9, 1997 Name: Honor code acknowledgment (signature) Problem 1 value 15 pts. grade Problem 2 12 pts. Problem 3 17 pts. Problem 4 13 pts. Problem 5 12 pts.
More informationCompuer Science 62 Assignment 10
Compuer Science 62 Assignment 10 Due 11:59pm on Thursday, April 22, 2010 This assignment is the C++ version of the animal game. The program will have three parts, which have been carefully specified. You
More informationINF2220: algorithms and data structures Series 1
Universitetet i Oslo Institutt for Informatikk A. Maus, R.K. Runde, I. Yu INF2220: algorithms and data structures Series 1 Topic Trees & estimation of running time (Exercises with hints for solution) Issued:
More informationFINALTERM EXAMINATION Fall 2009 CS301- Data Structures Question No: 1 ( Marks: 1 ) - Please choose one The data of the problem is of 2GB and the hard
FINALTERM EXAMINATION Fall 2009 CS301- Data Structures Question No: 1 The data of the problem is of 2GB and the hard disk is of 1GB capacity, to solve this problem we should Use better data structures
More informationCSE100. Advanced Data Structures. Lecture 12. (Based on Paul Kube course materials)
CSE100 Advanced Data Structures Lecture 12 (Based on Paul Kube course materials) CSE 100 Coding and decoding with a Huffman coding tree Huffman coding tree implementation issues Priority queues and priority
More informationBinary Trees Fall 2018 Margaret Reid-Miller
Binary Trees 15-121 Fall 2018 Margaret Reid-Miller Trees Fall 2018 15-121 (Reid-Miller) 2 Binary Trees A binary tree is either empty or it contains a root node and left- and right-subtrees that are also
More informationOutline. Preliminaries. Binary Trees Binary Search Trees. What is Tree? Implementation of Trees using C++ Tree traversals and applications
Trees 1 Outline Preliminaries What is Tree? Implementation of Trees using C++ Tree traversals and applications Binary Trees Binary Search Trees Structure and operations Analysis 2 What is a Tree? A tree
More informationTutorial AVL TREES. arra[5] = {1,2,3,4,5} arrb[8] = {20,30,80,40,10,60,50,70} FIGURE 1 Equivalent Binary Search and AVL Trees. arra = {1, 2, 3, 4, 5}
1 Tutorial AVL TREES Binary search trees are designed for efficient access to data. In some cases, however, a binary search tree is degenerate or "almost degenerate" with most of the n elements descending
More information- 1 - Handout #22S May 24, 2013 Practice Second Midterm Exam Solutions. CS106B Spring 2013
CS106B Spring 2013 Handout #22S May 24, 2013 Practice Second Midterm Exam Solutions Based on handouts by Eric Roberts and Jerry Cain Problem One: Reversing a Queue One way to reverse the queue is to keep
More informationAP Programming - Chapter 20 Lecture page 1 of 17
page 1 of 17 Advanced Data Structures Introduction: The main disadvantage with binary search is that it requires that the array remain sorted. Keeping an array sorted requires an insertion every time an
More informationMultiple choice questions. Answer on Scantron Form. 4 points each (100 points) Which is NOT a reasonable conclusion to this sentence:
Multiple choice questions Answer on Scantron Form 4 points each (100 points) 1. Which is NOT a reasonable conclusion to this sentence: Multiple constructors for a class... A. are distinguished by the number
More informationCourse Review for Finals. Cpt S 223 Fall 2008
Course Review for Finals Cpt S 223 Fall 2008 1 Course Overview Introduction to advanced data structures Algorithmic asymptotic analysis Programming data structures Program design based on performance i.e.,
More informationAdvanced Data Structures and Algorithms
Advanced Data Structures and Algorithms CS 361 - Fall 2013 Lec. #09: Sorting Tamer Nadeem Dept. of Computer Science Class Objective/Overview Understand Declaration of Associative Container Familiarize
More informationCSE100. Advanced Data Structures. Lecture 4. (Based on Paul Kube course materials)
CSE100 Advanced Data Structures Lecture 4 (Based on Paul Kube course materials) Lecture 4 Binary search trees Toward a binary search tree implementation using C++ templates Reading: Weiss Ch 4, sections
More informationCourse goals. exposure to another language. knowledge of specific data structures. impact of DS design & implementation on program performance
Course goals exposure to another language C++ Object-oriented principles knowledge of specific data structures lists, stacks & queues, priority queues, dynamic dictionaries, graphs impact of DS design
More informationCSE 143. Linked Lists. Linked Lists. Manipulating Nodes (1) Creating Nodes. Manipulating Nodes (3) Manipulating Nodes (2) CSE 143 1
CSE 143 Linked Lists [Chapter 4; Chapter 6, pp. 265-271] Linked Lists A linked list is a collection of dynamically allocated nodes Each node contains at least one member (field) that points to another
More information