为什么没有输出结果
#include
#include
#define MaxSize 100
typedef int ElemType;
typedef struct
{
int data[MaxSize];
int length;
}SqList;
//初始化线性表
void InitList(SqList *&L)
{
L->length=0;
}
//创建顺序表
void CreatList(SqList *L)
{
int n, len, i;
printf("输入顺序表的长度:");
scanf("%d", &len);
L->length = len;
printf("输入顺序表的元素:");
for (i=0;iscanf("%d",&n);
L->data[i]=n;
}
}
//3、顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中。
void UnioList(SqList *LA,SqList *LB,SqList *&LC)
{
int i,j,k;
for(k=0;klength;k++){
LC->data[LC->length]=LA->data[k];
LC->length++;
}
for(i=0;ilength;i++){
for(j=0;ilength;j++){
if(LB->data[i]!=LA->data[j]){
LC->data[LC->length]=LB->data[i];
LC->length++;
}
}
}
}
//输出顺序表
void OutList(SqList* L)
{
int i;
for (i=0;ilength;i++)
printf("%d ",L->data[i]);
printf("\n\n");
}
int main()
{
SqList L1,L2,LA,LB,L;
SqList* LC=&L;
ElemType x;
printf("顺序表LA:\n");
CreatList(&LA);
printf("顺序表LB:\n");
CreatList(&LB);
printf("-------顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中-------\n");
UnioList(&LA,&LB,LC);
printf("LA和LB的并集:");
OutList(LC);
return 0;
}
void UnioList(SqList *LA,SqList *LB,SqList *&LC) 函数算法有错误,循环因子错误,还有表 L 未初始化等,修改处见注释,供参考:
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{
int data[MaxSize];
int length;
}SqList;
//初始化线性表
void InitList(SqList *&L)
{
L->length=0;
}
//创建顺序表
void CreatList(SqList *L)
{
int n, len, i;
printf("输入顺序表的长度:");
scanf("%d", &len);
L->length = len;
printf("输入顺序表的元素:");
for (i=0;i<len;i++)
{
scanf("%d",&n);
L->data[i]=n;
}
}
//3、顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中。
void UnioList(SqList *LA,SqList *LB,SqList *&LC)
{
int i,j,k,flg; //修改
for(k=0;k<LA->length;k++){
LC->data[LC->length]=LA->data[k];
LC->length++;
}
for(i=0;i<LB->length;i++){
for(j=0,flg=0;j<LA->length;j++){//for(j=0,flg=0;i<LA->length;j++) i<LA->length; i错误
if(LB->data[i]==LA->data[j]){//if(LB->data[i]!=LA->data[j])
flg = 1; //算法修改
break; //修改
}
}
if(!flg){ //修改
LC->data[LC->length]=LB->data[i];
LC->length++;
}
}
}
//输出顺序表
void OutList(SqList* L)
{
int i;
for (i=0;i<L->length;i++)
printf("%d ",L->data[i]);
printf("\n\n");
}
int main()
{
SqList L1,L2,LA,LB,L;
SqList* LC=&L;
InitList(LC); //初始化顺序表 L 修改
ElemType x;
printf("顺序表LA:\n");
CreatList(&LA);
printf("顺序表LB:\n");
CreatList(&LB);
printf("-------顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中-------\n");
UnioList(&LA,&LB,LC);
printf("LA和LB的并集:");
OutList(LC);
return 0;
}
LC没有调用初始化函数,导致length变量初始不是0