线性表之顺序表
2012-05-24 15:28:09 来源:WEB开发网核心提示:#include<iostream>using namespace std;template <typename T>class List{private:T *data;int length;int listsize;public:List(int k=1){data=new T[k];len
#include<iostream>
using namespace std;
template <typename T>class List{
private:
T *data;
int length;
int listsize;
public:
List(int k=1)
{
data=new T[k];
length=0;
listsize=k;
}
~List()
{
delete[]data;
}
void clearList()
{
length=0;
}
bool empty()
{
return length==0;
}
int getLength()
{
return length;
}
bool getElem(int i,T &e)
{
if(i<1 || i>length)
{
return false;
}
e=*(data+i-1);
return 0;
}
bool InsertList(int i,T e)
{
T *base;
if(i<0 || i>length+1)
{
return false;
}
if(length==listsize)
{
base=new T[listsize*2];
for(int i=0;i<length;i++)
{
*(base+i)=*(data+i);
}
delete []data;
data=base;
listsize*=2;
}
for(int j=length-1;j>=i-1;j--)
{
*(data+j+1)=*(data+j);
}
*(data+i-1)=e;
length++;
return true;
}
bool deleteList(int i,T &e)
{
if(i<1 || i>length)
{
return false;
}
e=*(data+i-1);
for(int j=i;j<length;j++)
{
*(data+j-1)=*(data+j);
}
length--;
return true;
}
void print()
{
for(int i=0;i<length;i++)
{
cout<<*(data+i)<<" ";
}
cout<<endl;
}
template<class T>
friend void MergeList(List <T>&,List <T>&,List <T> &);
template <class T>
friend ostream & operator <<(ostream &,List <T> &);
};
template<class T>
void MergeList(List <T>&a,List <T>&b,List <T> &c)
{
int e,i=0,j=0,k=0;
while(i<a.length && j<b.length)
{
if(a.data[i]<=b.data[j])
{
a.getElem (++i,e);
c.InsertList (++k,e);
}
else {
b.getElem (++j,e);
c.InsertList(++k,e);
}
}
while(i<a.length)
{
a.getElem (++i,e);
c.InsertList (++k,e);
}
while(j<b.length )
{
b.getElem(++j,e);
c.InsertList (++k,e);
}
}
template <class T>
ostream & operator <<(ostream & out,List <T> & a)
{
for(int i=0;i<a.length;i++)
{
out<<a.data[i]<<" ";
}
return out;
}
int main()
{
List<int> La,Lb,Lc;
cout<<"La是否为空?"<<boolalpha<<La.empty ();
for(int i=0;i<5;i++)
La.InsertList (i+1,i*2);
for(int i=0;i<6;i++)
Lb.InsertList(i+1,i*3);
cout<<"La的各个元素是:"<<La;
cout<<"Lb的各个元素是:"<<Lb;
MergeList(La,Lb,Lc);
cout<<"Lc的各个元素是:"<<Lc
return 0;
}
- ››线性回归拟合线Trend函数是这样来使用的
- ››顺序栈 十进制转化二进制
- ››线性表之双向循环链表
- ››线性表之单循环链表
- ››线性表之单链表
- ››线性表之顺序表
- ››线性表的顺序存储实验
- ››线性表的使用
更多精彩
赞助商链接
