恋恋风辰的个人博客


  • Home

  • Archives

  • Categories

  • Tags

  • Search

红黑树的原理和实现

Posted on 2017-10-18 | In 数据结构和算法

红黑树是高效查找和插入删除的数据结构,用途很广泛,如epoll的消息注册机制,stl中的map都采用了红黑树。

红黑树的主要特性:

(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。

定理:一棵含有n个节点的红黑树的高度至多为2log(n+1)。

Read more »

二叉搜索树

Posted on 2017-10-09 | In 数据结构和算法

最近复习了二叉搜索树的基础知识,总结下,然后用C++实现二叉搜索树的插入,删除,查找等,也是为了实现红黑树做铺垫。
一个二叉搜索树结构如下,父节点做子树都比父节点小,右子树都比父节点大。
1.png
插入节点12后,如下

Read more »

python学习(十一)异常处理和测试

Posted on 2017-09-20 | In python

最近学习了python的错误处理和几种测试方法

try except

可以通过try except方式捕捉异常

1
2
3
4
5
6
7
8
9
try:
print('try...')
r = 10/0
print('result is :', r)
except ZeroDiversionError as e:
print('except is :', e)
finally:
print('finally ...')
print('END')

可以捕捉不同类型的错误,编写多个except

Read more »

python学习(十)元类学习和应用

Posted on 2017-09-07 | In python

python 可以通过type函数创建类,也可通过type判断数据类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import socket
from io import StringIO
import sys
class TypeClass(object):
def typeprint(self, name = 'typeclass'):
print('class name is %s' %(name))

typeclasses = TypeClass()
print(type(TypeClass))
print(type(typeclasses))

def printHW(self):
print('Hello world!!!')
TypeClass2 = type('TypeClass2', (object,), dict(typeprinthw = printHW))
typeclass2 = TypeClass2()
typeclass2.typeprinthw()

type创建类格式为type(‘类名’,(基类1,基类2…), dict(成员函数名=函数名))
第一个参数为类名,第二个参数为一个tuple,如果继承的基类只有一个,要注意tuple写法(基类,),第三个参数为dict构造的类成员函数
除了可以用type创建类之外,可以用metaclass限制类的行为

Read more »

python学习(九)网络编程学习--简易网站服务器

Posted on 2017-09-05 | In python

python 网络编程和其他语言都是一样的,服务器这块步骤为:
1. 创建套接字
2. 绑定地址
3. 监听该描述符的所有请求
4. 有新的请求到了调用accept处理请求

Python Web服务器网关接口(Python Web Server Gateway Interface,简称“WSGI”),可以保证同一个服务器响应不同应用框架的请求,WSGI的出现,让开发者可以将网络框架与网络服务器的选择分隔开来,例如,你可以使用Gunicorn或Nginx/uWSGI或Waitress服务器来运行Django、Flask或Pyramid应用。下面简单实现一个机遇WSGI协议的服务器。

Read more »

python学习(八)定制类和枚举

Posted on 2017-08-31 | In python

定制类

python定制类主要是实现特定功能,通过在类中定义特定的函数完成特定的功能。

1
2
3
4
5
6
class Student(object):
def __init__(self, name):
self.name =name

student = Student("lilei")
print(student)

__str__用法

1
2
3
4
5
6
7
8
class Student(object):
def __init__(self, name):
self.name = name
def __str__(self):
return ("self name is %s" %(self.name))

student2 = Student("hanmeimei")
print(student2)
Read more »

使用hexo搭建个人博客

Posted on 2017-08-24 | In 资源共享

本文讲述如何用hexo搭建个人博客,并托管到github。不需要租赁服务器,可完成网站博客的搭建。

安装Hexo

安装hexo之前,要先下载安装Node.js和Git,百度搜索找到下载即可。
Git下载地址
Node.js下载地址
在本地建立一个文件夹,我的文件夹为D:github/hexotest。
接下来可以进入这个文件夹右键Git Bash 或者通过命令号cmd进入这个文件夹
输入如下命令:

1
2
3
4
5
6
7
8
npm install hexo-cli -g 
#初始化网站
hexo init
npm install
#生成或 hexo generate
hexo g
#启动本地服务器
hexo s
Read more »

python学习笔记(七) 类和pygame实现打飞机游戏

Posted on 2017-08-22 | In python

python中类声明如下:

1
2
3
4
5
6
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def printinfo(self):
print('name is %s, score is %d'%(self.name, self.score))
Read more »

python学习笔记(六) 函数式编程

Posted on 2017-08-22 | In python

一 函数对象

函数同样可以作为对象复制给一个变量,如下:

1
2
3
4
5
6
7
8
9
f = abs;
print(f(-10))
f = 'abs';
print(f)

def add(a,b,f):
return f(a) + f(b)

print(add(-1,2,f))
Read more »

python学习笔记(五) 200行实现2048小游戏

Posted on 2017-08-21 | In python

用前文提到的基础知识,和网上流行的2048源码,用python实现该游戏。

先将用户操作和游戏逻辑绑定。

WASD分别对应移动方向上、左、下、右

https://cdn.llfc.club/py051.png
然后实现矩阵的转置和逆置,这样只要实现一个方向的移动,通过转置和逆置就可以得到其他方向的移动。

Read more »
<1…303132…37>

370 posts
17 categories
21 tags
RSS
GitHub ZhiHu
© 2025 恋恋风辰 本站总访问量次 | 本站访客数人
Powered by Hexo
|
Theme — NexT.Muse v5.1.3