线性表类的定义:
#ifndef LINE_H_INCLUDED
#define LINE_H_INCLUDED
#include<iostream>
using namespace std;
class Linearlist
{
private:
int MaxSize;
int Length;
int *element;
public:
Linearlist(int Max=50) //构造函数
{
MaxSize=Max;
element=new int [MaxSize];
Length=0;
}
bool IsEmpty() //判空
{
if(Length==0)
return true;
}
bool Fresh(int i,int k) //初始化
{
if(i<0||i>MaxSize-1)
{
cout<<"Fresh failure"<<endl;
return false;
}
else
{
element[i]=k;
Length++;
return true;
}
}
int* getelement() //获取数组头指针
{
return element;
}
int getLength() //获取数组长度
{
return Length;
}
bool Find(int k,int &item) //查找第k个节点的数据
{
if(k<0||k>MaxSize||Length==0)
{
cout<<"Find failure"<<endl;
return false;
}
else
{
item=element[k-1];
return true;
}
}
bool inseart(int k,int key) //在第k个节点后插入新节点
{
if((k>Length-1)||(k<0)||(Length==MaxSize))
{
cout<<" inseart failure"<<endl;
return false;
}
else
{
for(int i=Length-1;i>k-1;i--)
{
element[i+1]=element[i];
}
element[k]=key;
Length++;
return true;
}
}
bool pop(int k) //删除第k个节点
{
if(k<0||k>Length-1)
{
cout<<"pop failure"<<endl;
return false;
}
else
{
for(int i=k-1;i<Length-1;i++)
element[i]=element[i+1];
Length--;
return true;
}
}
int search(int x) //查询值为x的节点下标
{
int a=-1;
for(int i=0;i<Length;i++)
{
if(element[i]==x)
{
a=i;
break;
}
}
if(a==-1)
{
return 0;
}
else return a;
}
~Linearlist()
{
delete[]element;
}
};
#endif // LINE_H_INCLUDED
测试代码(cpp文件)
#include<iostream>
#include"line.h"
using namespace std;
int main()
{
cout<<"数组规模为十,并初始化为0~9."<<endl;
Linearlist A(10);
for(int i=0;i<10;i++)
{
A.Fresh(i,i);
}
int a;
cout<<endl<<"原始存储情况:"<<endl;
int *p=A.getelement();
cout<<"\t"<<"\t";
for(int i=0;i<A.getLength();i++)
{
cout<<p[i]<<" ";
}
cout<<endl<<"查找第5个节点的数据:"<<endl;
A.Find(5,a);
cout<<"\t"<<"\t"<<a;
cout<<endl<<"删除第3个节点:"<<endl;
A.pop(3);
p=A.getelement();
cout<<"\t"<<"\t";
for(int i=0;i<A.getLength();i++)
{
cout<<p[i]<<" ";
}
cout<<endl<<"在第6个节点后插入12:"<<endl;
A.inseart(6,12);
cout<<"\t"<<"\t";
p=A.getelement();
for(int i=0;i<A.getLength();i++)
{
cout<<p[i]<<" ";
}
cout<<endl<<"查询值为30的节点:"<<endl;
cout<<"\t"<<"\t";
a=A.search(30);
if(a)
cout<<"在第"<<a<<"个节点"<<endl;
else
cout<<"查找的数不存在"<<endl;
cout<<endl<<"查询值为9的节点:"<<endl;
cout<<"\t"<<"\t";
a=A.search(9);
if(a!=0)
cout<<"在第"<<a<<"个节点"<<endl;
else
cout<<"查找的数不存在"<<endl;
return 0;
}
本人为初学者如果上述代码有不合理之处敬请读者指出。