在这里插入图片描述
#include"iostream"
using namespace std;
#define MAXSIZE 50
typedef int ElemType;
typedef int status;
typedef struct//定义顺序表结构体
{
int length;//表当前长度
ElemType data[MAXSIZE];
}SeqList;
void display_Elem(SeqList* L)//输出表中元素
{
int j;
for (j = 1; j <= L->length; j++)//输出表中元素
{
cout << L->data[j - 1];
cout << endl;
}
}
void CreateList(SeqList* L)//实现表的赋值
{
int i;
cout << "请输入元素个数" << endl;
cin >> L->length;
cout << "请输入元素的值" << endl;
for(i = 1; i <= L->length; i++ )
{
cin>>L->data[i - 1];
}
}
status Get_Elem(SeqList* L, int i, ElemType* e);//把表中i位置的的元素传给e
status Insert_Elem(SeqList* L, int i, ElemType* e);//表中ii位置插入e
status delete_Elem(SeqList* L, int i, ElemType* e);删出表内i位置元素存在 e里
int main()
{
int j = 1;
SeqList list_one;//创建一个表对象
CreateList(&list_one);//是不是指针传递不太明白?
ElemType e;//测试得到表中i位置的元素
Get_Elem(&list_one, 4, &e);
cout << e << endl;
ElemType e1;//测试向表中i位置插入元素
int insert_loc;
cout << "请输入你需要往表中插入的元素" << endl;
cin >> e1;
cout << "请输入你需要往表中插入的元素位置" << endl;
cin >> insert_loc;
Insert_Elem(&list_one, insert_loc-1, &e1);
display_Elem(&list_one);//输出表中元素
ElemType e2;//测试删除表中i位置元素
int delete_loc;
cout << "请输入你需要删除的元素的位置" << endl;
cin >> delete_loc;
cout << endl;
delete_Elem(&list_one, delete_loc, &e2);
display_Elem(&list_one);//输出表中元素*/
}
status Get_Elem(SeqList* L, int i, ElemType* e)//把表中i位置的的元素传给e
{
if(i<1 || i>L->length || L->length == 0)
{
return 0;
}
*e = L->data[i - 1];
return 1;
}
status Insert_Elem(SeqList* L, int i, ElemType* e)//表中i位置插入e
{
int j;
if (i<1 || i>L->length || L->length == 0)//抛出异常
{
return 0;
}
for (j = 1; j <= (L->length - i + 1); j++)
{
L->data[L->length + 2 - j - 1] = L->data[L->length + 1 - j - 1];
}
L->data[i] = *e;
L->length += 1;
}
status delete_Elem(SeqList* L, int i, ElemType* e)//删出表内i位置元素存在 e里
{
int k = i;
if (L->length == 0)//空表抛出异常
{
return 0;
}
if (i<1 || i>L->length)//输入位序有错
{
return 0;
}
for (k = i;k< L->length;k++)
{
L->data[k - 1] = L->data[k];
}
*e = L->data[i - 1];
L->length--;//表长减1
}