关于数据结构中线性表用c语言实现
这是一个有关线性表的摸索,为什么输出的结果中有一个数组总有一位数输出的是乱码
#include <stdio.h>
#include <stdlib.h>
struct arrary
{
int count;
int *arra;
}a,b;
int main()
{
int minnum=0,maxnum=0,i=0,j=0,difference=false;
int *c;
printf("请输入线性表a的总长度\n");
scanf("%d",&a.count);
a.arra=(int *)malloc(a.count);
printf("请输入线性表a的元素\n");
for(i=0;i<a.count;i++)
scanf("%d",&a.arra[i]);
printf("请输入线性表b的总长度\n");
scanf("%d",&b.count);
b.arra=(int *)malloc(b.count);
printf("请输入线性表b的元素\n");
for(i=0;i<b.count;i++)
scanf("%d",&b.arra[i]);
c=(int *)malloc(a.count);
printf("a.count=%d b.count=%d\n",a.count,b.count);
//printf("b2=%d\n",b.arra[2]);
for(i=0;i<a.count;i++)
{
c[i]=false;
}
for(i=0;i<a.count;i++)
{
printf("a[%d]=%d ",i,a.arra[i]);
}
printf("\n");
for(i=0;i<b.count;i++)
{
printf("b[%d]=%d ",i,b.arra[i]);
}
printf("\n");
for(i=0;i<a.count;i++)
{
for(j=0;j<b.count;j++)
{
printf("***37***\n");
printf("i=%d j=%d\n",i,j);
if(a.arra[i]==b.arra[j])
{
difference=true;
printf("***40***\n");
break;
}
}
if(!difference)
{
c[i]=a.arra[i];
//printf("the same number is %d\n ",a.arra[i]);
}
}
for(i=0;i<a.count;i++)
{
if(c[i])
printf("%d ",c[i]);
}
printf("\n");
return 0;
}
输出结果是
同时b数组不能输入5这个数 数据结构 线性表 c语言 乱码
[解决办法]
a.arra=(int *)malloc(a.count);
改成
a.arra=(int *)malloc((sizeof(int)) * (a.count));
另外中间可能有回车符在缓冲区里,可以吃掉先,然后再输入有效数据