| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖, 1 人收藏
标题:动态分配指针数组出错了?
只看楼主 加入收藏
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:2 
动态分配指针数组出错了?
/*创建一个类型为don的链表并输入相应的某几个值,
  调用lianbiao以头指针为参数
  让函数把链表中的各个节点的指针域按照相反的循序排序然后输出*/
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct don
{
    int a;
    struct don *zz;
};
int main(void)
{
    struct don *lianbiao(struct don *tzz);
    struct don *tzz,*z,*szz;
    int n,i;         
    printf("输入需要创建链表的节点个数:");
w:  scanf("%d",&n);
    if(n<=0)
    {
        printf("输入错误,请重新输入:\n");
        goto w;
    }
    for(i=0;i<n;i++)
    {
        if((z=(struct don *)malloc(sizeof(struct don)))==NULL)
        {
            printf("分配内存失败,程序结束!");
            getch();
            exit(1);
        }
        if(i==0)
        {
            tzz=z;
            szz=z;
        }
        else
        {
            szz->zz=z;
            szz=z;
        }
        printf("请输入第%d个节点数据域的值:",i+1);
        scanf("%d",&z->a);
    }
    szz->zz=NULL;
    z=lianbiao(tzz);
    if(z==NULL)
    {
        printf("Error....");
        getch();
        exit(1);
    }
    while(z!=0)
    {
        printf("相反循序排序后各个节点数据域的值分别为:");
        printf("%d\n",z->a);
    }
    getch();
    return 0;
}
struct don *lianbiao(struct don *tzz)
{
    int n=0,i,f;
    struct don *zzz=tzz,**zi;
    if(tzz==NULL)
    {
        exit(1);
    }
    while(tzz!=NULL)
    {                                 
        n++;
        tzz=tzz->zz;
    }
    tzz=zzz;                           
    if((zi=(struct don **)malloc(sizeof(struct don *)*n))==NULL)
    {
        return NULL;
    }
    for(i=0;tzz!=NULL;i++)
    {
        zi[i]=tzz;
        tzz=tzz->zz;
    }
    for(i=0,f=(n-1);i<(n/2);i++,f--)
    {
        zzz=zi[i]->zz;
        zi[i]->zz=zi[f]->zz;
        zi[f]->zz=zzz;
    }
    return tzz;
}
创建好链表调用lianbiao函数的时候返回值总是空,能够返回空指针的也就是分配内存的那地方(看75行),动态分配指向指针的数组我是在网上查到的,也单独测试过了 不会错。。但是他就是错啊..N的大小我调试过了正常的,节点个数是3他就是3,应该不会太大分配不到内存,就算是也不会是每次
搜索更多相关主题的帖子: void 函数 include 动态 
2012-02-06 20:48
闲出屁
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:420
专家分:612
注 册:2012-1-24
收藏
得分:20 
for(i=0;tzz!=NULL;i++)
return tzz 你返回的就是NULL
要学会调试

乔布斯是神 宫崎骏也是神~~ 才知道 原来士兵突击的主题曲是久石让的 久石让的音乐 真传神
2012-02-06 21:02
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
收藏
得分:0 
回复 2楼 闲出屁
其实我没有去注意下面那个返回值..总以为是分配内存那里返回的。
2012-02-06 21:32
快速回复:动态分配指针数组出错了?
数据加载中...
 
   



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

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