#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#define listinitsize 5//设集合初始大小为5
#define listincrement 5//设集合迭加大小为5
#define elemtype int//定义集合中元素为整形
#define status int
#define overflow -1
#define ok 1
#define error 0
int i,j,k;
typedef struct
{
elemtype *elem;
int length;
int listsize;
}sqList;
/****************************************************/
status Initlist_sq(sqList **L)
{
(*L)=(sqList*)malloc(2);
(*L)->elem=(elemtype*)malloc(listinitsize*sizeof(elemtype));
if(!(*L)->elem)exit(overflow);
(*L)->length=0;
(*L)->listsize=listinitsize;
return ok;
}//构造一个空表
status Initelement(sqList *L,int x,elemtype e)
{
elemtype *newbase;
int *p,*q;
if(x<1||x>L->length+1)return(error);
if(L->length>=L->listsize)
{
newbase=(elemtype*)realloc(L->elem,(L->listsize+listincrement)*sizeof(elemtype));
if(!newbase)exit(overflow);
L->elem=newbase;
L->listsize+=listincrement;
}
q=&(L->elem[x]);
for(p=&(L->elem[L->length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
L->length++;
return ok;
}//将元素e插入到第i个位置
/*******************************************************************/
status Inputelem(sqList *L,int n)
{
int i;
elemtype *newbase;
if(n<1)return(error);
if((n*sizeof(elemtype))>=L->listsize)
{
newbase=(elemtype*)realloc(L->elem,(L->listsize)*sizeof(elemtype));
if(!newbase)exit(overflow);
L->elem=newbase;