【发布时间】:2023-03-26 20:40:01
【问题描述】:
这是我将数组 B 中的唯一元素合并到数组 A 中的代码。
例如:
输入:A={1, 3, 5, 7, 9},B={2, 4, 6, 9}
输出:A={1, 2, 3, 4, 5, 6, 7, 9}
但我在第 46 行遇到分段错误。我假设这是数组绑定问题,但无法弄清楚。有任何想法吗?
#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct{
ElemType data[MAXSIZE];
int length;
}SqList;
void CreateList(SqList *L, int n){
L->length=n;
printf("\ninput %d data: ", n);
int i;
for(i=0;i<n;i++)
scanf("%d", &L->data[i]);
}
void PrintList(SqList *L){
int i;
int n;
n=L->length;
printf("\noutput %d data: ", n);
for(i=0;i<n;i++)
printf("%d", L->data[i]);
}
ElemType GetElem(SqList *L,int i){
return L->data[i];
}
int LocateElem(SqList *L, ElemType e){
int i;
for(i=1;i<=L->length;i++){
if(L->data[i]==e){
return i;
break;
}
else return 0;
}
}
void ListInsert(SqList *L, ElemType e){
int n = L->length;
n++;
L->length=n;
L->data[n]=e; // Segmentation Fault Here !
}
void merge(SqList *La, SqList *Lb){
int i;
ElemType e;
for(i=0;i<Lb->length;i++){
e=GetElem(&Lb,i);
if(!LocateElem(&La,e))
ListInsert(&La,e);
}
}
int main(){
SqList La,Lb;
int n1,n2;
printf("\nInput number for La: ");
scanf("%d",&n1);
CreateList(&La,n1);
printf("\nInput number for Lb: ");
scanf("%d",&n2);
CreateList(&Lb,n2);
printf("Here is La:\n");
PrintList(&La);
printf("Here is Lb:\n");
PrintList(&Lb);
merge(&La,&Lb);
printf("Here is merged list:\n");
PrintList(&La);
return 0;
}
【问题讨论】:
-
编译你忽略警告
标签: c arrays segmentation-fault