顺序表的应用实例

来源:互联网 发布:传奇怪物补丁算法 编辑:程序博客网 时间:2024/05/18 16:39

创建一个大小为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;
}

0 0
原创粉丝点击