免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1545 | 回复: 6
打印 上一主题 下一主题

指针返回的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-12 22:23 |只看该作者 |倒序浏览
输入3 1 7 2 4 8 4 0

如果不按注释改的话.输出6-->1-->4-->7-->2-->3-->5-->NULL

按注释改的话.输出1-->4-->7-->2-->3-->5-->NULL

改了之后的uncode函数和没改的函数,对指针b的操作没什么差别.那么结果也应该是一样的.但不一样.这是为什么?
#include<stdio.h>
#include<stdlib.h>
struct circle
{
    int data;
    int code;
    struct circle * ptr;
};
typedef  struct circle LIST;
typedef LIST *LISTPTR;
LISTPTR uncode(LISTPTR);//把这的LISTPTR 改为void
void vprint(LISTPTR);
void creatList(LISTPTR);
main()
{
        LISTPTR a;
a=malloc(sizeof(LIST));
     a->ptr=NULL;
        creatList(a);
        vprint(uncode(a));//这个改为uncode(a);vprint(a);
        getch();

  return 0;
}
void creatList (LISTPTR a)
{
    LISTPTR b,s;
    int c,j=1;
    b=malloc(sizeof(LIST));
    b->ptr=NULL;
    b=a;
    scanf("%d",&c);
    b->data=c;
    b->code=j;
    while(1)
    {
     scanf("%d",&c);
     if(c==0) break;
     j++;
     s=malloc(sizeof(LIST));
     s->data=c;
     s->code=j;
     b->ptr=s;
     b=s;
     }
     b->ptr=a;
}
void vprint(LISTPTR e)
{
    while(e!=NULL)
    {
    printf("%d-->",e->code);
    e=e->ptr;
    }
    printf("NULL\n");
}
LISTPTR uncode(LISTPTR b))//把这的LISTPTR 改为void
{
    int m=20,k=1,j=1;
    LISTPTR c,a;
    a=b;
    b=malloc(sizeof(LIST));
    b->ptr=NULL;
    c=b;
    while(1)
    {
        while(1)
        {   
     if(k>=m-1) break;
            a=a->ptr;
     if(a==a->ptr)
  {
  j=0;
  break;
  }
            k++;
        }
m=a->ptr->data;
        k=1;
c->ptr=a->ptr;
        c=a->ptr;
        a->ptr=a->ptr->ptr;
        if(m!=1) a=a->ptr;
        if(j==0)
{
b=b->ptr;
c->ptr=NULL;
break;
}
     }
return b;//这句删掉.
}

[ 本帖最后由 lmatt 于 2006-4-13 20:18 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-04-13 08:12 |只看该作者
看不下去了,晕死了,不过可以指出你一个问题:
b=malloc(sizeof(LIST));
    b->ptr=NULL;
    b=a;
b申请的动态空间内存泄露

论坛徽章:
0
3 [报告]
发表于 2006-04-13 12:29 |只看该作者
原帖由 soul_of_moon 于 2006-4-13 08:12 发表
看不下去了,晕死了,不过可以指出你一个问题:
b=malloc(sizeof(LIST));
    b->ptr=NULL;
    b=a;
b申请的动态空间内存泄露

"动态空间内存泄露"不是很懂,能解释一下吗?

论坛徽章:
0
4 [报告]
发表于 2006-04-13 13:30 |只看该作者
你把题目改一改说明问题,改好了我再解封,谢谢

论坛徽章:
0
5 [报告]
发表于 2006-04-13 20:13 |只看该作者
已经改了,能帮我看一下为什么吗?


>>你把题目改一改说明问题,改好了我再解封,谢谢

再次重复一次...
要想别人更好的帮助你,请你先把自己的问题描述清楚,自己连问题出在哪里都无法描述清楚,也许说明自己都没有考虑这个问题吧

你改的这个题目和没有改没有什么区别...

[ 本帖最后由 converse 于 2006-4-13 20:18 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-04-13 20:43 |只看该作者
谢谢楼上.请大家帮忙看一下,我想了很久,就是不知道为什么.

论坛徽章:
0
7 [报告]
发表于 2006-04-16 12:02 |只看该作者
你这是定义的链表哪里有问题,把问题说明白点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP