| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 446 人关注过本帖
标题:一个使我困惑的‘等号’,帮忙解释一下各位大虾。
只看楼主 加入收藏
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
一个使我困惑的‘等号’,帮忙解释一下各位大虾。
程序代码:
# include<stdio.h>
# include<stdlib.h>
# include<malloc.h>
struct node
{
    int data;
    struct node *next;
};
struct node *creat_list(void);
void traver_list(struct node *phead);
int main()
{
    struct node *phead = NULL;
    phead = creat_list();
    traver_list(phead);

    return 0;
}
struct node *creat_list(void)
{
    int i,len,val;
    struct node *phead = (struct node *)malloc(sizeof(struct node));//生成头指针,指向头结点(*phead);
    if(NULL == phead)
    {
        printf("内存分分配失败,程序结束!\n");
        exit(-1);
    }
    struct node *ptail =phead;
    ptail->next = NULL;
    printf("请输入链表的结点个数:\n");
    scanf_s("%d",&len);
    for(i=0;i<len;++i)
    {
        struct node *pnew = (struct node *)malloc(sizeof(struct node));//生成新结点(*pnew);
        if(NULL == pnew)
        {
            printf("内存分配失败,程序结束!\n");
            exit(-1);
        }
        printf("请输入第%d个结点的值: ",i+1);
        scanf_s("%d",&val);
        pnew->data = val;
        ptail->next = pnew;
        pnew->next =NULL;
        ptail = pnew;
    }

    return phead;
}
void traver_list(struct node *phead)
{
    struct node *p =phead->next;
   
    while (NULL != p )//
    {
        printf("%d ",p->data);
        p = p->next;
    }
    printf("\n");
    return ;
}
这是一个链表的生成
图片附件: 游客没有浏览图片的权限,请 登录注册


有一个地方很困惑:
        pnew->data = val;
        ptail->next = pnew;
        pnew->next =NULL;
        ptail = pnew;
中:
tpail = pnew;
是什么意思,把pnew的复制一份给ptail?这里使我相当混乱,请高人解答。
指点。

[ 本帖最后由 cosam 于 2011-9-15 00:44 编辑 ]
搜索更多相关主题的帖子: next 
2011-09-15 00:39
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:0 
ptail = pnew;        
这两个都是指针,把pnew的值赋给ptail就是将ptail指向pnew所指的最后加进来的那个结点,
这样ptail仍然是指向最后一个结点,方便做下次循环。
等同于ptail=ptail->next;    因为前面已经有了ptail->next=pnew了。


[ 本帖最后由 czsbc 于 2011-9-15 01:05 编辑 ]
2011-09-15 01:02
hanxiaokun
Rank: 2
等 级:论坛游民
帖 子:44
专家分:56
注 册:2011-8-31
收藏
得分:20 
楼主问这个问题,是因为对指针的原理还有点生疏,把指针的基本工作原理理解了,这个问题自然就会了
2011-09-15 10:30
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
收藏
得分:0 
嗯,的确是指针的概念里解还不够,自己转牛角尖了·
这是数据结构的中链表的生成,看了些书,试着自己创建出来的。
最后用两天回去复习了指针的概念,前两天已经明白了。
指针保存的是地址,他也可以间接或者直接代表 ·变量,或者是数组。
比如 pnew动态分配时他代表的是他指向了一个刚创建的结构体,最后的“=”
则只是让ptail指针指向变化,跟二楼群说的一样。或者说是保存最后一个结点的地址。

2011-09-18 11:22
d1094572481
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2017-2-2
收藏
得分:0 
楼主  我也不明白这个  pnew是怎么串在一起的呀,phand和pnew是怎么联系的呀,
pnode ptail=phand
 ptail->pnext=NULL;
这条语句有什么意义吗  
2017-10-21 10:20
d1094572481
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2017-2-2
收藏
得分:0 
楼主  我也不明白这个  pnew是怎么串在一起的呀,phand和pnew是怎么联系的呀,
pnode ptail=phand
 ptail->pnext=NULL;
这条语句有什么意义吗  
2017-10-21 10:20
快速回复:一个使我困惑的‘等号’,帮忙解释一下各位大虾。
数据加载中...
 
   



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

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