当前位置: 首页 > news >正文

实验11-2-5 链表拼接(PTA)

题目:

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

struct ListNode {int data;struct ListNode *next;
};

函数接口定义:

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

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

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>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){//如果有一个链表为空,直接返回另一个链表return list2;}if(list2==NULL){return list1;}struct ListNode *p,*head=NULL,*s;//s为新的合并链表while(list1!=NULL && list2!=NULL){p=(struct ListNode*)malloc(sizeof(struct ListNode));//新建一个结点pif(list1->data > list2->data){//p为较小的数p->data = list2->data;p->next = NULL;list2=list2->next;}else{p->data = list1->data;p->next = NULL;list1=list1->next;}if(head==NULL){//处理第一个结点head=p;}else{s->next=p;//链接上p结点}s=p;}if(list1==NULL){//当一个链表已经遍历完,直接链接上另一个链表s->next=list2;}else if(list2==NULL){s->next=list1;}return head;
}

http://www.lryc.cn/news/320033.html

相关文章:

  • Mybatis Plus + Spring 分包配置 ClickHouse 和 Mysql 双数据源
  • 27-3 文件上传漏洞 - 文件类型绕过(后端绕过)
  • widget一些控件的使用
  • Python基础(七)之数值类型集合
  • 电脑充电器能充手机吗?如何给手机充电?
  • 矩阵中移动的最大次数
  • Linux:系统初始化,内核优化,性能优化(3)
  • 使用 GitHub Actions 通过 CI/CD 简化 Flutter 应用程序开发
  • 微软 CEO Satya Nadella 的访谈
  • 万界星空科技商业开源MES,技术支持+项目合作
  • Docker Mysql无root账户创建最高权限用户
  • 常用芯片学习——DS3231M芯片
  • 蓝桥杯单片机快速开发笔记——矩阵键盘
  • 每周一算法:双向深搜
  • 蓝桥杯刷题(十)
  • ioDraw:与 GitHub、gitee、gitlab、OneDrive 无缝对接,绘图文件永不丢失!
  • 利用 Python 处理遥感影像数据:计算年度平均影像
  • 【Leetcode-73.矩阵置零】
  • redis 常见的异常
  • npm包、全局数据共享、分包
  • UnityShader:IBL
  • 每日五道java面试题之mybatis篇(三)
  • C#开发五子棋游戏:从新手到高手的编程之旅
  • ELK日志管理实现的3种常见方法
  • 深度强化学习01
  • C++ 智能指针的使用
  • Flutter 核心原理 - UI 框架(UI Framework)
  • Hive优化
  • React 的 diff 算法
  • 综合知识篇07-软件架构设计考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)