数据结构重读 – 线性表的顺序存储

1、线性表也可以用顺序表示实现,即用一组地址连续的存储单元依次存储线性表的数据元素。特点是ai和ai+1位于相邻的存储单元上,只要确定了存储线性表的起始位置,任意元素都可以随机存取。

2、LOC(ai) = LOC(a1)+(i-1)*l

3、通常用数组来描述数据结构中的顺序存储结构。

4、线性表的顺序存储不同于数组的地方是:数组的大小是静态不动的;而线性表类似于C++中的vector,如果存储空间不够,会自动的增加内部空间,而这一切,对外部用户是透明的。

5、顺序存储的[......]

继续阅读

数据结构重读 - 线性表的链式存储

1、链式存储,可以简称链表。

2、链表的一个结点(node)由两部分组成:数据域和指针域。

3、整个链表的存取必须从头指针开始,链表最后一个结点的指针为空,因此它是非随机存取的数据结构。

4、链表中插入结点:假设原结点为p,新结点为s,则:

s->next = p->next;

p->next = s;

不是很难理解吧……

5、基本操作还是比较简单的,下面假定采用无“空头”模式的如下链表:
#define INVALID 0xffff[......]

继续阅读

数据结构重读 - 冒泡排序

发现自己学的最水的一门就是本科的数据结构了,我现在连冒泡排序都写不出来,sign。。。从今天开始重读数据结构。

冒泡排序:

对于有N个数的数组:

(1) 第1趟从第1个开始,如果arr[j] >= arr[j+1],swap(arr[j], arr[j+1])。本趟的结果是将最“大”的放在最后的位置上。
(2)第2趟仍然从第1个开始,执行大则swap但只执行到n-1的位置上,即次大的放到n-1上。
以此类推……
注:可优化,如果某一轮没有任何swap,说明已经有序了[......]

继续阅读

Java核心技术卷II(第8版) – 读书笔记 – 第12章

本章的内容是JNI(Java Native Interface),即从Java中访问本地方法(其他语言)。

1、当需要在Java中嵌入其他语言编写的代码,如C时,后者称为本地代码。

2、一般来说,Java虽然在单纯运算方面效率慢于C等,但这往往不是性能瓶颈。例如密码运算在某C/S中占用的时间为10%,网络、I/O速度占90%,用C比Java快两倍,则speedup只有1+0.1*2=1.2,只提升了20%(阿姆达尔定律)。

3、当然,如果项目是遗留的,之前已经有了大量,无法被迁[......]

继续阅读