12.10 - 合并两个有序链表 && 对字节对齐的理解

目录

1.合并两个有序链表

a.核心思想

b.思路

c.步骤

2.对字节对齐的理解


1.合并两个有序链表

21. 合并两个有序链表 - 力扣(LeetCode)https://leetcode.cn/problems/merge-two-sorted-lists/

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        // 1. 处理特殊情况
        if(!list1)
            return list2;
        if(!list2)
            return list1;
        
        // 2. 给两个链表分别创建两个新的指针
        ListNode* ptr1 = list1;
        ListNode* ptr2 = list2;

        // 3. 创建一个新链表
        ListNode* new_list = new ListNode(-1);
        ListNode* tail = new_list;

        while(ptr1 && ptr2)
        {
            if(ptr1->val < ptr2->val)
            {
                tail->next = ptr1;
                ptr1 = ptr1->next;
            }
            else
            {
                tail->next = ptr2;
                ptr2 = ptr2->next;
            }
            tail = tail->next;
        }

        // 4. 总会有一条链表先走完
        if(ptr1)
            tail->next = ptr1;
        if(ptr2)
            tail->next = ptr2;

        return new_list->next;
    }
};

a.核心思想

合并两个有序链表,生成新有序链表。

b.思路

双指针遍历比较,按序拼接节点。

c.步骤

① 处理边界:任一链表为空时直接返回另一链表。

② 创建虚拟头节点简化操作。

③ 双指针遍历两链表,比较节点值,将较小节点接入新链表并移动指针。

④ 将剩余非空链表直接接入新链表尾部。

⑤ 返回新链表头节点(虚拟头的下一节点)。

2.对字节对齐的理解

字节对齐是数据在内存中按特定边界(如2、4、8字节)存储的规则,核心在于

|--------|--------------------------------------|
| 目的 | 提升CPU访问效率,避免跨边界读取导致的性能损耗。 |
| 原则 | 数据类型按其自然对齐值(如int按4字节)存放,不足时填充空白字节。 |
| 影响 | 影响内存占用和访问速度,需在空间效率与访问效率间权衡。 |
| 应用 | 结构体设计、硬件寄存器访问等场景需显式控制对齐方式。 |

希望这些内容对大家有所帮助!

感谢大家的三连支持!

相关推荐
wenyq72 分钟前
LeetCode 152. Maximum Product Subarray
java·算法·leetcode
余额瞒着我当琳4 分钟前
C++异常,异常的概念,异常抛出与捕获,RAII 和智能指针的设计思路,C++标准库一些指针的使用
java·开发语言·c++·算法
東隅已逝,桑榆非晚5 分钟前
map和set的使用
数据结构·c++·笔记·学习
2601_9707038310 分钟前
除湿机原理研究报告:一台机器在物理上能走多远
大数据·数据结构·算法·数据库架构·推荐算法
骑着蜗牛撵大象32725 分钟前
大模型 SDK 编译就崩?用 CMakeLists 把 httplib、JSON 与 OpenSSL 装配成可复用的 ChatServer
android·java·c++·http·json·cmake·大模型sdk
若亦_29 分钟前
排序>>选择排序
数据结构·算法·排序算法
重生之小比特33 分钟前
【算法拾光】前缀和|一维前缀和 + 二维前缀和
数据结构·算法
文丑颜不良啊1 小时前
LeetCode1181~1200题目解析
java·leetcode
码小猿的CPP工坊1 小时前
C++跨平台开发之基于wxWidgets开发GUI程序简介-002
开发语言·c++
海绵宝宝转agent1 小时前
Leetcode100+面经
java·笔记·学习·算法·leetcode·深度优先