#include #include // Provides toupper #include // Provides EXIT_SUCCESS and size_t #include class List { public: enum { CAPACITY = 30 }; // or, static const size_t CAPACITY = 30; typedef double Item; List( ) { used = 0; } void start( ) { current_index = 0; } void advance( ) { current_index++; } void insert(const Item& entry); void attach(const Item& entry); void remove_current( ); size_t size( ) const { return used; } bool is_item( ) const { return (current_index < used)? true:false; } size_t index ( ) const { return current_index; } Item current( ) const { return data[current_index]; } private: Item data[CAPACITY]; size_t used; size_t current_index; }; void List::remove_current( ) { assert(is_item()); for(int i = current_index + 1; i < used; i++) data[i-1] = data[i]; used--; } void List::insert(const Item& entry) { size_t i; assert(size() < CAPACITY); if(!is_item()) current_index = 0; for(i = used; i > current_index; i--) data[i] = data[i-1]; data[current_index] = entry; used++; } void List::attach(const Item& entry) { size_t i; assert(size() < CAPACITY); if(!is_item()) current_index = used; else { for(i = used; i > current_index + 1; i--) data[i] = data[i-1]; current_index += 1; } data[current_index] = entry; used++; }