/*
* File: main.cpp
* Author: toozy
*
* Created on September 23, 2013, 12:31 AM
*/
#include <cstdlib>
#include <iostream>
using namespace std;
template<class T>
class ToozyList {
public:
ToozyList();
ToozyList(int aMax,int aPerNumber);
T* const get(int aIndex) const;
int insert(int aPosition,T t);
int del(int aPosition);
int add(T t);
int len();
void expand();
~ToozyList();
protected:
int _len;
int _max;
T *_elements;
int _perNumber;
};
/*
*
*/
int main(int argc, char** argv) {
ToozyList<int>* tList = new ToozyList<int>();
for (int i = 1; i <= 105; i++) {
tList->add(i);
}
cout<<tList->len()<<endl;
tList->del(3);
cout<<tList->len()<<endl;
for (int i = 1,j = tList->len();i<=j;i++){
cout<<*tList->get(i)<<endl;
}
tList->insert(3,3);
cout<<tList->len()<<endl;
for (int i = 1,j = tList->len();i<=j;i++){
cout<<*tList->get(i)<<endl;
}
return 0;
}
template<class T>
ToozyList<T>::ToozyList(){
_len = 0;
_max = 100;
_perNumber = 100;
_elements = new T[_max];
};
template<class T>
ToozyList<T>::ToozyList(int aMax,int aPerNumber):_max(aMax),_perNumber(aPerNumber){
_len = 0;
_elements = new T[_max];
};
template<class T>
ToozyList<T>::~ToozyList(){
delete [] _elements;
};
template<class T>
int ToozyList<T>::len(){
return _len;
};
template<class T>
T* const ToozyList<T>::get(int aIndex) const{
if (aIndex>_len || aIndex<1) {
return 0;
}
return &_elements[aIndex];
};
template<class T>
void ToozyList<T>::expand(){
T *elements = new T[_len+_perNumber];
for (int i = 1; i <= _len; ++i) {
elements[i] = _elements[i];
}
delete [] _elements;
_elements = elements;
};
template<class T>
int ToozyList<T>::add(T t){
if (_len == _max) {
if (_perNumber>0) {
expand();
} else {
return 0;
}
}
_elements[++_len] = t;
return _len;
};
template<class T>
int ToozyList<T>::insert(int aPosition,T t){
if (_len == _max) {
if (_perNumber > 0) {
expand();
} else {
return 0;
}
}
if (aPosition > _len || aPosition < 1) {
return 0;
}
for (int i = ++_len; i > aPosition;) {
_elements[i] = _elements[--i];
}
_elements[aPosition] = t;
return aPosition;
};
template<class T>
int ToozyList<T>::del(int aPosition){
if (aPosition < 1 || aPosition>_len || _len < 1) {
return 0;
}
for (int i = aPosition;i<_len;) {
_elements[i] = _elements[++i];
}
--_len;
return 1;
}
c++基础之:可拓展顺序表模版类
最新推荐文章于 2024-04-22 12:29:34 发布