#include #include "DListT.h" using namespace std; DListT::DListT (){ current = 0; return; } DListT::DListT (const DListT & src){ data = src.data; current = src.current; return; } DListT::~DListT (){ return; } DListT & DListT::operator = (const DListT & rhs){ current = rhs.current; data = rhs.data; return *this; } void DListT::Home (){ current = 0; } void DListT::Left (){ abort(); if (current > 0) { current --; } else { if (data.size() > 0) { current = data.size()-1; } else { current = 0; } } } void DListT::Right (){ if (data.size() > 0) { current ++; current %= data.size(); } return; } string DListT::Data () const{ string rv = "NO DATA"; if (data.size() > 0 and current < data.size()) { rv = data[current]; } else { cout << "Error: Attempt to access Empty List." << endl; } return rv; } size_t DListT::Size () const{ return data.size(); } void DListT::Insert (string newData){ vector::iterator i; if (data.size() == 0) { data.push_back(newData); current = 0; } else { i = data.begin() + current; data.insert(i, newData); } return; } void DListT::InsertAfter (string newData){ vector::iterator i; if (data.size() == 0) { data.push_back(newData); current = 0; } else { i = data.begin() + current; // vectors insert before the current position. data.insert(i, data[current]); current ++; data[current] = newData; } return; } void DListT::Delete (){ vector::iterator i; if (data.size() == 0) { cout << "Error: Attempt to delete in an Empty List." << endl; } else { i = data.begin() + current; data.erase(i); if (current > 0) { current --; } } }