📄 alist.h
字号:
#ifndef ALIST_H_H
#define ALIST_H_H
/*线性表*/
template<class Elem>class List{
public:
virtual void clear()=0;
virtual bool insert(const Elem&)=0;
virtual bool append(const Elem&)=0;
virtual bool remove(Elem&)=0;
virtual void setStart()=0;
virtual void setEnd()=0;
virtual void prev()=0;
virtual void next()=0;
virtual int leftLength()const=0;
virtual int rightLength()const=0;
virtual bool setPos(int pos)=0;
virtual bool getValue(Elem&)const=0;
virtual void print()const=0;
};
/*顺序表*/
template<class Elem>
class AList:public List<Elem>{
private:
int maxSize;
int listSize;
int fence;
Elem* listArray;
public:
AList(int size=DefaultListSize){
maxSize=size;
listSize=fence=0;
listArray=new Elem[maxSize];
// for(int i=0;i<maxSize-2;i++)
// {listArray[i]=i;listSize++;}
}
~AList(){delete [] listArray;}
void clear(){
delete [] listArray;
listSize=fence=0;
listArray=new Elem[maxSize];
}
bool insert(const Elem&);
bool append(const Elem&);
bool remove(Elem&);
void setStart() {fence=0;}
void setEnd() {fence=listSize;}
void prev() {if(fence!=0) fence--;}
void next() {if(fence<=listSize) fence++;}
int leftLength()const {return fence;}
int rightLength()const{return listSize-fence;}
bool setPos(int pos){
if((pos>=0)&&(pos<=listSize)) fence=pos;
return (pos>=0)&&(pos<=listSize);
}
bool getValue(Elem& it)const{
if(rightLength()==0) return false;
else {it=listArray[fence];return true;}
}
void print()const{
int temp=0;
cout<<"<";
while(temp<fence) cout<<" ";
cout<<"| ";
while(temp<listSize) cout<<" ";
cout<<">\n";
}
bool reverse(const Elem& it);
};
/*顺序表的插入,追加,删除操作*/
template<class Elem>
bool AList<Elem>::insert(const Elem& item){
if(listSize==maxSize) return false;
for(int i=listSize;i>fence;i--)
listArray[i]=listArray[i-1];
listArray[fence]=item;
listSize++;
return true;
}
template<class Elem>
bool AList<Elem>::append(const Elem& item){
if(listSize==maxSize) return false;
listArray[listSize++]=item;
return true;
}
template<class Elem>
bool AList<Elem>::remove(Elem& it){
if(rightLength()==0) return false;
it=listArray[fence];
for(int i=fence;i<listSize-1;i++)
listArray[i]=listArray[i+1];
listSize--;
return true;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -