顺序表的操作(未完待续)

#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;
}