Skip to content

Commit c3b2ca4

Browse files
committed
添加链队列、单链表、双向链表、循环链表、哈希表
1 parent 5ee7632 commit c3b2ca4

6 files changed

+60
-2
lines changed

README.md

+60-2
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,72 @@ typedef struct {
9292

9393
### 链式结构
9494

95-
#### 链栈(Link Stack)
95+
```cpp
96+
typedef struct LNode {
97+
ElemType data;
98+
struct LNode *next;
99+
} LNode, *LinkList;
100+
```
96101
97102
#### 链队列(Link Queue)
98103
99-
#### 线性表的链式表示(Link List)
104+
![](images/LinkQueue.png)
105+
106+
#### 线性表的链式表示
107+
108+
##### 单链表(Link List)
109+
110+
![](images/LinkList.png)
111+
112+
##### 双向链表(Du-Link-List)
113+
114+
![](images/DuLinkList.png)
115+
116+
##### 循环链表(Cir-Link-List)
117+
118+
![](images/CirLinkList.png)
100119
101120
### 哈希表
102121
122+
#### 概念
123+
124+
哈希函数:`H(key): K -> D , key ∈ K`
125+
126+
#### 构造方法
127+
128+
* 直接定址法
129+
* 除留余数法
130+
* 数字分析法
131+
* 折叠法
132+
* 平方取中法
133+
134+
#### 冲突处理方法
135+
136+
* 链地址法:key相同的用单链表链接
137+
* 开放定址法
138+
* 线性探测法:key相同 -> 放到key的下一个位置,`Hi = (H(key) + i) % m`
139+
* 二次探测法:key相同 -> 放到 `Di = 1^2, -1^2, ..., ±(k)^2,(k<=m/2)`
140+
* 随机探测法:`H = (H(key) + 伪随机数) % m`
141+
142+
#### 线性探测的哈希表数据结构
143+
144+
```cpp
145+
146+
typedef char KeyType;
147+
148+
typedef struct {
149+
KeyType key;
150+
}RcdType;
151+
152+
typedef struct {
153+
RcdType *rcd;
154+
int size;
155+
int count;
156+
bool *tag;
157+
}HashTable;
158+
```
159+
![](images/HashTable.png)
160+
103161
### 递归
104162

105163
### 二叉树

images/CirLinkList.png

4.17 KB
Loading

images/DuLinkList.png

3.53 KB
Loading

images/HashTable.png

14.5 KB
Loading

images/LinkList.png

7.65 KB
Loading

images/LinkQueue.png

4.73 KB
Loading

0 commit comments

Comments
 (0)