C++顺序表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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<<"链表为空"<
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;i
m_length--;
return true;
}
bool SetElement(int index,T e)//设置元素
{
if(index>m_length)
cout<<"该位置已超出可设置范围"<
{
m_element[index]=e;
if(index==m_length)
m_length++;
return true;
}
return false;
}
void Traverse(void (*visit)(T e))//遍历元素
{
for(int i=0;i
cout<
~TLinearlist()//析构函数的定义和实现
{
delete []m_element;
}
};
源文件:
#include
#include"aaaaaa.h"
void visitchar(char c)//输出函数的实现
{
cout<
void menu()//菜单函数
{
cout<<"***** 1、是否为空 *********"<
int main()
{
int n,m;
cout<<"请输入表的最大长度,表的实际长度:"<
TLinearlist
for(int z=0;z
char E;
cout<<"请输入元素"<
if(list.SetElement(z,E))
cout<<"输入成功"<
cout<<"输入失败"<
menu();
cout<<"请输入操作
序号(0~9)"<
while(m!=0)
{
if(m<0||m>9)
{
cout<<"请重新输入(0~9)"<
}
switch(m)
{
case 1:
{
if(list.IsEmpty())
cout<<"该表为空"<
cout<<"该表不为空"<
}
case 2:
{
if(list.IsFull())
cout<<"该表为满"<
cout<<"该表不为满"<
}
case 3:
{
cout<
}
case 4:
{
char A;
cout<<"请输入该元素:";
cin>>A;
cout<
}
case 5:
{
int s;
char B;
cout<<"请输入获取元素的位置:";
cin>>s;
if(list.GetElement(s,B))
{
cout<<"获取成功";
cout<
else
cout<<"获取失败"<
}
case 6:
{
int x;
char C;
cout<<"请输入插入元素的位置:"<
cout<<"请输入插入的元素:"<
if(list.Insert(x,C))
cout<<"插入成功"<
cout<<"插入失败"<
}
case 7:
{
int y;
char D;
cout<<"请输入删除元素的位置:";
cin>>y;
if(list.Delete(y,D))
cout<<"删除成功"<
cout<<"删除失败"<
}
case 8:
{
int z;
char E;
cout<<"请输入设置元素的位置:";
cin>>z;
cout<<"请输入设置的元素:";
cin>>E;
if(list.SetElement(z,E))
cout<<"设置成功"<
cout<<"设置失败"<
}
case 9:
{
list.Traverse(visitchar);
break;
}
case 0:
return 0;
}
menu();
cout<<"请输入操作序号(0~9)"<
}
return 0;
}