| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 889 人关注过本帖
标题:求教了 帮看看程序为什么不能这么写!
取消只看楼主 加入收藏
visonceo
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2012-2-25
结帖率:66.67%
收藏
已结贴  问题点数:16 回复次数:1 
求教了 帮看看程序为什么不能这么写!
    假设已经分配出动态内存,利用动态内存建立了一个链表以下函数是将链表输出的问题
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
快速回复:求教了 帮看看程序为什么不能这么写!
数据加载中...
 
   



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

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