C++顺序表

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

头文件:
#include
template
class TLinearlist
{
private:
int m_maxsize;
int m_length;
T *m_element;
public:
TLinearlist(int maxsize)//构造函数
{
m_maxsize=maxsize;
m_length=0;
m_element=new T[maxsize];
}
bool IsEmpty()//是否为空
{
if(m_length==0)
return true;
else
return false;
}
bool IsFull()//是否为满
{
if(m_length==m_maxsize)
return true;
else
return false;
}
int GetLength()//获取表的长度
{
return m_length;
}
int Search(T e)//查找函数
{int i;
if(m_length==0)
{cout<<"链表为空"<else
for(i=0;i{
if(m_element[i]==e)
return i;
}
if(i==m_length) //找不到
cout<<"没有此元素!";return -1;
}

bool GetElement(int index,T &e)//获取元素
{
if(m_length==0||index>=m_length)
return false;
else
e=m_element[index];
return true;
}

bool Insert(int index,T e)//插入元素
{
if(m_length==m_maxsize)
return false;
if(index>=0&&index<=m_length)
{
for(int i=m_length-1;i>=index;i--)
m_element[i+1]=m_element[i];
m_element[index]=e;
m_length++;
return true;
}
return false;
}

bool Delete(int index,T &e)//删除元素
{
if(m_length==0)
return false;
if(index>m_length||index<0)
return false;
e=m_element[index];
for(int i=index;im_element[i]=m_element[i+1];
m_length--;
return true;
}

bool SetElement(int index,T e)//设置元素
{
if(index>m_length)
cout<<"该位置已超出可设置范围"<if(index>=0&&index<=m_length)
{
m_element[index]=e;
if(index==m_length)
m_length++;
return true;
}
return false;
}

void Traverse(void (*visit)(T e))//遍历元素
{
for(int i=0;ivisit(m_element[i]);
cout<}

~TLinearlist()//析构函数的定义和实现
{
delete []m_element;
}
};
源文件:
#include
#include"aaaaaa.h"
void visitchar(char c)//输出函数的实现
{
cout<}

void menu()//菜单函数
{
cout<<"***** 1、是否为空 *********"<cout<<"***** 2、是否为满 *********"<cout<<"***** 3、表的长度 *********"<cout<<"***** 4、查找函数 *********"<cout<<"***** 5、获取元素 *********"<cout<<"***** 6、插入元素 *********"<cout<<"***** 7、删除元素 *********"<cout<<"***** 8、设置元素 *********"<cout<<"***** 9、遍历函数 *********"<cout<<"***** 0、退出系统 *********"<}

int main()
{
int n,m;
cout<<"请输入表的最大长度,表的实际长度:"<cin>>n>>m;
TLinearlist list(n);
for(int z=0;z{
char E;
cout<<"请输入元素"<cin>>E;
if(list.SetElement(z,E))
cout<<"输入成功"<else
cout<<"输入失败"<}
menu();
cout<<"请输入操作

序号(0~9)"<cin>>m;
while(m!=0)
{
if(m<0||m>9)
{
cout<<"请重新输入(0~9)"<cin>>m;
}
switch(m)
{
case 1:
{
if(list.IsEmpty())
cout<<"该表为空"<else
cout<<"该表不为空"<break;
}
case 2:
{
if(list.IsFull())
cout<<"该表为满"<else
cout<<"该表不为满"<break;
}
case 3:
{
cout<break;
}
case 4:
{
char A;
cout<<"请输入该元素:";
cin>>A;
cout<break;
}
case 5:
{
int s;
char B;
cout<<"请输入获取元素的位置:";
cin>>s;
if(list.GetElement(s,B))
{
cout<<"获取成功";
cout<}
else
cout<<"获取失败"<break;
}
case 6:
{
int x;
char C;
cout<<"请输入插入元素的位置:"<cin>>x;
cout<<"请输入插入的元素:"<cin>>C;
if(list.Insert(x,C))
cout<<"插入成功"<else
cout<<"插入失败"<break;
}
case 7:
{
int y;
char D;
cout<<"请输入删除元素的位置:";
cin>>y;
if(list.Delete(y,D))
cout<<"删除成功"<else
cout<<"删除失败"<break;
}
case 8:
{
int z;
char E;
cout<<"请输入设置元素的位置:";
cin>>z;
cout<<"请输入设置的元素:";
cin>>E;
if(list.SetElement(z,E))
cout<<"设置成功"<else
cout<<"设置失败"<break;
}
case 9:
{
list.Traverse(visitchar);
break;
}
case 0:
return 0;
}
menu();
cout<<"请输入操作序号(0~9)"<cin>>m;
}
return 0;
}


相关文档
最新文档