이미 a, b 두 개의 체인 시계가 있는데 각 체인 시계의 결점은 학번, 성적을 포함한다.두 개의 체인 시계를 합쳐서 성적 상승 순서에 따라 배열할 것을 요구하다.

1892 단어 c 언어
#include
#include
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
	long num;
	float score;
	struct student *next;
};
int n,sum=0;
struct student lista,listb;
struct student *creat(void)
{
	struct student *head;
	struct student *p1,*p2;
	n=0;
	p1=p2=(struct student*)malloc(LEN);
	printf("input number &scores of student:
"); printf("if number is 0,stop inputing.
"); scanf("%ld,%f",&p1->num,&p1->score); head=NULL; while(p1->num!=0) { n++; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=(struct student*)malloc(LEN); scanf("%ld,%f",&p1->num,&p1->score); } p2->next=NULL; return head; } int print(struct student *head) { struct student *p; printf("
Now ,These %d records are:
",n); p=head; if(head!=NULL) do{ printf("%ld,%5.1f
",p->num,p->score); p=p->next; }while(p!=NULL); } 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; } int main() { struct student *ahead ,*bhead,*abh; long del_num; printf("input list a:
"); ahead=creat(); sum=sum+n; printf("input list b:
"); bhead=creat(); sum=sum+n; abh=insert(ahead,bhead); print(abh); return 0; }

좋은 웹페이지 즐겨찾기