目录

  • 题目要求
  • 代码如下

题目要求

已知两个非降序链表序列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

代码如下

  1. 第一次代码
    一个数据点超时。未注意题目中S1、S2也是非降序,而采用了头插法创建链表,并且将合并与排序分开进行。这可能就是超时的原因。
#include<stdio.h>
#include<malloc.h>
typedef struct LNode{int data;struct LNode* next;
}LNode,*LinkList;
LinkList Creat_List();
void Travel(LinkList H);
LinkList Combine_List(LinkList A,LinkList B);
void Lsort(LinkList &H);
int main(){LinkList A,B,C;A = Creat_List();B = Creat_List();C = Combine_List(A,B);Lsort(C);Travel(C);return 0;
}
void Travel(LinkList H){if(H->next){LinkList p;p=H->next;while(p){printf("%d",p->data);if(p->next != NULL) printf(" ");p = p->next;}printf("\n");}else printf("NULL");
}
LinkList Creat_List(){//头插法LinkList H,p;int x;H = (LNode*)malloc(sizeof(LNode));H->next = NULL;while(scanf("%d",&x) && x!=-1){LinkList p;p = (LNode*)malloc(sizeof(LNode));p->data = x;p->next = H->next;H->next = p;}return H;
}
LinkList Combine_List(LinkList A,LinkList B){LinkList p=A;while(p->next) p=p->next;p->next = B->next;return A;
}
void Lsort(LinkList &H){LinkList p,q;if(H->next==NULL) ;else if(H->next->next==NULL) ;else{for(p = H->next; (p->next)!=NULL; p=p->next){for(q = p->next; q!=NULL; q=q->next){if(q->data<p->data){int t;t= q->data;q->data = p->data;p->data = t;}}}}} 
  1. 第二次代码
    使用尾插法创建链表,并且使用归并排序函数,完成合并与排序。
#include<stdio.h>
#include<malloc.h>typedef struct LNode{int data;struct LNode* next;
}LNode,*LinkList;LinkList Creat_List();
void Travel(LinkList H);
LinkList Combine_List(LinkList A,LinkList B);int main(){LinkList A,B,C;A = Creat_List();B = Creat_List();C = Combine_List(A,B);Travel(C);return 0;
}
void Travel(LinkList H){if(H->next){LinkList p;p=H->next;while(p){printf("%d",p->data);if(p->next != NULL) printf(" ");p = p->next;}printf("\n");}else printf("NULL");
}
LinkList Creat_List(){//尾插法LinkList H,p,q;int x;H = (LNode*)malloc(sizeof(LNode));H->next = NULL;q = H;while(scanf("%d",&x) && x!=-1){LinkList p;p = (LNode*)malloc(sizeof(LNode));p->next=NULL;p->data = x;q->next = p;q = p;}return H;
}
LinkList Combine_List(LinkList A,LinkList B){//归并排序 LinkList C,p;C= (LNode*)malloc(sizeof(LNode));C->next = NULL;p = C;A = A->next;B = B->next;while(A&&B){if(A->data > B->data){p->next = B;B = B->next;p = p->next;}else{p->next = A;A = A->next;p = p->next;}} if(A){p->next = A;}if(B){p->next = B;}return C;}

7-2 两个有序链表序列的合并 (20分)相关推荐

  1. 7-174 两个有序链表序列的合并 (20 分)

    7-174 两个有序链表序列的合并 (20 分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降 ...

  2. 7-51 两个有序链表序列的合并 (20 分)(vector做法)

    一 :题目 .已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不 ...

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

    已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列) ...

  4. 习题2.5 两个有序链表序列的合并 (15 分)

    习题2.5 两个有序链表序列的合并 (15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L ...

  5. 7-1 两个有序链表序列的合并 (15 分)

    ** 7-1 两个有序链表序列的合并 (15 分) ** 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构 ...

  6. 7-3 两个有序链表序列的合并 (15 分)

    7-3 两个有序链表序列的合并 (15 分) #include <stdio.h> #include <stdlib.h> typedef int ElementType; t ...

  7. 两个有序链表序列的交集 (20分)(最佳解法)

    题目描述: 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列 ...

  8. 7-52 两个有序链表序列的交集 (20 分)(思路加详解尾插法)come Boby!

    一:题目 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列) ...

  9. 两个有序链表序列的合并编程

    7-51 两个有序链表序列的合并 (20 分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序 ...

  10. 6-3 两个有序链表序列的合并

    6-3 两个有序链表序列的合并 (15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L2 ...

最新文章

  1. 如何在JSP页面中获取当前系统时间转
  2. android关闭触摸声音,如何在Android中以编程方式禁用触摸时的振动和声音?
  3. java监听器模式使用场景_常用监听器及其应用场景
  4. 百度牵头,全球首个面向商业化运营的Robotaxi技术标准正式发布
  5. Centos 的inotify和rsync文件实时同步
  6. 将Sublime Text3添加到右键菜单中
  7. 手机全部零件名称图片_【直播课】一条记录中显示多张图片
  8. jquery验证框架validate的使用
  9. Java三种连接池(druid、c3p0、dbcp)
  10. 正则表达式匹配第一个单个字符
  11. Web 前端:知道这些,至少有底气去面试了
  12. 51单片机——舵机的原理及应用
  13. UE4-蓝图-角色的移动,视角控制(五)人物走动到停下过度动画
  14. php经典实例读后感,读卡耐基《人性的弱点》章节之读后感
  15. Shell脚本之免交互操作
  16. php实现股票日线数据转换为周线月线,通达信引用月线数据,如何在日线里调用周线和月线函数?...
  17. HTML href指向function
  18. 记一次阿里java实习生面试(失败)
  19. 在for循环中运行setTimeout的三种情况
  20. 一个统计Word文档中行数的VBA例程

热门文章

  1. 用计算机算华为平板密码,华为平板电脑密码忘记怎么办
  2. 重磅!腾讯优图11篇论文入选AI顶会AAAI 2021
  3. 去除加粗的css,css如何取消加粗
  4. zcu106 固化_ZCU106的PYNQ移植
  5. python 物体定位_python中使用DNF Extractor和PIL定位dnf中物品位置
  6. g729源码分析-开篇
  7. DELL PERC 系列阵列卡详解
  8. 使用vue 开发chrome 插件
  9. 三菱plc程序三菱FX3U画圆程序,只要弄明白这个程序,就可以非常了解整个项目的程序如何去编写
  10. php word转html