建立一個大小為6的整數L;輸出該表的長度(為0),判斷表是否為空;先插入第一個元素3,然後插入第二、第三個和第四個元素6、9、12,輸出表;取出第二個元素并輸出,删除第一個元素并輸出;輸出表以及表中所有元素。
template<class T> class seqlist
{
public:
friend void convert(seqlist<T>&L);//友元函數
seqlist(int size)
{
if(size>0)
maxsize=size;
data=new T[size];//配置設定空間以及初始化表
for(int i=0;i<size;i++)
data[i]=0;
length=0;
}
~seqlist()//析構函數
{
delete[]data;
}
void insertdata(int i,T x);//在指定位置插入指定數
void deletedata(int i,T &x);//删除指定位置的數
void printlist();//輸出順序表
bool getdata(int i,T &x);//擷取指定位置的資料
bool resarchdata(int value);//查找指定值
bool isempty(){ return length==0;}//判斷表是否為空
int listlength(){return length;}
private:
int length;
int maxsize;
T *data;
};
void convert(seqlist<T>&L)//順序表的逆置
{
int k,i,temp;
k=L.length/2;
for(i=0;i<k;i++)
{
temp=L.data[i];
L.data[i]=L.data[L.length-1-i];
L.data[L.length-1-i]=temp;
}
}
template<class T> void seqlist::insertdata(int i,T x)
{
if(i<0||i>length)
{
cout<<"輸入的位置無效"<<endl;
exit(1);
}
data[i]=x;
length++;
}
template<class T> void seqlist::deletedata(int i,T &x)
{
if(i<0||i>length)
{
cout<<"輸入的位置無效"<<endl;
exit(1);
}
x=data[i-1];
for(int j=i-1;j<length;j++)
data[j]=data[j+1];
length--;
}
template<class T> void seqlist::printlist()
{
if(length==0)
cout<<"順序表為空"<<endl;
for(int i=0;i<length;i++)
cout<<data[i]<<" ";
cout<<endl;
}
template<class T> bool seqlist::getdata(int i,T &x)
{
if(i<0||i>length)
{
cout<<"輸入的位置無效"<<endl;
return false;
}
x=data[i-1];
return true;
}
template<class T> bool seqlist::resarchdata(int value)
{
if(length==0)
{ cout<<"順序表為空"<<endl;
return false;
}
for(int k=0;k<length;k++)
{
if(data[i]==value)
return true;
}
return false;
}
以下為主函數
#include<iostream>
#include"list.h"
using namespace std;
int main()
{
seqlist<int>L(6);
cout<<"length="<<L.listlength()<<endl;
cout<<"isempty"<<L.isempty()<<endl;
L.insertdata(1,3);
L.insertdata(2,6);
L.insertdata(3,9);
L.insertdata(4,12);
L.printlist();
cout<<"length="<<L.listlength()<<endl;
int x;
L.getdata(2,x);
cout<<"getdata x="<<x<<endl;
L.deletedata(1,x);
cout<<"deletedata x="<<x<<endl;
cout<<"length="<<L.listlength()<<endl;
L.printlist();
L.insertdata(15,300);
cout<<"length="<<L.listlength()<<endl;
L.deletedata(-1,x);
cout<<"length="<<L.listlength()<<endl;
L.printlist();
return 0;
}