🌈 style:
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
# 目录
|
||||
|
||||
- [目录](#目录)
|
||||
- [数据结构](#数据结构)
|
||||
- [架构梳理](#架构梳理)
|
||||
- [静态库与动态库](#静态库与动态库)
|
||||
- [静态库](#静态库)
|
||||
- [以链式双向链表的`lib2`为例。](#以链式双向链表的lib2为例)
|
||||
- [以链式双向链表的`lib2`为例](#以链式双向链表的lib2为例)
|
||||
- [动态库](#动态库)
|
||||
- [还是以`lib2`为例。](#还是以lib2为例)
|
||||
- [以链式存储栈为例,`libstack`依赖`libllist`。](#以链式存储栈为例libstack依赖libllist)
|
||||
|
||||
- [还是以`lib2`为例](#还是以lib2为例)
|
||||
- [以链式存储栈为例,`libstack`依赖`libllist`](#以链式存储栈为例libstack依赖libllist)
|
||||
|
||||
# 数据结构
|
||||
|
||||
@@ -27,18 +27,18 @@
|
||||
会更加简单,无头的话,更改首部节点会麻烦。
|
||||
|
||||
头节点不仅可以作为起点,还可以作为存储信息的仓库,因为头节点只有*next是必须的。
|
||||
|
||||
|
||||
- 单链表
|
||||
- 循环
|
||||
- 不循环
|
||||
|
||||
|
||||
- 双向链表
|
||||
|
||||
|
||||
`lib`四个版本,第一个最基础完善,第二个改成了变长结构体,第三个在第二个的基础上封装了函数指针,第四个在第二个的基础上隐藏了数据结构,只暴露接口。
|
||||
|
||||
|
||||
- 循环
|
||||
- 不循环
|
||||
|
||||
|
||||
学到这里可以去读一下内核有关**list**的实现,主要都是宏和内联函数。
|
||||
|
||||
- 栈
|
||||
@@ -52,8 +52,6 @@
|
||||
2. 球钟算法
|
||||
三个栈,1h,5min,1min。27个球,过了多久队列里又是1到27的顺序。
|
||||
|
||||
|
||||
|
||||
- 树状(1:N)
|
||||
|
||||
**递归**。**递归**转**非递归**。
|
||||
@@ -86,35 +84,25 @@
|
||||
- 后序(左,右,根)
|
||||
|
||||
先加中,或者,中加后,都可以逆推出树。先加后不行。
|
||||
|
||||
|
||||
|
||||
|
||||
- 平衡:
|
||||
|
||||
有很多种条件判定。
|
||||
|
||||
这棵树的左右子树个数差值为1。
|
||||
|
||||
|
||||
|
||||
- 广义表
|
||||
|
||||
`( root ( left ) ( right) )`,进行嵌套。
|
||||
|
||||
|
||||
|
||||
`( root ( left ) ( right) )`,进行嵌套。
|
||||
|
||||
- 搜索树
|
||||
|
||||
空间换时间,查找是**o(1)**。
|
||||
|
||||
**课后作业:词频统计**
|
||||
|
||||
|
||||
|
||||
- 图(N:M)
|
||||
|
||||
|
||||
|
||||
## 静态库与动态库
|
||||
|
||||
- 静态库:
|
||||
@@ -124,8 +112,6 @@
|
||||
- 公交车,只能在指定的路径。
|
||||
- 运行时引入,占用运行时间。
|
||||
|
||||
|
||||
|
||||
### 静态库
|
||||
|
||||
1. `libxx.a`
|
||||
@@ -140,9 +126,7 @@
|
||||
5. `ldd -print shared libirary dependencies`
|
||||
打印所用到的动态库的内容
|
||||
|
||||
|
||||
|
||||
#### 以链式双向链表的`lib2`为例。
|
||||
#### 以链式双向链表的`lib2`为例
|
||||
|
||||
```bash
|
||||
*[main][~/workspace/Linux-C-Notes/Chapter11/ds/line/list/linklist/double/lib2]$ ldd ./main
|
||||
@@ -180,10 +164,9 @@
|
||||
1 std1 77 15
|
||||
0 std0 83 86
|
||||
```
|
||||
|
||||
这时`main.c`路径下都不需要`llist.c`和`llist.h`了,`#include`时也从`"llist.h"`变为`<llist.h>`。
|
||||
|
||||
|
||||
|
||||
### 动态库
|
||||
|
||||
1. `libxx.so`
|
||||
@@ -203,10 +186,7 @@ cp xx.co ~/lib
|
||||
export LD_LIBRARY_PATH= ~/lib
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 还是以`lib2`为例。
|
||||
|
||||
#### 还是以`lib2`为例
|
||||
|
||||
```bash
|
||||
*[main][~/workspace/Linux-C-Notes/Chapter11/ds/line/list/linklist/double/lib2]$ ls
|
||||
@@ -246,9 +226,7 @@ export LD_LIBRARY_PATH= ~/lib
|
||||
>
|
||||
> 当动态库和静态库重名,会优先链接**静态库**。
|
||||
|
||||
|
||||
|
||||
#### 以链式存储栈为例,`libstack`依赖`libllist`。
|
||||
#### 以链式存储栈为例,`libstack`依赖`libllist`
|
||||
|
||||
```bash
|
||||
*[main][~/workspace/Linux-C-Notes/Chapter11/ds/line/stack/list]$ ls
|
||||
@@ -291,4 +269,4 @@ collect2: error: ld returned 1 exit status
|
||||
0 stu0 83 86
|
||||
```
|
||||
|
||||
添加动态库记得重载配置文件`sudo /sbin/ldconfig`!
|
||||
添加动态库记得重载配置文件`sudo /sbin/ldconfig`!
|
||||
|
||||
Reference in New Issue
Block a user