天天看點

順序表的應用執行個體

建立一個大小為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;

}