
//工程名:SeqList
//文件名:SeqList.h
//功能:演示循序表的基本操作
//依赖文件:SeqList.cpp,main.cpp
#ifndefSeqList_H
#defineSeqList_H
constintMaxSize=100;
template<classT>
classSeqList
...{
public:
SeqList()...{length=0;}
SeqList(Ta[],intn);
voidInsert(inti,Tx);
TDelete(inti);
intLocate(Tx);
voidPrintList();
private:
Tdata[MaxSize];
intlength;
};
#endif

//工程名:SeqList
//文件名:SeqList.cpp
//功能:演示循序表的基本操作
//依赖文件:SeqList.h,main.cpp
#include"SeqList.h"
template<classT>
SeqList<T>::SeqList(Ta[],intn)
...{
if(n>MaxSize)throw"参数非法";
for(inti=0;i<n;i++)
data[i]=a[i];
length=n;
}

template<classT>
voidSeqList<T>::Insert(inti,Tx)//Insert执行有点问题?已解决!
...{
if(length>=MaxSize)throw"上溢";
if(i<1||i>length)throw"位置异常";//原:i>length+1
for(intj=length;j>=i;j--)//原:j>=i
data[j]=data[j-1];//第j个元素存放在数组下标为j-1处
data[i-1]=x;//或data[j]=x;第i个元素排在下标i-1处
length++;
}

template<classT>
TSeqList<T>::Delete(inti)
...{
if(length==0)throw"下溢";
if(i<1||i>length)throw"位置异常";
Tx=data[i-1];
for(intj=i;j<length;j++)
data[i-1]=data[i];
length--;
returnx;
}
template<classT>
intSeqList<T>::Locate(Tx)
...{
for(inti=0;i<length;i++)
if(data[i]==x)returni+1;//下标为i的元素等于x,返回其序号i+1
return0;
}
template<classT>
voidSeqList<T>::PrintList()
...{
for(inti=0;i<length;i++)
cout<<data[i]<<endl;
}

//工程名:main.cpp
//文件名:SeqList
//功能:演示循序表的基本操作
//依赖文件:SeqList.h,SeqList.cpp
//主函数
#include<iostream.h>
#include"SeqList.cpp"
voidmain()
...{
intr[]=...{1,2,3,4,5};
SeqList<int>a(r,5);
cout<<"执行插入操作前数据为:"<<endl;
a.PrintList();
try
...{
a.Insert(2,6);//原:3
}
catch(char*s)
...{
cout<<s<<endl;
}
cout<<"执行插入操作后数据为:"<<endl;
a.PrintList();//Insert执行有点问题?
cout<<"值为3的元素位置为:"<<endl;
cout<<a.Locate(3)<<endl;
cout<<"执行删除第一个元素操作,删除前数据为:"<<endl;
a.PrintList();
try
...{
a.Delete(1);
}
catch(char*s)
...{
cout<<s<<endl;
}
cout<<"删除后数据为:"<<endl;
a.PrintList();
}
2476

被折叠的 条评论
为什么被折叠?



