| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 912 人关注过本帖
标题:请教有关链表的一个问题!
只看楼主 加入收藏
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
结帖率:73.68%
收藏
已结贴  问题点数:20 回复次数:5 
请教有关链表的一个问题!
  如题,有关这段代码:q=(struct STUDENT *)malloc(sizeof(struct STUDENT));      
 声明下,前面有建立了 struct STUDENT 的结构体,请问这段代码有什么含义,我特别想知道这段代码是如何执行的,越详细越好,Thanks!


相关代码(可能存在错误):



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct STUDENT
{
    int data;
    struct STUDENT *next;
};
int main()
{
    struct STUDENT *head,*p,*q;
    int x;
    head=(struct STUDENT *)malloc(sizeof(struct STUDENT));
    head->next=NULL;
    p=head;
    do
    {
        printf("输入数据:");  //显示输入数据
        scanf("%d",&x);  //赋值给x
        if(x==0)  //判断x是否等于0
        break;  //符合判断x=0执行结束break
        q=(struct STUDENT *)malloc(sizeof(struct STUDENT));  //
        p->next=q;
        p=q;
        q->next=x;
        q->next=NULL;
    }
    while(1);
    for( p=head->next ; p!=NULL ; p=p->next )
    {
        printf("%d\n",p->data);
    }
    return 0;
}

[此贴子已经被作者于2015-12-13 21:31编辑过]

搜索更多相关主题的帖子: include 结构体 如何 
2015-12-13 21:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
什么叫如何执行?

授人以渔,不授人以鱼。
2015-12-13 21:58
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
收藏
得分:0 
回复 2楼 TonyDeng
额,我不太懂这段代码的意思,请讲解一下!

I'm a new comer
2015-12-13 22:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
就是从堆内存中申请一块空间,返回指向这块空间的指针啊。具体怎么申请、怎么分配,不用管。

授人以渔,不授人以鱼。
2015-12-13 22:10
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:10 
q=(struct STUDENT *)malloc(sizeof(struct STUDENT));


注意,malloc()函数的返回值默认是void类型的,所以使用前必须进行强制类型转换.

后面的就是先求出struct STUDENT的空间大小,然后申请这么大的一块空间.

代码测试环境:  WinXP+C-Free5.0.
2015-12-13 22:14
钱少
Rank: 2
等 级:论坛游民
威 望:1
帖 子:7
专家分:11
注 册:2015-12-14
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct STUDENT
{
    int data;
    struct STUDENT *next;
};
int main()
{
    struct STUDENT *head,*p,*q;
    int x;
    int i;
    head=(struct STUDENT *)malloc(sizeof(struct STUDENT));
    head->next=NULL;
    p=head;
   
     for(i=0;i<6;i++)
     {
         
          printf("输入数据:");  //显示输入数据
        scanf("%d",&x);  //赋值给x
        if(x==0)  //判断x是否等于0
        break;  //符合判断x=0执行结束break
        q=(struct STUDENT *)malloc(sizeof(struct STUDENT));
        q->data=x;
        q->next=NULL;
        p->next=q;
        p=q;
         
     }
   
                       
    for( p=head->next ; p!=NULL ; p=p->next )
    {
        printf("%d\n",p->data);
    }
    return 0;
}
2015-12-14 23:26
快速回复:请教有关链表的一个问题!
数据加载中...
 
   



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

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