[SCU2016年题]有两个已排序的单链表,合并问题

本文介绍了一个2016年的编程考试题目,要求将两个已按非减排序的单链表合并,保持非递减排序,且不能使用额外的存储空间。解决方案是通过比较两个链表的当前节点,将较小的节点插入到另一个链表的适当位置,直至其中一个链表遍历完。这种方法避免了使用第三个链表,满足题目要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回忆出2016一道考试题:

有两个单链表,已经按非减排序,要求完成两个链表的合并,也要非递减排序,并且不能使用除当前2个链表以外的存储空间。

 其中,允许有重复元素存在。

例如:ha-> (1) -> (3) -> (8);hb->(1) -> (7) -> (9)  。

合并后应该得到:ha ->(1)-> (1) -> (3) -> (7) -> (8) -> (9)。

由于题目要求不允许使用额外的存储空间,因此,想直接把两个链表的元素依次写入到第三个链表的偷懒办法行不通了。

解决思路:依次把第2个链表的元素判断,是否插入到第1个链表的当前位置。s1,s2分别指向第一个链表,t1,t2分别指向第二个链表。

当t1的值大于s2的值,s1和s2依次后移,循环后再判断。

如果t1的值小于s2,说明t1要插入到s1和s2之间;t1变成t2,t2编程t1的后续。

循环的终止条件是:s2或t2任意一个变成NULL,就说明其中一条链表到了结尾。


代码如下,测试通过了:

typedef struct header
{
    int V;
    struct header * pnext;
} Node;

Node * link_merg(Node * p1, Node *p2)
{
    Node *s1=p1, *s2, *t1=p2, *t2;
    
    if(s1->V > t1->V)
    {
  
### 四川大学数据库课程简答 #### 简答示例 1. **名词解释:DB、DBMS、DBS** DB指的是数据库(DataBase),用于存储和管理数据;DBMS指数据库管理系统(DataBase Management System),负责管理和控制数据库的操作;DBS指数据库系统(DataBase System),它不仅包含了DBMS还涵盖了与之交互的相关人员和技术环境[^2]。 2. **数据库系统的组成要素是什么?** 数据库系统(DBS)由硬件、软件、数据库本身以及用户构成。其中,硬件提供运行平台和支持设施;软件则包括操作系统、实用程序及最重要的组成部分——数据库管理系统(DBMS)。 3. **什么是事务(Transaction)? 它具有哪些特性?** 事务是指访问并可能更新各种持久数据项的一个操作序列。为了确保数据的一致性和可靠性,每个事务都应具备ACID四个基本属性: - 原子性(Atomicity): 整个事务要么全部执行成功,要么完全不发生; - 一致性(Consistency): 执行前后保持一致的状态; - 隔离性(Isolation): 多个并发事务之间相互独立不受干扰; - 持久性(Durability): 已提交的结果不会因任何原因丢失或撤销[^1]。 4. **简述E-R模型中的实体(Entity), 属性(Attribute) 和联系(Relationship)** E-R图是一种概念建模工具,用来示现实世界的信息结构。在E-R模型里: - 实体代实际存在的对象或事件,通常用矩形框来描绘; - 属性描述了实体的具体特征,椭圆内标注名称并与所属实体相连; - 联系达了不同实体间的关联方式,通过菱形连接两个或多于两个实体,并标明其基数比例。 5. **SQL语言的主要功能有哪些?** SQL (Structured Query Language) 是一种专门针对关系型数据库设计的标准查询语言,主要用于定义、操纵和维护数据库内的格和其他组件。它的核心作用体现在以下几个方面: - DDL(Data Definition Language): 创建(Create)/修改(Alter)/删除(Drop) 格及其他模式对象; - DML(Data Manipulation Language): 插入(Insert into)/更新(Update)/删除(Delete from) 记录; - DCL(Data Control Language): 授权(Grant)/回收(Revoke) 权限给其他用户; - TCL(Transaction Control Language): 开始(Begin transaction)/保存点(Savepoint)/回滚(Rollback)/提交(Commit) 交易过程。 ```sql -- 示例代码展示如何创建一个 CREATE TABLE Students ( ID INT PRIMARY KEY, Name VARCHAR(50), Age INT ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值