| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 752 人关注过本帖
标题:c语言线性链表引发的数据思考。。。结构体malloc。求解
只看楼主 加入收藏
关鱼
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-9-13
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
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版本运行结束后崩溃
搜索更多相关主题的帖子: c语言 结构体 
2011-09-18 10:48
关鱼
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-9-13
收藏
得分:0 
还有啊,在这怎么高亮代码啊。。
2011-09-18 10:50
nextleave
Rank: 2
等 级:论坛游民
帖 子:52
专家分:92
注 册:2011-9-12
收藏
得分:10 
楼主早越界访问了.别说结果错了,就是结果对了也是错的.至于为什么出现这种结果而不是别的结果,还在思索中.
2011-09-18 11:40
关鱼
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-9-13
收藏
得分:0 
回复 3楼 nextleave
是啦,刚问别人咯,终于找到一个致命错误,
a=(seqlist) malloc (sizeof(seqlist)),有错
sizeof(seqlist)为4个字节,应该为sizeof(list)
seqlist只是个指针
2011-09-18 16:43
mengcan555
Rank: 4
等 级:业余侠客
帖 子:104
专家分:253
注 册:2011-9-17
收藏
得分:10 
不是必须用 malloc,malloc 是在运行时才分配内存,且是需要多少分多少,其他不用 malloc的变量时编译时就分配内存,相比之下malloc更好,但是用完要手动free()来释放内存
2011-09-18 22:03
快速回复:c语言线性链表引发的数据思考。。。结构体malloc。求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026531 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved