您的位置:首页 > 编程语言 > C语言/C++

C++顺序表的基本操作

2015-09-14 08:56 302 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: