天天看点

顺序表的应用实例

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

}