Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ListArray.cpp : ------------->>>>>>>>>>>>>>
- #ifndef LIST_ARRAY_CPP
- #define LIST_ARRAY_CPP
- #include "ListArray.h"
- template<typename DataType>
- List<DataType>::List(int maxNumber){
- dataItems = new DataType[maxNumber];
- maxSize = maxNumber;
- size = 0;
- cursor = 0;
- }
- template<typename DataType>
- List<DataType>::List(const List<DataType> &source):List(){
- *this = source;
- }
- template<typename DataType>
- List<DataType>& List<DataType>::operator=( const List<DataType>& source ){
- if(&source == this){
- return *this;
- }
- maxSize = source.maxSize;
- size = source.size;
- cursor = source.cursor;
- delete[] dataItems;
- dataItems = new DataType[maxSize];
- for(int i = 0;i<size;i++){
- dataItems[i] = source.dataItems[i];
- }
- return *this;
- }
- template<typename DataType>
- List<DataType>::~List(){
- clear();
- }
- template<typename DataType>
- void List<DataType>::clear(){
- if(maxSize != -1){
- maxSize = -1;
- delete[] dataItems;
- size = 0;
- cursor = 0;
- }
- }
- template<typename DataType>
- void List<DataType>::insert(const DataType &newDataItem)throw (logic_error){
- if(isFull()){
- throw logic_error("List Is Full");
- }
- if(size == cursor){
- dataItems[size++] = newDataItem;
- cursor++;
- return;
- }
- if(size != cursor){
- size++;
- for(int i = size;i>cursor;i--){
- dataItems[i] = dataItems[i-1];
- }
- dataItems[cursor++] = newDataItem;
- }
- }
- template<typename DataType>
- void List<DataType>::remove()throw (logic_error){
- if(isEmpty()){
- throw logic_error("List Is Empty");
- }
- for(int i = cursor-1;i<size-1;i++){
- dataItems[i] = dataItems[i+1];
- }
- size--;
- }
- template<typename DataType>
- void List<DataType>::replace(const DataType &newDataItem)throw (logic_error){
- if(isEmpty()){
- throw logic_error("List Is Empty");
- }
- dataItems[cursor-1] = newDataItem;
- }
- template<typename DataType>
- bool List<DataType>::isEmpty()const{
- return size == 0;
- }
- template<typename DataType>
- bool List<DataType>::isFull()const{
- return size >= maxSize;
- }
- template<typename DataType>
- void List<DataType>::gotoBeginning()throw ( logic_error ){
- if(isEmpty()){
- throw logic_error("List Is Empty");
- }
- cursor = 1;
- }
- template<typename DataType>
- void List<DataType>::gotoEnd()throw ( logic_error ){
- if(isEmpty()){
- throw logic_error("List Is Empty");
- }
- cursor = size;
- }
- template<typename DataType>
- bool List<DataType>::gotoNext()throw ( logic_error ){
- if(isEmpty()){
- throw logic_error("List Is Empty");
- }
- if(cursor >= size){
- return false;
- }
- cursor++;
- return true;
- }
- template<typename DataType>
- bool List<DataType>::gotoPrior()throw ( logic_error ){
- if(isEmpty()){
- throw logic_error("List Is Empty");
- }
- if(cursor <= 1){
- return false;
- }
- cursor--;
- return true;
- }
- template<typename DataType>
- DataType List<DataType>::getCursor () const throw ( logic_error ){
- if(isEmpty()){
- throw logic_error("List Is Empty");
- }
- return dataItems[cursor-1];
- }
- template<typename DataType>
- void List<DataType>::moveToNth ( int n )throw ( logic_error ){
- if(isEmpty()){
- throw logic_error("List Is Empty");
- }
- if(n < 0 || n >= size){
- throw logic_error("Index Out Of Bound");
- }
- cursor = n+1;
- }
- template<typename DataType>
- bool List<DataType>::find ( const DataType& searchDataItem )throw ( logic_error ){
- if(isEmpty()){
- throw logic_error("List Is Empty");
- }
- for(int i = 0;i<size;i++){
- if(searchDataItem == dataItems[i]){
- return true;
- }
- }
- return false;
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement