return true; }
bool ListDelete(SqList *&L,int i,ElemType &e)//删除顺序表中的一个元素 {
int j;
if(i<1||i>L->length) return false; i--;
e = L->data[i];
for(j = i;j
void Sort(SqList *L)//对顺序表进行从小到大排序 {
int i,j;
ElemType temp;
for(i=0;i
for(j=0;j
if(L->data[j]>L->data[j+1]) {
temp=L->data[j];
L->data[j]=L->data[j+1]; L->data[j+1]=temp; } } } }
void MergeList(SqList *L,SqList *M,SqList *&N)//合并两个顺序表,及求出集合a,b的补集 {
InitList(N); ElemType x,y; int i=1,k=0,j=1;
while((i<=L->length)&&(j<=M->length)) {
GetElem(L,i,x); GetElem(M,j,y); if(x ListInsert(N,++k,x); ++i; } else if(x==y) { ListInsert(N,++k,x); ++i; ++j; } else { ListInsert(N,++k,y); ++j; } } while(i<=L->length) { GetElem(L,i++,x); ListInsert(N,++k,x); } while(j<=M->length) { GetElem(M,j++,y); ListInsert(N,++k,y); } } void jiao(SqList *L,SqList *M,SqList *&S)//求出 { InitList(S); ElemType x,y; int k=0,j,i; for(i=1;i<=L->length;i++) { GetElem(L,i,x); for(j=1;j<=M->length;j++) { GetElem(M,j,y); if(x==y) { ListInsert(S,++k,x); break; } } } } void chai(SqList *L,SqList *M,SqList *&T) { InitList(T); ElemType x,y; int k=0,j,i; for(i=1;i<=L->length;i++) { GetElem(L,i,x); for(j=1;j<=M->length;j++) { GetElem(M,j,y); if(x==y) { break; } } if(j>M->length){ ListInsert(T,++k,x); } } } int main() { SqList *L; SqList *M; SqList *N; SqList *S; SqList *T; ElemType e; printf(\顺序表的基本运算如下:\\n\ printf(\初始化顺序表L,M,初始化集合A,B\\n\ InitList(L); InitList(M); printf(\初始化集合A:依次采用尾插法插入c a e h元素\\n\ ListInsert(L,1,'c'); ListInsert(L,2,'a'); ListInsert(L,3,'e'); ListInsert(L,4,'h'); printf(\初始化集合B:依次采用尾插法插入f h b g d a元素\\n\ ListInsert(M,1,'f'); ListInsert(M,2,'h'); ListInsert(M,3,'b'); ListInsert(M,4,'g'); ListInsert(M,5,'d'); ListInsert(M,6,'a'); printf(\输出原集合A:\\n\ DispList(L); printf(\输出原集合B:\\n\ DispList(M); printf(\输出有序集合A\\n\ Sort(L); DispList(L); printf(\输出有序集合B\\n\ Sort(M); DispList(M); printf(\集合的并C\\n\ MergeList(L,M,N); DispList(N); printf(\集合的交C\\n\ jiao(L,M,S); DispList(S); printf(\集合差C\\n\ chai(L,M,T); DispList(T); printf(\释放顺序表L\\n\ DestroyList(L); return 0; } 四 实验结果:

