青青枫叶 2022-03-11 11:00 采纳率: 100%
浏览 24
已结题

A并B代码,最后一步求并集无法输出,求帮助!

#include<stdio.h>
#define maxsize 100
typedef int ElemType;
typedef struct
{
ElemType elem[maxsize];
int last;
}SeqList;
void InitList(SeqList *L,int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&L->elem[i]);
L->last=n;
}
ElemType GetData(SeqList L,int i)
{
for(i=0;i<L.last;i++)
return L.elem[i-1];

}
int Length(SeqList L)
{
return L.last;
}
void Display(SeqList L)
{
for(int i=0;i<L.last;i++)
{
printf("%d ",L.elem[i]);
}
printf("\n");
}

int Locate(SeqList L,ElemType e)
{
int i;
while((i<=L.last)&&(L.elem[i]!=e))
i++;
if(i<=L.last)
return (i+1);
else
return(-1);
}

void InsertList(SeqList *l,int pos,ElemType e)
{
int i;
for(i=l->last;i>=pos;i--)
l->elem[i]=l->elem[i+1];
l->elem[pos]=e;
l->last++;

}

void Union(SeqList *La,SeqList Lb)
{
int i;
ElemType e;
int lenA=Length(*La);
int lenB=Length(Lb);
for(i=1;i<=lenB;i++)
{
e=GetData(Lb,i);
if(0==Locate(*La,e))
{
InsertList(La,lenA,e);
lenA++;
}
}
}

void main()
{
SeqList LA,LB;
InitList(&LA,3);
Display(LA);
InitList(&LB,4);
Display(LB);
Union(&LA,LB);
Display(LA);
}

img

  • 写回答

3条回答 默认 最新

  • 关注

    代码中的错误挺多的,需要修改的地方在代码中都注释了,直接从代码中看吧。
    修改后运行效果:

    img

    代码修改如下:

    #include<stdio.h>
    #define maxsize 100
    typedef int ElemType;
    typedef struct
    {
        ElemType elem[maxsize];
        int last;
    }SeqList;
    void InitList(SeqList* L, int n)
    {
        int i;
        for (i = 0; i < n; i++)
            scanf("%d", &L->elem[i]);
        L->last = n;
    }
    ElemType GetData(SeqList L, int i)
    {
        //for (i = 0; i < L.last; i++)
        if (i <= L.last)//这里是if语句
            return L.elem[i - 1];
        else
            return -1;
    
    }
    int Length(SeqList L)
    {
        return L.last;
    }
    void Display(SeqList L)
    {
        for (int i = 0; i < L.last; i++)
        {
            printf("%d ", L.elem[i]);
        }
        printf("\n");
    }
    
    int Locate(SeqList L, ElemType e)
    {
        int i=0;
        while (( i < L.last) && (L.elem[i] != e))
            i++;
        if (i < L.last) //这是<不是<=
            return (i + 1);
        else
            return(-1);
    }
    
    void InsertList(SeqList* l, int pos, ElemType e)
    {
        int i;
        if (pos == l->last)
        {
            l->elem[pos] = e;
            l->last++;
        }
        else
        {
            for (i = l->last; i >= pos; i--)
                l->elem[i] = l->elem[i - 1]; //这里是i-1不是i+1
            l->elem[pos - 1] = e; //这里是pos-1,不是pos
            l->last++;
        }
        
    
    }
    
    void Union(SeqList* La, SeqList Lb)
    {
        int i;
        ElemType e;
        int lenA = Length(*La);
        int lenB = Length(Lb);
        for (i = 1; i <= lenB; i++)
        {
            e = GetData(Lb, i);
            if (-1 == Locate(*La, e)) //这里是-1,不是0
            {
                InsertList(La, lenA, e);
                lenA++;
            }
        }
    }
    
    int main()
    {
        SeqList LA, LB;
        InitList(&LA, 3);
        Display(LA);
        InitList(&LB, 4);
        Display(LB);
        Union(&LA, LB);
        Display(LA);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 创建了问题 3月11日

悬赏问题

  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示