| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1227 人关注过本帖
标题:求指教:两个有序链表合并(功能函数)出现问题!
只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
哥们,我很感激,可是你狼非了宝贵而神圣的一票啊,我除了当抛砖引玉里的砖,起不了别的作用,就是爱灌水而已

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-04 16:15
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 8楼 embed_xuel
不是括号的问题。哥们,有空晚上到电脑帮我看看呗。
2013-01-04 16:16
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 11楼 yaobao
呵呵,你本来就喜欢帮助人。
我在别的帖子里也经常看到你为他人解决问题的身影,咱实话实说。
刚才我那个问题的解法是参照老谭教材答案的,思路是没有问题,就是在函数功能实现上出了问题,你有空帮我理一理。
2013-01-04 16:19
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
老谭的书??在多少页?

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-04 16:22
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 14楼 yaobao
C程序设计<第四版>学习辅导P151-152.
就是第四版教科书第九章练习题第10题。
答案的代码感觉很乱,运行也不正确。我优化了下。
2013-01-04 16:30
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
我看了下教材,又看了下你的代码,可能是发现了问题吧:
  pb1->next=pa1;
            pa2=pb1;
            pb1=pb1->next;
由于这三句话的作用pa1,pa2,pb1三个指针实际上都已经被指向了a串了啊,
pb1已经与pa2重合了,不能在对B串遍历了。


谨供参考

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-04 16:37
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
解决了,我刚才又按照老谭的方法来,加了个pb2.
No Problem,看来我比老谭还是要嫩些。
感谢您,论坛中就是需要您这么热心和无私奉献的人,我记住您了,yaobao!


2013-01-04 17:06
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 16楼 yaobao
KO!
Thanks!
2013-01-04 17:07
P40714107
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2012-12-25
收藏
得分:0 
/*已有a、b两个链表,每个链表中的结点包括学号、成绩。要求
 把两个链表合并,按学号升序排列。*/
 #include"stdio.h"
 #include"stdlib.h"
 #define LEN sizeof(Stu)
 typedef struct Student
 {
     int num;
     float score;
     struct Student *next;
 }Stu;
 void main()
 {
     Stu *Creat();
     Stu *Insert(Stu *ahead,Stu *bhead);
     void Print(Stu *head);
     Stu *ahead,*bhead,*abhead;
     printf("input list a:\n");
     ahead=Creat();
     Print(ahead);
     printf("input list b:\n");
     bhead=Creat();
     Print(bhead);
     printf("The mixed:\n");
     abhead=Insert(ahead,bhead);
     Print(abhead);
 }
 //建立链表的函数
 Stu *Creat()
 {
     Stu *p1,*p2,*head;
     p1=p2=(Stu*)malloc(LEN);
     scanf("%d %f",&p1->num,&p1->score);
     head=NULL;
     while(p1->num!=0)
     {
         if(head==NULL)
             head=p1;
         else
             p2->next=p1;
         p2=p1;
         p1=(Stu*)malloc(LEN);
         scanf("%d %f",&p1->num,&p1->score);
     }
     p2->next=NULL;
     return head;
 }
 //输出链表的函数
 void Print(Stu *head)
 {
     Stu *p;
     p=head;
     if(head!=NULL)
     {
         while(p!=NULL)//不能写成:p->next!=NULL
         {
             printf("number:%d  score:%5.1f\n",p->num,p->score);
             p=p->next;
         }
     }
 }
 //合并排序函数
 Stu *Insert(Stu *ahead,Stu *bhead)
 {
     Stu *pa1,*pa2,*pb1,*pb2;
     pa1=ahead;
     pb1=bhead;
     pb2=pb1;
     if(ahead==NULL)
         return bhead;
     if(bhead==NULL)
         return ahead;
     do              //让链表b中的结点依次和a中的结点比较并插入
     {
        pb1=pb2;
        pa1=ahead;
         while((pb1->num>pa1->num)&&(pa1->next!=NULL))
         {
             pa2=pa1;
             pa1=pa1->next;
         }
         if(pb1->num<=pa1->num)
         {
             if(pa1==ahead)
                 ahead=pb1;
             else
                 pa2->next=pb1;
             pb2=pb1->next;
             pb1->next=pa1;
              //pb1=pb2;
         }
         else
         {
             pa1->next=pb1;
             pb2=pb1->next;
             pb1->next=NULL;
             //pb1=pb2;
         }
        // pb2=pb2->next;

     }while(pb2!=NULL);
     return ahead;
 }
 /*亲测!!!
 */
2013-01-04 22:37
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 19楼 P40714107
谢谢。
2013-01-05 08:19
快速回复:求指教:两个有序链表合并(功能函数)出现问题!
数据加载中...
 
   



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

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