PTA 7-5 两个有序链表序列的合并 (20 分)

    xiaoxiao2022-06-24  184

    已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。

    输入格式:

    输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。

    输出格式:

    在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。

    输入样例:

    1 3 5 -1 2 4 6 8 10 -1

    输出样例:

    1 2 3 4 5 6 8 10 #include <stdio.h> #include <stdlib.h> struct node{ int data; struct node* next; }; typedef struct node* ptr; int main() { int n; ptr head=(ptr)malloc(sizeof(struct node)); head->data=0; head->next=NULL; ptr temp,con; temp=head; con=head; while(scanf("%d",&n),n!=-1){ ptr t=(ptr)malloc(sizeof(struct node)); head->next=t; t->data=n; t->next=NULL; head=head->next; } while(scanf("%d",&n),n!=-1){ while(temp->next!=NULL){ if(temp->next->data>=n){ ptr tmp=(ptr)malloc(sizeof(struct node)); tmp->next=temp->next; tmp->data=n; temp->next=tmp; break; } else temp=temp->next; } if(temp->next==NULL){ ptr x=(ptr)malloc(sizeof(struct node)); x->data=n; x->next=NULL; temp->next=x; } } if(con->next==NULL) printf("NULL"); else{ con=con->next; while(con->next!=NULL){ printf("%d ",con->data); con=con->next; } printf("%d",con->data); } return 0; }

     


    最新回复(0)