满意答案
add609377
2013.09.10
采纳率:43% 等级:12
已帮助:12819人
你提到的“奇怪错误”是由于你的exit宏和函数重名了,所以预处理器会把程序中的exit用-1代替,所以出错。
另外,你的合并函数也是错误的,无法达到要求,整个程序修改如下:
//---------------------------------------------------------------------------
#include
#include //注意这里,exit()函数要用到这个文件,这个文件已经包含了malloc()等函数的声明
#define OK 1
#define LIST_INIT_SIZE 100
#define OVERFLOW 0
#define EXIT -2 //************注意这里
typedef int ElemType;
typedef int Status;
typedef struct {
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList *L)
{ L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem) exit(OVERFLOW);
L->length=0;
L->listsize=LIST_INIT_SIZE;
return OK;
}
void Create_Sq(SqList *L)
{ int i,n;
printf("创建一个有序表:\n");
printf("输入有序表中元素的个数:");
scanf("%d",&n);
L->length=n;
for(i=0;i
printf("输入第%d个元素的值:",i+1);
scanf("%d",&L->elem[i]);
printf("\n");
}
}
void Disp_Sq(SqList *L) //************注意这里
{ int i,n;
n=L->length;
for(i=0;i
printf("%5d",L->elem[i]);
printf("\n");
}
void Combine(SqList *la,SqList *lb) //************注意这里,此函数被重新编写
{
ElemType *pa=la->elem,*pb=lb->elem ;
int i,j,k,len_a=la->length,len_b=lb->length;
if ((la->elem=malloc((len_a+len_b)*sizeof(ElemType)))==NULL) exit(OVERFLOW);
for (k=i=j=0; i
if (pa[i]elem[k++]=pa[i++];
else la->elem[k++]=pb[j++];
}
while (i
la->elem[k++]=pa[i++];
while (j
la->elem[k++]=pb[j++];
la->length=k;
la->listsize=k;
free(pa);
}
void main()
{SqList L1,L2; InitList_Sq(&L1); InitList_Sq(&L2); Create_Sq(&L1); Disp_Sq(&L1); printf("\n"); Create_Sq(&L2); Disp_Sq(&L2); //************注意这里 printf("\n"); Combine(&L1,&L2); Disp_Sq(&L1); //************注意这里 }
//---------------------------------------------------------------------------
10分享举报