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

【408二轮强化】数据结构——线性表

以下是结合两篇内容整理的408数据结构线性表系统复习指南,涵盖核心考点、真题解析、代码模板及备考策略

📚 一、线性表基础概念

1. 定义与分类
类型 存储方式 特点
顺序表 连续内存空间(数组) 支持随机访问(O(1)),插入/删除需移动元素(O(n))
链表 非连续内存(节点+指针) 顺序访问(O(n)),已知前驱时插入/删除O(1);未知时需遍历定位(O(n))
2. 易错点提醒
  • 链表操作误区:链表插入/删除时间复杂度不一定是O(1),需先定位前驱节点。
  • 存取方式:顺序表是随机存取(根据地址直接访问),链表是顺序存取(必须遍历)。

🔢 二、顺序表核心考点

1. 必会手写代码

逆置/循环移位(高频!)

// 三次逆置法(2010/2018/2020真题)
void Reverse(int A[], int left, int right) {while (left < right) {swap(A[left], A[right]);  // 首尾交换left++; right--;}
}
// 循环左移p位:Reverse(A, 0, n-1); Reverse(A, 0, p-1); Reverse(A, p, n-1);

时间复杂度:O(n),空间复杂度:O(1) 。

元素重排(快排思想)

// 负数左移(2018真题)
void MoveNegatives(SqList &L) {int i = 0, j = L.length - 1;while (i < j) {while (i < j && L.data[i] < 0) i++;  // 从左找非负数while (i < j && L.data[j] >= 0) j--; // 从右找负数if (i < j) swap(L.data[i], L.data[j]);}
}
2. 理解即可的算法
  • 最小未出现正整数(2018真题):利用数组下标映射,O(n)时间+O(1)空间。
  • 多数组操作(如三元组最小距离):三指针扫描法(2020真题)。

🔗 三、链表核心考点

1. 必会手写代码

单链表逆置(三指针法)

// 头插法或三指针法(2009/2013真题)
LinkList ReverseList(LinkList L)
http://www.lryc.cn/news/601108.html

相关文章:

  • 最优估计准则与方法(4)最小二乘估计(LS)_学习笔记
  • 最优估计准则与方法(5)加权最小二乘估计(WLS)_学习笔记
  • 尝试几道算法题,提升python编程思维
  • C语言中:形参与实参的那些事
  • 1. Qt多线程开发
  • PYTHON从入门到实践-15数据可视化
  • 方案C,version2
  • 主要分布在腹侧海马体(vHPC)CA1区域(vCA1)的混合调谐细胞(mixed-tuning cells)对NLP中的深层语义分析的积极影响和启示
  • 深度解析 noisereduce:开源音频降噪库实践
  • C 与 C++ 的区别:发展、特性及优缺点详解
  • 对比JS“上下文”与“作用域”
  • 秋招Day19 - 分布式 - 分布式设计
  • RoPE:相对位置编码的旋转革命——原理、演进与大模型应用全景
  • LChot100--128. 最长连续序列
  • 前缀和-238-除自身以外数组的乘积-力扣(LeetCode)
  • 基于深度学习的图像分类:使用Inception-v3实现高效分类
  • FastAPI入门:demo、路径参数、查询参数
  • GPU运维常见问题处理
  • Vibe Coding | 技术让我们回归了创造的本质
  • 基于深度学习的图像分类:使用Capsule Networks实现高效分类
  • 【HTML】<script>元素中的 defer 和 async 属性详解
  • 前端开发 Vue 结合Sentry 实现性能监控
  • 掌握JavaScript函数封装与作用域
  • LeetCode 895:最大频率栈
  • 【micro:bit】从入门到放弃(六):示例蜂鸣器音乐、摇色子、光照强度、串口调试、麦克风
  • C++/CLI与标准C++的语法差异(一)
  • 大话数据结构之 < 栈>(C语言)
  • Pspice仿真电路:(三十四)如何使用Pspcie进行仿真
  • 每日一题【删除有序数组中的重复项 II】
  • k8s之控制器详解