本文共 1923 字,大约阅读时间需要 6 分钟。
数据结构实验之链表四:有序链表的归并
Time Limit: 1000 ms Memory Limit: 65536 KiBProblem Description
分别输入两个有序的整数序列(分别包含M和N个数据),建立两个有序的单链表,将这两个有序单链表合并成为一个大的有序单链表,并依次输出合并后的单链表数据。 Input 第一行输入M与N的值; 第二行依次输入M个有序的整数; 第三行依次输入N个有序的整数。 Output 输出合并后的单链表所包含的M+N个有序的整数。 Sample Input 6 5 1 23 26 45 66 99 14 21 28 50 100 Sample Output 1 14 21 23 26 28 45 50 66 99 100 Hint 不得使用数组!代码如下:
#include#include #include struct linshi{ int data; struct linshi *next;}; struct linshi *head1,*head2,*p,*q,*r,*s; void set(int); void chuli(void);void set(int k){ int a; while(k--) { scanf("%d",&a); q=(struct linshi *)malloc(sizeof(struct linshi)*1); q->data=a; p->next=q; q->next=NULL; p=p->next; } return ;}void chuli(void){ r=head2->next; while(r!=NULL) { s=(struct linshi *)malloc(sizeof(struct linshi)*1); s->data=r->data; s->next=NULL; p=head1->next; q=head1; while(p!=NULL) { if(s->data data) { q->next=s; s->next=p; break; } q=p; p=p->next; } if(p==NULL) { s->next=NULL; q->next=s; } r=r->next; } p=head1->next; while(p!=NULL) { printf("%d",p->data); if(p->next!=NULL) { printf(" "); } p=p->next; } printf("\n");}int main(){ int m=0,n=0; head1=(struct linshi *)malloc(sizeof(struct linshi)*1); head1->next=NULL; head2=(struct linshi *)malloc(sizeof(struct linshi)*1); head2->next=NULL; p=(struct linshi *)malloc(sizeof(struct linshi)*1); q=(struct linshi *)malloc(sizeof(struct linshi)*1); r=(struct linshi *)malloc(sizeof(struct linshi)*1); scanf("%d%d",&m,&n); p=head1; set(m); p=head2; set(n); chuli(); return 0;}
转载地址:http://ewhwi.baihongyu.com/