CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

求助!链表!

楼主wen513520()2006-12-01 00:30:31 在 C/C++ / C语言 提问

这是个求一个链表有N个元素,且任何元素均不为0)分拆成两个链表。使A中大于0的元素存放B中小于0的元素存放在C中;  
   
   
   
  #include   <malloc.h>  
  #include   <stdio.h>  
  struct   lond  
  {  
  int   num;  
  struct   lond   *next;  
  }lond;  
  struct   lond   *input(int   n)  
  {  
  struct   lond   *head;  
  struct   lond   *p1,*p2;  
  int   i;  
  p1=p2=(struct   lond   *)malloc(sizeof(lond));  
          p1->num=0;p1->next=NULL;  
  head=p1;  
          for   (i=0;i<n;i++)  
          {  
          p1=(struct   lond   *)malloc(sizeof(lond));  
          scanf   ("%d",&p1->num);p1->next=NULL;  
          p2->next=p1;  
          p2=p2->next;  
          }  
  return(head);  
   
  }  
  struct   lond   *fenkai(struct   lond   *head,int   n)  
  {  
  struct   lond   *p1,*p2,*p3,*p4,*p5;  
  struct   lond   *head1,*head2;  
  int   i;  
  p2=p3=(struct   lond*)malloc(sizeof(lond));  
  head1=p2;p2->next=NULL;p2->num=0;  
  p3=p4=(struct   lond*)malloc(sizeof(lond));  
  head2=p3;p3->next=NULL;p3->num=0;  
  p1=head;  
  for   (i=0;i<n;i++)  
  {  
  if   (p1->num>0)  
  {  
  p2=(struct   lond*)malloc(sizeof(lond));  
  p2->num=p1->num;  
  p4->next=p2;  
  p4=p4->next;  
  }  
  else    
  {  
  p3=(struct   lond*)malloc(sizeof(lond));  
  p3->num=p1->num;  
  p5-next=p1;  
  p5=p5-next;  
  }  
  p1=p1->next;  
  }  
  return(head1);  
  }  
  struct   lond   *print(struct   lond   *head)  
  {  
  struct   lond   *p;  
  p=head;  
  if   (head==NULL)  
      printf   ("error");  
              else    
    {  
    while   (p!=NULL)  
      {  
      printf   ("%d",p->num);  
      p=p->next;  
      }  
    }  
    printf   ("\n");  
  return;  
  }  
   
  main()  
  {  
  int   n;  
  struct   lond   *head;  
          scanf   ("%d",&n);  
          head=input(n);  
          print(head);  
          head=fenkai(head,n);  
          print(head);  
  }  
  问题点数:5、回复次数:5Top

1 楼softwarewander(激情燃烧的岁月…… 还想看,咋办?)回复于 2006-12-01 09:22:44 得分 0

什么问题啊?   是逻辑错误   呢还是编译不通过  
   
  看lz的代码   print函数就没正确返回Top

2 楼softwarewander(激情燃烧的岁月…… 还想看,咋办?)回复于 2006-12-01 09:58:00 得分 0

搂住的fenkai()里面不需要7个指针吧。   太多了,   搞得头都晕了  
   
   
  尤其是党p1-〉num<0的时候    
  p3->num=p1->num;  
  p5-next=p1;  
  p5=p5-next;  
  明显不对     之前都没有赋值p5   怎么就用起p5了  
  肯定不对Top

3 楼augustusqing(喜欢雨路的火焰狼)回复于 2006-12-01 10:13:43 得分 0

想不出来楼主提问的时候在想什么。。。。。。  
    fenkai()里面p4,p5不知道楼主怎么分配的  
   
  p3=(struct   lond*)malloc(sizeof(lond));  
  p3->num=p1->num;  
  p5-next=p1;  
  p5=p5-next;  
   
  这里的p5是指向哪里了  
  我回答这样的问题,看这样的程序我是傻子!Top

4 楼shuben()回复于 2006-12-01 10:25:01 得分 0

p2=p3=(struct   lond*)malloc(sizeof(lond));  
  head1=p2;p2->next=NULL;p2->num=0;  
  p3=p4=(struct   lond*)malloc(sizeof(lond));  
  head2=p3;p3->next=NULL;p3->num=0;  
   
  这里改为  
  p2=p4=(struct   lond*)malloc(sizeof(lond));  
  head1=p2;p2->next=NULL;p2->num=0;  
  p3=p5=(struct   lond*)malloc(sizeof(lond));  
  head2=p3;p3->next=NULL;p3->num=0;  
   
  p1指向最初得链表    
  p2p4指向分开的一个链表  
  p3p5指向另一个Top

5 楼wen513520()回复于 2006-12-01 12:19:32 得分 0

不好意思!三楼的,我开始的想法跟四楼的一样。  
  但就是能建立表头链表!不知道问题出在哪?望各位大虾指教!Top

相关问题

关键词

得分解答快速导航

  • 帖主:wen513520

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo