1、链表含有的一般功能:
清除 、插入、尾部添加、移动指向(当前操作单元)到头/尾、前/后移一个单位 、获取链表长度、获取当前位置下标 、移动当前位置到pos 、获取当前位置的值
template <typename E> class List{
private:
void opetator = (const List &){}
List (const List&) {}
public:
List() {}
virtual List() {}
virtual void clear() = 0;
virtual void insert(const E& item) = 0;
virtual void append(const E& item) = 0;
virtual void remove() = 0;
virtual void moveToStart() = 0;
virtual void moveToEnd() = 0;
virtual void prev() = 0;
virtual void next() = 0;
virtual int length() const = 0; //长度部分,有时候可以增加当前位置的左边的长度,右边的长度
virtual int currPos() const = 0;
virtual void moveToPos(int pos) = 0;
virtual const E& getValue() const = 0; //current value};
寻找函数:
bool find(List<int>& L, int K){
int it;
for(L.moveToStart(); L.currPos() < L.length(); L.next()){
it = L.getValue();
if(K == it) return true;
}
return false;
}
2、Array based List(顺序表): 数组实现
template <typename E>
class AList : public List<E>{
private:
int maxSize; //申请的数组的内存长度
int listSize; //填入的数据的长度
int curr; //当前位置的下标
E* listArray; //数组头指针,即数组
public:
Alist(int size = defaultSize){
maxSize = size;
listSize = curr = 0;
listArray = new E[maxSize];
}
};