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