标题:我想问这个for循环语法对不, 在试卷上看到 看不懂
只看楼主
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
得分:0 
回复 19楼 林月儿
void LinkList(int a[],int len)
{
    head=(Node*)malloc(sizeof(Node));
    Node *h=head;
    for(int i=0;i<len;i++)
    {
        Node *newNode=(Node*)malloc(sizeof(Node));
        newNode->data=a[i];
        newNode->next=NULL;
        h->next=newNode;
        h=h->next;
    }
    h=NULL;
}
帮我解释一下这段代码 好么 这是你写的  我看的不太懂  特别是后面那里

不要不要的。。。
2015-09-14 16:35
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
程序代码:
void LinkList(int a[],int len)
{
    head=(Node*)malloc(sizeof(Node));            //为头结点申请内存
    Node *h=head;                                //声明结点h赋值为头结点
    for(int i=0;i<len;i++)                        //循环,作用为采用尾插法建立链表
    {
        Node *newNode=(Node*)malloc(sizeof(Node));  //为新结点申请内存
        newNode->data=a[i];                            //新结点的数据域赋值为a[i]
        newNode->next=NULL;                            //新结点指针域为空
        h->next=newNode;                               //h指向新结点,或者说h的指针域存放新结点地址
        h=h->next;                                       //h赋值为新结点,或者说遍历到下一个结点以保证每次循环到此处前h是链表尾结点等价于h=newNode;
    }
    h=NULL;
}  

剑栈风樯各苦辛,别时冰雪到时春
2015-09-14 17:45
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
得分:0 
加油

仰望星空...........不忘初心!
2015-09-14 17:47
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
回复 23楼 Susake
谢谢你啊

剑栈风樯各苦辛,别时冰雪到时春
2015-09-14 17:50
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
得分:0 
回复 22楼 林月儿
呃。。。。。。还是不太懂    head 头指针  是指向头节点的  那就是说头指针是在外面的 不是存放在头节点的指针域里的咯 是么??  而头节点的指针域里面存放的是下一个节点的地址   我这样理解对么  ???

不要不要的。。。
2015-09-14 21:27
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
得分:0 
回复 22楼 林月儿
我好像又看懂了一点  哈哈   之所以h->next=newNode;  h=h->next;
是因为这里是在for循环里的  不断的插入新节点 和对他的数据域赋值  从而保证了h是等于newnode的, 而h->next是等于下一个新节点的指针域的  是么  理解有错么  ??
哦哦 你怎么有换头像了  很漂亮啊  我还想问你这是不是你呢  

不要不要的。。。
2015-09-14 21:36
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
以下是引用露营地在2015-9-14 21:27:59的发言:

呃。。。。。。还是不太懂    head 头指针  是指向头节点的  那就是说头指针是在外面的 不是存放在头节点的指针域里的咯 是么??  而头节点的指针域里面存放的是下一个节点的地址   我这样理解对么  ???

差不多,只是数据域没存放数据,也不算放在外面拉
头结点是否存放数据是看你的选择,有时需要在头结点前面增加结点,这时为了代码处理一致则需要
头结点不存放数据,从第二个结点开始存放数据。遍历链表也是从第二个结点,此时第二结点(好像是叫首元结点)就是正式处理数据的开始结点了

剑栈风樯各苦辛,别时冰雪到时春
2015-09-14 21:38
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
以下是引用露营地在2015-9-14 21:36:55的发言:

我好像又看懂了一点  哈哈   之所以h->next=newNode;  h=h->next;
是因为这里是在for循环里的  不断的插入新节点 和对他的数据域赋值  从而保证了h是等于newnode的, 而h->next是等于下一个新节点的指针域的  是么  理解有错么  ??
哦哦 你怎么有换头像了  很漂亮啊  我还想问你这是不是你呢  



en absoulty perfect!

剑栈风樯各苦辛,别时冰雪到时春
2015-09-14 21:40
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
以下是引用露营地在2015-9-14 21:36:55的发言:

我好像又看懂了一点  哈哈   之所以h->next=newNode;  h=h->next;
是因为这里是在for循环里的  不断的插入新节点 和对他的数据域赋值  从而保证了h是等于newnode的, 而h->next是等于下一个新节点的指针域的  是么  理解有错么  ??
哦哦 你怎么有换头像了  很漂亮啊  我还想问你这是不是你呢  


头像的问题。。。当然不是啦。。。

剑栈风樯各苦辛,别时冰雪到时春
2015-09-14 21:45
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
得分:0 
回复 28楼 林月儿
哈哈  看来理解对了

不要不要的。。。
2015-09-14 21:47



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




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

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