标题:C语言学到单链表这里卡壳了,请好心人给我解释下,谢谢
只看楼主
fc176154001
Rank: 2
来 自:四川阆中
等 级:论坛游民
帖 子:87
专家分:96
注 册:2013-6-16
结帖率:100%
已结贴  问题点数:20 回复次数:3 
C语言学到单链表这里卡壳了,请好心人给我解释下,谢谢
c语言学习到单链表,下面这段代码是书上抄的,有几个疑问请好心人帮我讲解下,谢谢,
#include"stdio.h"
#include"stdlib.h"
struct list
{
    int data;
    struct list *next;
};
typedef struct list node;//这里为什么要定义typedef类型,不用他定义会有什么后果?
typedef node *link;
void main()
{
    link ptr,head;//这里的link是不是类似 int,float之类的一种自定义类型呢,当然我知道他不是关键字
    int num,i;
    ptr=(link)malloc(sizeof(node));
    head=ptr;
    printf("please in put 5 numble==>\n");
    for(i=0;i<5;i++)
    {
        scanf("%d",&num);
        ptr->data=num;
        ptr->next=(link)malloc(sizeof(node));这里为什么又要申请空间,是不是前面申请的空间用来放置data的数据,这个空间用来放置 struct list *next指针的数据呢?
        if(i==4)
            ptr->next=NULL;
        else
            ptr=ptr->next;//这里的ptr->next有没有明确指向那个位置,还是随便指向了一个位置而已呢?
            }
    ptr=head;
    while(ptr!=NULL)
    {
        printf("The value is==>%d\n",ptr->data);
        ptr=ptr->next;
    }
}
搜索更多相关主题的帖子: c语言学习 include please 关键字 
2013-09-09 23:04
fc176154001
Rank: 2
来 自:四川阆中
等 级:论坛游民
帖 子:87
专家分:96
注 册:2013-6-16
得分:0 
怎么没人看看我的啊,都要沉了,自己挽救一下

大神永远不能体会菜鸟们之间的惺惺相惜,
2013-09-09 23:26
陨灭
Rank: 2
等 级:等待验证会员
帖 子:44
专家分:65
注 册:2013-4-21
得分:20 
1.可以不定义,定义了只是用起方便
2.link是第九行typedef node *link;定义的数据类型,比如,原来定义node *a;就可以改成link a;
3.单链表本来就是一节连着一节,依靠前一节的指针指向下一节来连接,开始定义的结构体就是每一节的内容,这里申请空间就是新的一节,用于存放新的数据,这就是链表的好处,需要的时候申请,而不是数组那样一早申请了空间可能带来浪费
4.对于这一句,ptr=ptr->next;由于这一句 ptr->next=(link)malloc(sizeof(node));所以此时ptr->next这个指针指向的是新申请的节

1@w-h.win
2013-09-09 23:48
fc176154001
Rank: 2
来 自:四川阆中
等 级:论坛游民
帖 子:87
专家分:96
注 册:2013-6-16
得分:0 
谢谢

大神永远不能体会菜鸟们之间的惺惺相惜,
2013-09-09 23:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-420361-1-1.html




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

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