数据结构---链表(数组Array Based List和链表Linked list实现代码分析)

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];

}

};

猜你喜欢

转载自blog.csdn.net/z13724549107/article/details/78187475