数据结构实验之链表四:有序链表的归并

mac2022-06-30  20

数据结构实验之链表四:有序链表的归并

Time Limit: 1000MS  Memory Limit: 65536KB Submit  Statistic

Problem Description

分别输入两个有序的整数序列(分别包含M和N个数据),建立两个有序的单链表,将这两个有序单链表合并成为一个大的有序单链表,并依次输出合并后的单链表数据。

Input

第一行输入M与N的值;  第二行依次输入M个有序的整数; 第三行依次输入N个有序的整数。

Output

输出合并后的单链表所包含的M+N个有序的整数。

Example Input

6 5 1 23 26 45 66 99 14 21 28 50 100

Example Output

1 14 21 23 26 28 45 50 66 99 100

#include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef struct node {int data;struct node *next; }list; struct node *create(int n) {      list *p,*head,*tail;head = (list *)malloc(sizeof(list));head->next = NULL;tail = head;for(int i=0;i<n;i++){p = (list *)malloc(sizeof(list));p->next = NULL;scanf("%d",&p->data);tail->next = p;tail = p;}return head; } void display(list *head) {list *p;p = head->next;while(p){if(p->next!=NULL){printf("%d ",p->data);}else{printf("%d\n",p->data);}p=p->next;} } struct node *merge(list *head1,list *head2) {list *p1=head1->next,*p2=head2->next,*tail;head1->next=NULL;tail=head1;while(p1 && p2){if(p1->data<p2->data){tail->next = p1;tail = p1;p1=p1->next;tail->next = NULL;}else{tail->next = p2;tail = p2;             p2 = p2->next;tail->next = NULL;}}if(p1){tail->next = p1;}else{tail->next = p2;}return head1; } int main() {list *p,*head2,*head1;int n,m;scanf("%d%d",&m,&n);     head1 = create(m);head2 = create(n);head1 = merge(head1,head2);display(head1);return 0; }

转载于:https://www.cnblogs.com/CCCrunner/p/6444609.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)