本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下:

struct ListNode {

int data;

struct ListNode *next;

};

函数接口定义:

struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);

其中list1和list2是用户传入的两个按data升序链接的链表的头指针;函数mergelists将两个链表合并成一个按data升序链接的链表,并返回结果链表的头指针。

裁判测试程序样例:

#include

#include

struct ListNode {

int data;

struct ListNode *next;

};

struct ListNode *createlist(); /*裁判实现,细节不表*/

struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);

void printlist( struct ListNode *head )

{

struct ListNode *p = head;

while (p) {

printf("%d ", p->data);

p = p->next;

}

printf("\n");

}

int main()

{

struct ListNode *list1, *list2;

list1 = createlist();

list2 = createlist();

list1 = mergelists(list1, list2);

printlist(list1);

return 0;

}

/* 你的代码将被嵌在这里 */

输入样例:

1 3 5 7 -1

2 4 6 -1

输出样例:

1 2 3 4 5 6 7

思路:

本题要求将两个链表合成一个内部元素升序排列的链表,所以先把两个链表合并为一个链表,然后用选择排序法对链表中的元素排序(注:若两个链表均为空,则直接返回第一个链表)

实验代码

struct ListNode* mergelists(struct ListNode* list1, struct ListNode* list2)

{

if (list1 == NULL && list2 == NULL)

{

return list1;

}

struct ListNode* ptr,*ptr1;

int x;

for (ptr = list1; ptr->next != NULL; ptr = ptr->next);

ptr->next = list2;

for (ptr = list1; ptr != NULL; ptr = ptr->next)

{

for (ptr1 = ptr->next; ptr1 != NULL; ptr1 = ptr1->next)

{

if (ptr->data > ptr1->data)

{

x = ptr1->data;

ptr1->data = ptr->data;

ptr->data = x;

}

}

}

return list1;

}

实验结果

标签:ListNode,struct,list1,PTA,链表,20point,data,ptr

来源: https://www.cnblogs.com/jk-liulei/p/12335420.html

C语言 链表拼接 PTA,PTA实验 链表拼接 (20point(s))相关推荐

  1. PTA 6-1 单链表逆置

    PTA 6-1 单链表逆置* (20 分) 已知单链表的结点结构定义如下: typedef struct NODE { int data; struct NODE *next; } NODE; 说明: ...

  2. c语言实现双链表基本功能的实验报告,C语言实现的双链表功能完整示例

    本文实例讲述了C语言实现的双链表功能.分享给大家供大家参考,具体如下: Dlist.h #ifndef __DLIST_H__ #define __DLIST_H__ #include #includ ...

  3. 十字交叉链表c语言,C语言课程设计报告—十字交叉链表的应用.doc

    C语言课程设计报告-十字交叉链表的应用 PAGE \* MERGEFORMAT 13 华中科技大学计算机科学与技术学院 C语言程序设计课程设计实验报告 题目:水产品养殖信息管理系统 专业: 计算机科学 ...

  4. 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置

    <(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...

  5. C语言怎么合并两个有序链表

    C语言合并两个有序链表的方法:拼接指定的两个有序链表的所有节点即可.例如两个有序链表分别为[1->2->4]和[1->3->4],合并后的有序链表为[1->1->2 ...

  6. C语言链表学生成绩制作成链表,C语言程序设计课程设计基于链表的学生成绩管理系统.doc...

    C语言程序设计课程设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学 ...

  7. 用c语言描述单链表的数据类型,数据结构—单链表(类C语言描述)

    单链表 1.链接存储方法 链接方式存储的线性表简称为链表(Linked List).     链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不 ...

  8. SDUT_2116 数据结构实验之链表一:顺序建立链表

    点击打开链接 数据结构实验之链表一:顺序建立链表 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem D ...

  9. Algorithm:C++语言实现之链表相关算法(链表相加、链表的部分翻转、链表划分、链表去重、重复元素全部删除)

    Algorithm:C++语言实现之链表相关算法(链表相加.链表的部分翻转.链表划分.链表去重.重复元素全部删除) 目录 一.链表 1.1.链表相加 1.2.链表相加 2.1.链表的部分翻转 2.2. ...

最新文章

  1. 分享一个小工具:Excel表高速转换成JSON字符串
  2. 在ASP.NET MVC里对Web Page网页进行权限控制
  3. Spark Streaming 编程新手入门指南
  4. Python Django 原生SQL查询(游标Cursor)
  5. php 实现两变量值对换,php两个变量的值交换的方法
  6. 微信小程序基于swiper组件的tab切换
  7. 【iOS开发】An Apple ID with identifier xxxis not available. Please enter a different string.
  8. studiolibrary安装_DAZ Studio 3D扩展包安装使用教程
  9. Hive中文件存储格式及大小比较测试
  10. Mac入门——快捷键
  11. python实现k core算法_python实现k-近邻算法
  12. 安装jdk-linux-i586.rpm.bin
  13. QT之tableWidget删除全部行
  14. 如何判断自己的Windows系统是否为盗版系统?
  15. 试用版:springboot集成pageoffice实现word在线预览可编辑
  16. html运行flash脚本语言,flash课件制作常用的脚本语句
  17. Oracle执行计划变更
  18. 双活数据中心建设概览
  19. java 下拉复选框_JAVA个人小程序GUI篇-收银(标签、按钮、复选框、下拉标、文本域、表格······)...
  20. oracle序列号、

热门文章

  1. JS中apply和call的应用和区别
  2. html 语义化标签拾遗
  3. vue笔记(二)Vue-class与style、事件、计算属性、数据监听、指令+自定义指令、过滤器
  4. echarts地图在ie浏览器上不显示
  5. centos7.3 安装 mysql-5.7.13
  6. UnicodeMath数学公式编码_翻译(Unicode Nearly Plain - Text Encoding of Mathematics Version 3)
  7. SpringBoot项目中,获取配置文件信息
  8. android-线程池-最顺手的写法
  9. rough and crude
  10. 【C#公共帮助类】 Image帮助类