C++顺序表的基本操作
1.由a的n个元素建立顺序表
2.初始化顺序表
3.销毁顺序表
4.判断顺序表是否是空表,若为空返回TRUE,否则返回FALSE
5.求顺序表的长度
6.输出顺序表
6.在顺序表的第i个位置前,插入元素x,表满返回-1,成功返回1,无法插入返回0
7.获取顺序表的第i个元素的值,若第i个元素的值存在则将其赋值给m,返回TRUE,否则返回FALSE
8.按元素值查找,若在顺序表中查找到元素x,择返回x第一次出现的序号,否则返回0
9.删除顺序表的第i个元素,成功删除返回TRUE,没有成功删除返回FALSE
int const Maxsize = 40;
typedef int DateType;
typedef struct
{
DateType data[Maxsize];
int length;
}SeqList;
void Creat_SeqList(SeqList* L,DateType a[],int n )//由a的n个元素建立顺序表
{
int i;
L = (SeqList*)malloc(sizeof(SeqList));
for (i = 0; i < n;i++)
{
L->data[i] = a[i];
}
L->length = n;
}
SeqList* Init_SeqList(SeqList* L)//初始化顺序表
{
L = (SeqList*)malloc(sizeof(SeqList));
L->length = 0;
return L;
}
void Destroy_SeqList(SeqList* L)//销毁顺序表
{
free(L);
}
bool SeqList_IsEmpty(SeqList* L)//判断顺序表是否是空表,若为空返回TRUE,否则返回FALSE
{
return(L->length == 0);
}
int SeqList_Length(SeqList* L)//求顺序表的长度
{
return(L->length);
}
void Disp_SeqList(SeqList* L)//输出顺序表
{
int i;
for (i = 0; i < L->length; i++)
{
cout << L->data[i] << endl;
}
}
int Insert_SeqList(SeqList* L,int i,DateType x )//在顺序表的第i个位置前,插入元素x,表满返回-1,成功返回1,无法插入返回0
{
if (L->length==Maxsize)//表满无法插入
{
cout << "顺序表已满,无法插入" << endl;
return -1;
}
else if (i<0||i>L->length)//检查插入的位置是否正确
{
cout << "插入位置错误" << endl;
return 0;
} else//在第i个元素之前插入元素x
{
int j;
for (j = i; j < L->length;)
{
L->data[++j] = L->data[i++];
}
L->data[j] = x;
return 1;
}
}
bool Get_SeqList_Elem(SeqList* L,int i,DateType m)//获取顺序表的第i个元素的值,若第i个元素的值存在则将其赋值给m,返回TRUE,否则返回FALSE
{
if (i>0&&i<L->length)//成功找到第n个元素的值
{
m=L->data[i];
return true;
}
else
{
cout <<"找不到第" <<i<<"个元素"<< endl;
return false;
}
}
int Indexof_SeqList_Elem(SeqList* L, DateType x)//按元素值查找,若在顺序表中查找到元素x,择返回x第一次出现的序号,否则返回0
{
for (int i = 1; i < L->length;i++)
{
if (x==L->data[i])
{
return i+1;
}
}
cout << "没有查找到" << x << endl;
return 0;
}
bool Deleat_SeqList_Elem(SeqList* L,int i)//删除顺序表的第i个元素,成功删除返回TRUE,没有成功删除返回FALSE
{
if (i > 0 && i < L->length)
{
for (int j = i; j < L->length; j++)
{
L->data[j++] = L->data[++i];
}
return true;
}
else return false;
}