三金的代码库 2020-07-30 15:54 采纳率: 0%
浏览 589

想问malloc初始化为0吗

今天写一个升序链表(输入0表示结束)的时候发现这么写,输出第一个数永远为0;
比如输入 1 3 2 0,输出就是0123
想问问大佬为什么,小白一枚
代码如下

#include"doublelist.h"
void add_node(dou_node *first,dou_node *last,dou_node *p)
{
    dou_node *pk=first;
    dou_node *pr=NULL;

    if(NULL==first)
    {
        first=p;
        last=p;
        printf("---\n");
        return ;
    }


    while(pk)
    {
        if(pk->data>p->data)
            break;
        pr=pk;
        pk=pk->next;
    }
    if(pk)
    {
        if(pk==first)
        {
            first=p;
            p->next=pk;
            pk->prev=p;
        }
        else
        {
            pr->next=p;
            p->prev=pr;
            p->next=pk;
            pk->prev=p;
        }
    }
    else
    {
        pr->next=p;
        p->prev=pr;
        last=p;
    }
}

dou_node* creat_dou_list()          
{
    int d;
    dou_node* first=(dou_node *)malloc(sizeof(*first));     //问题所在???
    dou_node* last=(dou_node *)malloc(sizeof(*last));
    dou_node* p=NULL;
    while(1)
    {
        scanf("%d",&d);
        if(d==0)
        {
            break;
        }

        dou_node* p=(dou_node *)malloc(sizeof(*p));
        p->data=d;
        p->next=NULL;
        p->prev=NULL;

        add_node(first,last,p);
    }
    return first;
}

void print_list(dou_node *p)
{
    if(NULL==p)
        return ;
    //p=p->next;        
    while(p)
    {
        printf("%d",p->data);
        p=p->next;
    }
    printf("\n");
}
  • 写回答

2条回答 默认 最新

  • threenewbee 2020-07-30 18:17
    关注

    malloc不会初始化内存的内容,需要用memset去清除

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器