废话不多说,先贴代码
#ifndef LIST_H
#define LIST_H
#include <iostream>
using namespace std;
template <class type>
class list
{
friend list operator+(const list &a,const list &b);
private:
type *data;
int maxsize;
int size;
void doublespace(){
maxsize*=2;
type*t=new type[maxsize];
for(int i=0;i<size;++i)
t[i]=data[i];
data=t;
}
public:
list(int insize=10){
data=new type[insize];
maxsize=insize;
size=0;
}
virtual ~list(){size=0;delete[]data;}
void clear(){
size=0;
}
void traversal(){
for(int i=0;i<size;++i)
cout<<data[i]<<" ";
cout<<endl;
}
int length(){return size;}
type visit(int i){
if(i<=size)
return data[i];
else
cout<<"void input"<<endl;
}
void remove(int i){
for(int j=i;j<size;++j)
data[j]=data[j+1];
--size;
}
void insert(int i,type x)
{
if(size==maxsize)
doublespace();
for(int j=size-1;j>=i;--j)
{
data[j+1]=data[j];
}
data[i]=x;
++size;
}
};
template <class type>
list<type> operator+(const list<type> &a,const list<type> &b)
{
list<type> c(a.size+b.size);
int i,j;
for( i=0;i<a.size;++i)
{
c.data[i]=a.data[i];
}
for(j=i;j<c.size;++j)
{
c.data[j]=b.data[j-i];
}
return c;
}
#endif // LIST_H
#ifndef LIST_H
#define LIST