首页 > 代码库 > 顺序表的实现
顺序表的实现
顺序表增删改查功能的实现
————————数据结构C++版
#include<iostream>
using namespace std;
# define DefaultListsize 10
template <class Elem> class List //类模板,其中Elem为抽象数据类型
{ virtual void clear()=0;
virtual bool insert(Elem&)=0;
virtual bool append(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()=0;
virtual int rightlength()=0;
virtual bool setPos(int pos)=0;
virtual bool getValue(Elem&)=0;
virtual void print()=0;
};
template <class Elem>
class Alist :public List<Elem> //继承
{
private:
int maxsize;
int listsize;
int fence;
Elem*listarray;
public:
Elem item;
Alist(int size=DefaultListsize)
{ maxsize=size;
listsize=fence=0;
listarray=new Elem[maxsize]; }
~Alist()
{ delete []listarray; }
bool insert(Elem&);
bool append(Elem&);
bool remove(Elem&);
void clear() { listsize=fence=0; }
void setstart() { fence=0; }
void setend() { fence=listsize; }
void prev() { if(fence!=0) fence--; }
void next() { if(fence<=listsize) fence++; }
int leftlength()
{ return fence; }
int rightlength()
{ return listsize-fence; }
bool setPos(int pos)
{
if((pos>=0)&&(pos<=listsize))
fence=pos;
return (pos>=0)&&(pos<=listsize); }
bool getValue(Elem& it)
{ if(rightlength()==0)
return false;
it=listarray[fence];
return true;
};
void print()
{ int temp=0;
cout<<"<";
while(temp<fence) cout<<listarray[temp++]<<" ";
cout<<"|";
while(temp<listsize) cout<<listarray[temp++]<<" ";
cout<<">/n"; }
};
template <class Elem>
bool Alist<Elem>::insert(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(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];
}
int main()
{
int listarray[DefaultListsize];
for(int i=0;i<6;i++)
cin>>listarray[i];
Alist<int> a;
for(int i=0;i<6;i++)
a.insert(i);
a.print();
return 0;
}
顺序表的实现