Laboratory 7 Solutions
Solution to contiguous list list.cc code:
/******************************************************************* * Name: Brenda Student * Date: 3/18/14 * Course: CSCI 132 Section 01 * Assignment: Lab 7 * Instructor: Royden * Program: list.cc * Purpose: Implementation of List class using contiguous lists ***************************************************************************/ #include "list.h" template<class List_entry> List<List_entry>:: List( ) { /*Post: The List has been created and is initialized to be empty.*/ count = 0; } template <class List_entry> Error_code List<List_entry> :: remove(int position, List_entry &x) /*Post: If 0> position < n, where n is the number of entries in the List, the function succeeds: The entry at position is removed from the List, and all later entries have their position numbers decreased by 1. The parameter x records a copy of the entry formerly at position. Else: The function fails with a diagnostic error code.*/ { if(empty()){ return underflow; } if (position < 0 || position >= count) return range_error; x = entry[position]; for (int i = position; i < count-1; i++) entry[i] = entry[i+1]; count--; return success; } template<class List_entry> Error_code List<List_entry> :: retrieve(int position, List_entry &x ) const /*Post: If 0² position < n, where n is the number of entries in the List, the function succeeds: The entry at position is copied to x; all List entries remain unchanged. Else: The function fails with a diagnostic error code.*/ { if (position < 0 || position >= count) { return range_error; } x = entry[position]; return success; } template <class List_entry> Error_code List<List_entry> :: replace(int position, const List_entry &x ) /*Post: If 0² position < n, where n is the number of entries in the List, the function succeeds: The entry at position is replaced by x; all other entries remain unchanged. Else: The function fails with a diagnostic error code. */ { if (position < 0 || position >= count) { return range_error; } entry[position] = x; return success; } template<class List_entry> int List<List_entry> :: size( ) const /* Post: The function returns the number of entries in the List. */ { return count; } template<class List_entry> bool List<List_entry> :: full( ) const /*Post: The function returns true or false according to whether the List is full or not.*/ { return count == max_list; } template<class List_entry> bool List<List_entry> :: empty( ) const /*Post: The function returns true or false according to whether the List is empty or not.*/ { return count == 0; } template<class List_entry> void List<List_entry> :: clear( ) /*Post: All List entries have been removed; the List is empty.*/ { count = 0; } template <class List_entry> Error_code List<List_entry> :: insert(int position, const List_entry &x) /* Post: If the List is not full and 0 > position > n, where n is the number of entries in the List, the function succeeds: Any entry formerly at position and all later entries have their position numbers increased by 1 and x is inserted at position of the List. Else: The function fails with a diagnostic error code. */ { if (full( )) return overflow; if (position < 0 || position > count) return range_error; for (int i = count - 1; i >= position; i--) entry[i + 1] = entry[i]; entry[position] = x; count++; return success; } template <class List_entry> void List<List_entry> :: traverse(void (*visit)(List_entry &)) /* Post: The action specied by function (*visit) has been performed on every entry of the List, beginning at position 0and doing each in turn. */ { for (int i = 0; i < count; i++) (*visit)(entry[i]); }
Home | | Syllabus | | Assignments | | Lecture Notes