| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 643 人关注过本帖, 1 人收藏
标题:求a,b两个链表合并,按学号升序排列,程序错哪了啦?
只看楼主 加入收藏
daoweiniu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-3
结帖率:50%
收藏(1)
已结贴  问题点数:20 回复次数:2 
求a,b两个链表合并,按学号升序排列,程序错哪了啦?
#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct student)

struct student
{ long num;
  int score;
 struct student *next;
};


struct student lista,listb;
int n,sum=0;

void main()
{ struct stdudent *creat(void);
  struct student *insert(struct student *,struct student *);
  void print(struct student *);
  struct student *ahead,*bhead,*abh;
  printf("input list a:\n");
  ahead=creat();
  sum=sum+n;
  printf("input list b:\n");
  bhead=creat();
  sum=sum+n;
  abh=insert(ahead,bhead);
  print(abh);
}


struct student *creat(void)
{ struct student *p1,*p2,*head;
  n=0;
  p1=p2=(struct student *)malloc(LEN);
  printf("input number &scores 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=NULL;
  return(head);
}


struct student *insert(struct student *ah,struct student *bh)
{struct student *pa1,*pa2,*pb1,*pb2;
  pa2=pa1=ah;
  pb2=pb1=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!=NULL)&&(pb1->num>pa1->num)&&(pa1->next==NULL))
       pa1->next=pb1;
     return(ah);
}

void print(struct student *head)
{ struct student *p;
  printf("\n These are %d records:  \n",sum);
  p=head;
  if(p!=NULL)
    do
    { printf("%ld %ld\n",p->num,p->score);
      p=p->next;
    }while(p!=NULL);
}

 




  
  
  

   


  
搜索更多相关主题的帖子: include insert 
2011-11-09 22:05
rptina
Rank: 2
等 级:论坛游民
帖 子:7
专家分:27
注 册:2011-10-24
收藏
得分:10 
struct stdudent *creat(void);写错了
2011-11-09 22:33
Y_Jo_1
Rank: 4
等 级:业余侠客
帖 子:59
专家分:215
注 册:2011-10-20
收藏
得分:10 
struct stdudent *creat(void);
2011-11-09 22:46
快速回复:求a,b两个链表合并,按学号升序排列,程序错哪了啦?
数据加载中...
 
   



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

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