#include
#include
#include
using namespace std;
#define INIT_SIZE 80
#define ADD_SIZE 10
typedef struct
{
char name[8];
float score;
} ElemType; //元素
typedef struct
{
ElemType *elem;//动态数组首地址
int length;//表长:实际元素个数
int listsize;//表规模:最大容量元素个数
} SqList;//顺序表
bool InitList_Sq(SqList &L)
{
//分配内存空间 初始化各参数
L.elem = (ElemType *)malloc(INIT_SIZE*sizeof(ElemType));
L.length = 0;
L.listsize = INIT_SIZE;
return true;
}
//注:第i个元素 实际位置为i-1
bool ListInsert_Sq(SqList &L,int i,ElemType e)
{
//判断位置是否合法
//注:L.length+1也可以,表示插入到最后
if (i>=1&&i<=L.length+1)
{
if (L.length >= L.listsize) //空间已用完,插入前需要再追加一批空间
{
L.elem = (ElemType *)realloc(L.elem,(L.listsize+ADD_SIZE)*sizeof(ElemType));
L.listsize += ADD_SIZE;//更新表的规模
}
//插入操作:从后往前 依次"右移"; 然后插入
for(int j=L.length-1; j>=i-1; j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1] = e;//插入
L.length++;//表长加1
return true;
}
else
{
cout<<"插入操作 i不合法"<=0&&i<=L.length-1)
{
e = L.elem[i-1];
//删除操作:从前往后 依次"左移"
for(int j=i-1; j<=L.length-2; j++)
{
L.elem[j] = L.elem[j+1];
}
L.length--;//表长减1
return true;
}
else
{
cout<<"删除操作 i不合法"<=0&&i<=L.length-1)
{
e = L.elem[i-1];
return true;
}
else
{
cout<<"删除操作 i不合法"<