| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 276 人关注过本帖
标题:动态链表一个不理解的地方。
只看楼主 加入收藏
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
结帖率:25%
收藏
 问题点数:0 回复次数:1 
动态链表一个不理解的地方。
# include <stdio.h>
# include <stdlib.h>

struct Stu
{
    int num;
    double score;
    Stu * next;
};

int main(void)
{
    void print(Stu * q);
    int n;
    Stu * p1, * p2, * head=NULL;
    p1=(Stu *)malloc(sizeof(Stu));
    scanf("%d,%lf", &p1->num, &p1->score);
    for (n=0; (p1->num)!=0;)
    {
        ++n;
        if (n==1)
            head=p1;
        else
            p2=p1;
        p1=(Stu *)malloc(sizeof(Stu));
        scanf("%d,%lf", &p1->num, &p1->score);
        if ((p1->num)!=0)
            p2->next=p1;//这里由于我的疏忽,没有为p2分配一个动态存储空间,但是发现运行后第一次输入num,score竟然没事,为什么?按理说应该会出错的吧?
        else
            p2->next=NULL;
    }
    print(head);

    return 0;
}

void print(Stu * q)
{
    Stu * mo=q;
    for (;(mo->next)!=NULL; mo=mo->next)
        printf("%d, %lf", mo->num, mo->score);

}
搜索更多相关主题的帖子: include double 动态 
2015-03-23 10:26
n0noper
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:39
专家分:159
注 册:2015-3-21
收藏
得分:0 
运行截图来看看。正常来说,编译器会自动初始化你的结构体变量内存区域,你直接赋值是非法的。

不骄不躁,不卑不亢;虚怀若谷,宠辱不惊。
2015-03-23 12:17
快速回复:动态链表一个不理解的地方。
数据加载中...
 
   



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

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