#include<iostream>
#include<algorithm>
using namespace std;
#define MAX 500 //宏定义方式定义符号常量 比较少用
const int maxlength=500; //const定义常变量 比较常用
typedef struct elemtype{
char a[30];
int num;
int score;
}elemtype;
typedef struct sqList{
elemtype *elem;
int length;
int size;
}sqList;
void ErrorMessage(char *s)
{
cout<<s<<endl;
exit(1);
}
//Init
void InitList(sqList &L,int maxlength,int size)
{
L.elem = new elemtype[size];
L.length = 0;
L.size = maxlength;
}
//Find
int Locate(sqList L,elemtype e)
{
//查找指定元素在线性表中的位序
int i = 0;
elemtype *p;
p = L.elem ;
// while( *p++ != e&& i <L.length ) i ++;
if(i < L.length)
return i+1;
else
return 0;
}
//Insert
void Insert (sqList &L ,int i,elemtype e)
{
//在线性表L的第i个元素之前插入新的元素
elemtype *p;
elemtype *q ;
q = &(L.elem[i]);
if(i >= L.length ) ErrorMessage("i值不合法");
for( p = &(L.elem[L.length - 1]); p >= q; --p) *(p + 1) = *p; //p 和 q 加上*号代表元素,不加则代表位序
*q = e;
++L.length;
}
//delete
void Delete(sqList &L,int i,elemtype e)
{
//在顺序线性表中删除第i个元素,并用e返回其值
if(i < 0 || i >= L.length) ErrorMessage("i值不合法!");
elemtype *q,*p;
p = &(L.elem[i - 1]);
e = *p;
for(++ p;p <= q;++ p) *(p-1) = *p;
-- L.length ;
}
//destroy
void Destroy(sqList &L)
{
delete [] L.elem;
L.length = 0;
L.size = 0;
}