| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 258 人关注过本帖
标题:急!!!求高手给个指点关于链表的问题????不甚感激
取消只看楼主 加入收藏
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:1 
急!!!求高手给个指点关于链表的问题????不甚感激
 建立a b两个链表,链表中节点包括学号,成绩。要求把两个链表合并,按学号升序排列
程序代码:
#include<stdio.h>
#include<malloc.h>
//#define NULL 0  有的软件函数库里面已定义
#define LEN sizeof(struct student)
struct student
{
  long num;
  int score;
  struct student *next;
};
struct student listA,listB;
int n,sum=0;
struct student *creat(void)     //链表建立函数
{
  struct student *p1,*p2,*head;
  n=0;
  p1=p2=(struct student *)malloc(LEN);
  printf("\nInput the number & score of student;\n");
  printf("if number is 0,stop inputing!\n");
  scanf("%ld,%d",&p1->num,&p1->score);
  head=NULL;
  while(p1->num!=0)
  {
    n=n+1;
    if(n==1)
        head=p1;
    else
        p2->next=p1;
    p2=p1;
    p1=(struct student *)malloc(LEN);
    scanf("%ld,%d",&p1->num,&p1->score);
  }
  p2->next=p1;
  return (head);
}
struct student *insert(struct student *ah,struct student *bh)  //链表合并函数

{
  struct student *pa1,*pa2,*pb1,*pb2;
  pa1=pa2=ah;
  pb1=pb2=bh;
  do
  {
   while((pb1->num>pa1->num)&&(pa1->next!=NULL))
   {
       pa2=pa1;      
       pa1=pa1->next;

   }
   if(pb1->num<=pa1->num)
   {
     if(ah=pa1)
         ah=pb1;
     else
         pa2->next=pb1;
     pb1=pb1->next;
     pb2->next=pa1;
     pa2=pb2;
     pb2=pb1;


   }
  }
  while((pa1->next!=NULL)||(pa1==NULL&&pb1!=NULL));
      if((pb1->num>pa1->num)&&(pa1->next==NULL))
          pa1->next=pb1;
      return(ah);
}
void print(struct student *head)     //链表输出函数
{
  struct student *p;
  printf("\n there are %d record:\n");
  p=head;
  if(p!=NULL)
      do
      {
        printf("%ld%d",p->num,p->score);
        p=p->next;
      }
      while(p!=NULL);
}
main()
{
  struct student *creat(void);
      struct student *insert(struct student *,struct student * );
      void print(struct student *);
      struct student *ahead,*bhead,*abh;
      printf("\n input the lista:\n");
      ahead=creat();
      sum=sum+n;
      printf("\n input the listb:\n");
      bhead=creat();
      sum=sum+n;
      abh=insert(ahead,bhead);
      print(abh);

}

我输入如下的数据
结果没有得出我要的答案!
还请各位指点,不甚感激!!
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-06-06 09:21
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
哦 呵呵 我在仔细编译看看 谢谢
2011-06-06 16:06
快速回复:急!!!求高手给个指点关于链表的问题????不甚感激
数据加载中...
 
   



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

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