首页 > 代码库 > 顺序表的实现

顺序表的实现

  顺序表增删改查功能的实现

                                ————————数据结构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;

}

顺序表的实现