#include<iostream>
const int defaultsize=100;
template<typename E>
class AList{
private:
E* listArray;
int size;
int curr; //position of current element
int maxSize; //maximum size of list
public:
AList(int s=defaultsize){
maxSize=s;
listArray=new E[maxSize];
size=curr=0;
}
~AList() {delete [] listArray;}
void clear(){
size=curr=0;
}
//insert "it" at current positon
void insert(const E& it){
if(size<maxSize){
for(int i=size; i>curr; i++)
listArray[i]=listArry[i-1];
listArray[curr]=it;
size++;
}
else { std::cout << "List capacity exceeded\n";}
}
void append(const E& it){
if(size<maxSize)
listArray[size++]=it;
else { std::cout << "List capacity exceeded\n";}
}
//remove and return the current element
E remove(){
if(size>0){
E temp=listArray[curr];
for(int i=curr; i<size-1; i++)
listArray[i]=listArray[i+1];
size--;
return temp;
}
else {"No element\n";}
}
void moveToStart() {curr=0;}
void moveToEnd() {curr=size;}
void prev() {if(curr!=0) curr--;}
void next() {if(curr<size) curr++;}
int length()const {return size;}
int currPos()const {return curr;}
void moveToPos(int pos) {
if(pos>=0 && pos<=size) {curr=pos;}
else {std::cout << "Pos out of range\n";}
}
//return current element
const E& getValue()const {
if(curr>=0 && curr<size) {return listArray[curr];}
else {std::cout << "No current element\n"};
}
};
顺序表的实现
最新推荐文章于 2020-08-25 20:31:15 发布