1
0

算法:数据结构

This commit is contained in:
周中平 2022-08-25 14:56:27 +08:00
parent 973e28ad64
commit 6636f86f66
6 changed files with 102 additions and 225 deletions

32
.obsidian/workspace vendored
View File

@ -7,8 +7,13 @@
"id": "742c808ba884e60f", "id": "742c808ba884e60f",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "empty", "type": "markdown",
"state": {} "state": {
"file": "wiki/algo/概述/算法.md",
"mode": "source",
"backlinks": false,
"source": false
}
} }
} }
], ],
@ -92,7 +97,9 @@
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "outline", "type": "outline",
"state": {} "state": {
"file": "wiki/algo/概述/算法.md"
}
} }
}, },
{ {
@ -111,23 +118,24 @@
"state": {} "state": {}
} }
} }
] ],
"currentTab": 4
} }
], ],
"direction": "horizontal", "direction": "horizontal",
"width": 238.5 "width": 238.5
}, },
"active": "73ad29197a6e1773", "active": "ed729260027c7607",
"lastOpenFiles": [ "lastOpenFiles": [
"wiki/algo/概述/数据结构.md",
"wiki/algo/概述/算法.md",
"templates/文档 - 完全模板.md",
"templates/文档 - 快速模板.md",
"wiki/algo/常见算法.md",
"templates/日志 - 季度模板.md",
"blog/写十万字的博客是一种什么感觉.md", "blog/写十万字的博客是一种什么感觉.md",
"blog/未命名.md", "blog/未命名.md",
"templates/博客 - 快速模板.md", "templates/博客 - 快速模板.md",
"templates/文档 - 快速模板.md", "templates/日志 - 周记模板.md"
"templates/文档 - 完全模板.md",
"templates/日志 - 周记模板.md",
"templates/日志 - 日记模板.md",
"templates/日志 - 季度模板.md",
"templates/博客 - 完全模板.md",
"未命名.md"
] ]
} }

View File

@ -244,7 +244,7 @@ const config = {
to: "/dev", to: "/dev",
}, },
{ {
label: "逻辑算法", label: "算法逻辑",
to: "/algo", to: "/algo",
}, },
{ {

View File

@ -21,7 +21,6 @@ slug: string | 自定义文档的 URL
tags: tags:
- 文档标签 - 文档标签
draft: boolean | 表明文档处于未完成状态 draft: boolean | 表明文档处于未完成状态
last_update:
date: 1/1/2000 date: 1/1/2000
author: 自定义作者名 author: 自定义作者名
--- ---

View File

@ -5,7 +5,6 @@ keywords:
- 关键字 - 关键字
tags: tags:
- 标签 - 标签
last_update:
author: 7Wate author: 7Wate
date: <% tp.date.now("YYYY-MM-DD") %> date: <% tp.date.now("YYYY-MM-DD") %>
--- ---

View File

@ -1,202 +0,0 @@
---
id: 常见代码
title: 常见代码
sidebar_position: 3
data: 2022年1月27日
---
## 九九乘法表
```python
"""
输出乘法口诀表(九九表)
Version: 0.1
Author: 骆昊
"""
for i in range(1, 10):
for j in range(1, i + 1):
print('%d*%d=%d' % (i, j, i * j), end='\t')
print()
```
## 判断是不是素数
```python
"""
输入一个正整数判断它是不是素数
Version: 0.1
Author: 骆昊
Date: 2018-03-01
"""
from math import sqrt
num = int(input('请输入一个正整数: '))
end = int(sqrt(num))
is_prime = True
for x in range(2, end + 1):
if num % x == 0:
is_prime = False
break
if is_prime and num != 1:
print('%d是素数' % num)
else:
print('%d不是素数' % num)
```
## 打印三角形图案
```python
*
**
***
****
*****
```
```python
*
**
***
****
*****
```
```python
*
***
*****
*******
*********
```
```python
"""
打印三角形图案
Version: 0.1
Author: 骆昊
"""
row = int(input('请输入行数: '))
for i in range(row):
for _ in range(i + 1):
print('*', end='')
print()
for i in range(row):
for j in range(row):
if j < row - i - 1:
print(' ', end='')
else:
print('*', end='')
print()
for i in range(row):
for _ in range(row - i - 1):
print(' ', end='')
for _ in range(2 * i + 1):
print('*', end='')
print()
```
## 寻找水仙花数
```python
"""
找出所有水仙花数
Version: 0.1
Author: 骆昊
"""
for num in range(100, 1000):
low = num % 10
mid = num // 10 % 10
high = num // 100
if num == low ** 3 + mid ** 3 + high ** 3:
print(num)
```
## 数字反转
```python
"""
正整数的反转
Version: 0.1
Author: 骆昊
"""
num = int(input('num = '))
reversed_num = 0
while num > 0:
reversed_num = reversed_num * 10 + num % 10
num //= 10
print(reversed_num)
```
## 百钱百鸡
```python
"""
《百钱百鸡》问题
Version: 0.1
Author: 骆昊
"""
for x in range(0, 20):
for y in range(0, 33):
z = 100 - x - y
if 5 * x + 3 * y + z / 3 == 100:
print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (x, y, z))
```
## CRAPS赌博游戏
```python
"""
Craps赌博游戏
我们设定玩家开始游戏时有1000元的赌注
游戏结束的条件是玩家输光所有的赌注
Version: 0.1
Author: 骆昊
"""
from random import randint
money = 1000
while money > 0:
print('你的总资产为:', money)
needs_go_on = False
while True:
debt = int(input('请下注: '))
if 0 < debt <= money:
break
first = randint(1, 6) + randint(1, 6)
print('玩家摇出了%d点' % first)
if first == 7 or first == 11:
print('玩家胜!')
money += debt
elif first == 2 or first == 3 or first == 12:
print('庄家胜!')
money -= debt
else:
needs_go_on = True
while needs_go_on:
needs_go_on = False
current = randint(1, 6) + randint(1, 6)
print('玩家摇出了%d点' % current)
if current == 7:
print('庄家胜')
money -= debt
elif current == first:
print('玩家胜')
money += debt
else:
needs_go_on = True
print('你破产了, 游戏结束!')
```

View File

@ -0,0 +1,73 @@
---
title: 数据结构
description: 数据结构的定义
keywords:
- 数据结构
- 抽象数据类型
tags:
- 数据结构
author: 7Wate
date: 2022-08-25
---
## 概述
数据结构是相互之间存在**一种或多种特定关系**的数据元素的集合。
## 数据
数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
**数据项 > 数据元素 >> 数据对象:数据项构成了数据元素,数据元素组合成了数据对象。**
## 结构
结构是不同数据元素之间不是独立的,而是存在特定的关系。
### 逻辑结构
逻辑结构是指**数据对象 中 数据元素**之间的相互关系。
- 集合:集合结构中的数据元素除了属于一个集合外,它们之间**没有其他关系**。
- 线性:线性结构中的数据元素之间是**一对一的关系**。
- 树形:树形结构中的数据元素之间存在一种**多对多的层次关系**。
- 图形:图形结构的数据元素是**多对多的关系**。
### 物理结构
物理结构是指数据的逻辑结构在计算机中的存储形式。
#### 顺序存储
顺序存储结构是把数据元素放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
#### 链式存储
链式存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
## 数据类型
数据类型是指一组**性质相同的值的集合**以及定义在此**集合上的一些操作**的总称。
### 定义
- 相同数据对象集合(例如整数 > 整数型,字符 > 字符型)。
- 集合相关联的操作(整数可以加减,字符可以拼接)。
### 分类
- 原子类型(字节型、数值型、字符串型)。
- 结构类型(原子类型的组合)。
## 抽象数据类型
抽象数据类型Abstract Data TypeADT是指一个数学模型及其定义在该模型上的一组操作。
```markdown
ADT 抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作1
初始条件
操作结果描述
操作2
…………
操作n
…………
endADT
```