thumbnail
文件系统的链接与备份
软链接与硬链接 软链接和硬链接是两种不同的链接方式,它们虽然都可以让多个文件名指向同一个文件内容,但是它们的实现机制和使用场景有所不同。 软链接是一种特殊的文件类型,它创建了一个指向另一个文件的符号链接。软链接类似于Windows系统中的快捷方式,它保存原始文件路径信息而不是实际的文件数据,因此软链接可以跨越不同的文件系统进行创建。另外,当源文件被…
散列表
散列思想 散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。 散列函数 散列函数,顾名思义,它是一个函数。我们可以把它定义成 hash(key),其中 key 表示元素的键值,hash(key) 的值表示经过散列函数计算得到的散列值。 该如何构造散列函数呢?我总结了…
thumbnail
查找
二分查找 public int bsearch(int[] a, int n, int value) { int low = 0; int high = n - 1; while (low <= high) { int mid = (low + high) / 2; if (a[mid] == value) { return mid; } e…
thumbnail
非线性表(树,图)
递归 递归的三个关键: 1.定义需要递归的问题(重叠子问题)——数学归纳法思维 2.确定递归边界 3.保护与还原现场 递归形式 时间复杂度 常见问题 指数型 k^n 子集,大体积背包 排列型 n! 全排列,旅行商,N皇后 组合型 n!/m! * (n-m)! 组合选数 递归模板 void recursion(int level, int param…
thumbnail
线性表(链表,栈,队列)常见问题
数组 变长数组(resizable array) C++: vector Java: ArrayList. Python: list 如何实现一个变长数组? 支持索引与随机访问·分配多长的连续空间? 空间不够用了怎么办? 空间剩余很多如何回收? 一个简易的实现方法 初始:空数组,分配常数空间,记录实际长度(size)和容量(capacity) Pu…