c语言线性链表引发的数据思考。。。结构体malloc。求解
/*很简单的两个数组合并,把a,b长度标出来,长度和作为c的长度,再输入a,b内容到c,算法 */#define MAXSIZE 1024
typedef int DATATYP;
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct
{
DATATYP data[MAXSIZE];
int last;
} list, *seqlist ;
seqlist Initlist()
{
//建立线性表函数,以-1结尾
seqlist a;
int count=0;
int tempnum;
//创建数组,以-1结束
printf("Please Type in scores ended with -1:\n");
a=(seqlist) malloc (sizeof(seqlist));
scanf("%d",&tempnum);
while ( tempnum != -1)
{
a->data[count]=tempnum;
count++;
//统计数组内数字个数
scanf("%d",&tempnum);
}
a->last=count;
return a;
}
void main()
{
DATATYP i,k;
seqlist a, b, comb;
DATATYP toget;
a=Initlist();
b=Initlist(); //创建数组a,数组b
toget=a->last+b->last; //toget为a的长度和b的长度和,作为数组comb的长度
comb=(seqlist)malloc(sizeof(seqlist));//这里必须开辟空间吗?
comb->last=toget;
/*先将a传给comb,再将b传给comb*/
for(i=0;i<a->last;i++)
comb->data[i]=a->data[i];
for(k=0;i<toget;k++,i++)
comb->data[i]=b->data[k];
for(i=0;i<comb->last;i++)
printf("%-4d",comb->data[i]);
//输出数组comb
putchar('\n');
}
//几个疑问
//使用结构体,对结构体的元素赋值先必须malloc吗
//为什么有的测试数据可以正确显示,而别的不行
//如输入1 2 3 4 7 -1 3 4 6 8 1 -1 ,运行结果为1 2 3 4 247005357 3 4 6 8 1而调试时候测试这数据没问题
//调试的时候用debug版本可行而用release版本运行结束后崩溃