| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 889 人关注过本帖
标题:求教了 帮看看程序为什么不能这么写!
只看楼主 加入收藏
visonceo
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2012-2-25
结帖率:66.67%
收藏
已结贴  问题点数:16 回复次数:11 
求教了 帮看看程序为什么不能这么写!
    假设已经分配出动态内存,利用动态内存建立了一个链表以下函数是将链表输出的问题
struct lb{
    int x;
    struct lb * pnext;
};
----------------------------------
void output_list(struct lb * ph)
{
   
    while(ph->pnext!=NULL)
    {
        ph = ph->pnext;
        printf("%d ", ph->x);
        ph = ph->pnext;
    }
    printf("\n");
}
为什么在输出的函数中必须建立一个中间变量struct lb * p =ph->pnext;
不能直接ph = ph->pnext;?
搜索更多相关主题的帖子: 函数 动态 
2012-03-25 22:15
visonceo
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2012-2-25
收藏
得分:0 
完整程序:
#include <stdio.h>
#include <stdlib.h>
//创建结构体
struct lb
{
    int x;
    struct lb * pnext;
};
struct lb * create_list(void)//建造链表函数
{
    int len;//用来存放有效节点的个数
    int i;
    int val;//用来临时存放用户输入的节点的值
   
    //分配一个不存放有效数据的有节点
    struct lb * phead = (struct lb *)malloc(sizeof(struct lb));
    if(NULL == phead)
    {
        printf("分配失败,程序终止\n");
        exit(0);
    }
    struct lb * ptail = phead;
    ptail->pnext = NULL;   
    printf("输入需要生成的节点的个数:len = ");
    scanf("%d", &len);
   
    for(i=0; i<len; ++i)
    {
        printf("亲输入第%d个节点的值:", i+1);
        scanf("%d", &val);
        
        struct lb * pnew = (struct lb *)malloc(sizeof(struct lb));
        if(NULL == pnew)
        {
            printf("分配失败,程序终止\n");
            exit(0);
        }
        pnew->x = val;
        ptail->pnext = pnew;
        pnew->pnext = NULL;
        ptail = pnew;
    }
    return phead;
}
//输出链表
void output_list(struct lb * ph)
{
    struct lb * p;//传递值的中间变量
    p = ph->pnext;
    while(p!=NULL)
    {
        printf("%d ", p->x);
        p = p->pnext;
    }
    printf("\n");
}

int main(void)
{
    struct lb * phead = create_list();
    output_list(phead);
   
    return 0;
}
2012-03-25 23:45
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:2 
这样垃圾书写的链表看都看的恶心!

用心做一件事情就这么简单
2012-03-26 01:00
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:2 
回复 3楼 小鱼儿c
呵呵   当年我学链表的时候也遇到过这样的问题

                                         
===========深入<----------------->浅出============
2012-03-26 10:41
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
收藏
得分:2 
先把代码拷下来先 有空再好好琢磨 我也是刚刚上路半年多的小菜鸟 嘻嘻

成为一名真正合格的程序设计人员,是我的梦想……我希望我的梦一直保持下去,直到我从这个世界消失……
2012-03-26 12:37
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
收藏
得分:0 
回复 3楼 小鱼儿c
大侠 帮人家解决下喂 ! 呵呵

成为一名真正合格的程序设计人员,是我的梦想……我希望我的梦一直保持下去,直到我从这个世界消失……
2012-03-26 12:37
tangtangt
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:146
注 册:2012-1-22
收藏
得分:2 
回复 3楼 小鱼儿c
求教这样写的链表到底差在哪里?我貌似学的也是这样写的。
2012-03-26 21:15
编编之
Rank: 1
等 级:新手上路
帖 子:21
专家分:7
注 册:2012-3-22
收藏
得分:2 
回复 4楼 laoyang103
你们现在都是老师。。。哈哈
2012-03-26 22:52
编编之
Rank: 1
等 级:新手上路
帖 子:21
专家分:7
注 册:2012-3-22
收藏
得分:0 
我们都还没有学到这里
2012-03-26 22:52
Eilliot
Rank: 6Rank: 6
等 级:侠之大者
帖 子:41
专家分:418
注 册:2012-3-26
收藏
得分:2 
围观一下下
2012-03-27 07:37
快速回复:求教了 帮看看程序为什么不能这么写!
数据加载中...
 
   



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

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