二叉搜索树详解——附加C语言代码实现

二叉搜索树: 对于树中的每个节点X,它的左子树中所有项的值都小于X,右子树所有值都大于X,并且没有重复。 一、构造树: 树可以由一个个的节点构成,所以先定义节点结构体,和数据类型变量重命名 typedef int BSTDataType; typedef struct BSTreeNo...

2018-08-31 15:24:58

阅读数:51

评论数:0

搜索二叉树的删除

搜索二叉树删除比较麻烦,具体看代码里的解释:(删除带有两个子节点的节点需要用到中序后继节点)         //先寻找中序后继节点,再进行删除         //寻找中序后继节点         public Node getHouJiNode(Node delNode) { //定义...

2018-08-29 19:56:31

阅读数:118

评论数:0

双向链表——C语言实现

双向链表 双向链表就是在链表的基础上,加上一个指向前节点的指针,这样就方便了从后面进行的操作。 实现很简单,直接看代码: 头文件: #include <stdio.h> #include <stdlib.h&a...

2018-08-29 19:05:22

阅读数:53

评论数:0

优先队列——C语言实现

队列的特点是,先进先出。 优先队列的特点是,进来的,根据优先次序,一个个出来。我们可以使用堆的思想来解决这个问题。 代码: 堆的实现参照:堆——用C语言实现,里面会用到 头文件(包含堆): #define _CRT_SECURE_NO_WARNINGS 1 #include &...

2018-08-25 17:46:18

阅读数:153

评论数:0

堆——C语言实现

堆是一种数据结构,他的特点在于形成某种优先的结构。在计算机经常用到,比如优先队列,或者是优先进程管理。 堆(也叫二叉堆)的性质: 1、任何一个节点,都不大于他的父亲节点。 2、必须是一颗完全二叉树 比如下面: 我们用一个很经典的堆的实现方法:用数组实现堆。 注意,这里实现的叫最大堆...

2018-08-25 17:30:51

阅读数:169

评论数:0

堆排序——C语言实现

如何构建堆请参照:堆——C语言实现 堆排序: //堆排序 void sortHeap(int arr[], int n){ MH mh;//堆 initMaxHeap(&mh, n); for (int i = 0; i < n; i++)...

2018-08-25 17:30:14

阅读数:29

评论数:0

C语言实现heapify算法堆转换

 heapify算法主要是把一个数组按堆的顺序排好,可以实现一定的优先级,下面是对数组堆化参考: //下移操作: void AdjustDown(MH* mh, int k){ while (k * 2 <= mh->count) { int...

2018-08-25 17:26:57

阅读数:52

评论数:0

python面向对象之属性方法

python的类中有几个加了装饰器的特殊方法成员:静态方法、类方法、属性方法 python之属性方法: 在方法头加上@property,就是一个属性方法。 属性方法是把一个方法变成静态属性,调用时候不需要加小括号()。 class Dog(object): def __init_...

2018-08-23 16:04:03

阅读数:19

评论数:0

python面向对象之类方法

python的类中有几个加了装饰器的特殊方法成员:静态方法、类方法、属性方法 python之类方法: 在方法头加上@classmethod就是类方法 类方法只能访问类变量,不能访问实例变量。 class Dog(object): def __init__(self, name):...

2018-08-23 15:56:22

阅读数:19

评论数:0

python面向对象之静态方法

python的类中有几个加了装饰器的特殊方法成员:静态方法、类方法、属性方法 python之静态方法: 在方法头加上@staticmethod,就是一个静态方法。 静态方法只是写在类里面的方法,和类没什么关系,名义上归类管理,但不能访问类或实例中的任何属性。 我们看一个静态方法的例子就能理...

2018-08-23 15:52:58

阅读数:16

评论数:0

python之面向对象反射机制

python——反射: 就是把从别的地方获得的字符串,当作类里面方法名或者属性名直接调用。 我们知道,导入一个字符串表示的模块可以这样: x = __import__('模块名') 然后可以用x.******来使用模块下的那些方法。 那么,调用类里面的方法,就要用到python里的反...

2018-08-22 22:22:18

阅读数:24

评论数:0

python之创建类的两种方法

python里,类是面向对象的基础。 创建类第一种普遍方式可能都清楚,用class关键字: #第一种方法创建类 class A(object): def __init__(self, name): self.name = name f = A("...

2018-08-22 19:33:21

阅读数:156

评论数:0

python经典类和新式类的写法和区别

python里的类(class)有两种写法: #经典类写法 class People1: pass #新式类写法 class People2(object): pass 这两种写法,建议使用新式类写法,目前python3里基本都采用新式类的写法。 ------------...

2018-08-22 18:46:57

阅读数:197

评论数:0

python之如何实现多态

python如何写多态? 多态:一种接口多种实现,实现接口的重用 举个例子: class Animal(object): def __init__(self, name): self.name = name def talk(self): #抽象方法,仅...

2018-08-22 17:46:42

阅读数:133

评论数:0

python之异常处理详解

有时候,当我们写了一段代码,总是会出各种各样的错误。在项目中也是如此,所以会有异常处理。 异常处理就是: 我们写了一段代码,他可能会出错(溢出、访问为空等等),为了当错误出现时,不让程序立刻崩溃,而是进入别的候选界面时候(比如是否重新输入),这就是异常处理。 异常处理的语法特别简单: t...

2018-08-21 23:23:15

阅读数:24

评论数:0

python之常见异常种类和汇总

最常见的是IndexError(索引错误),KeyError(键错误),ValueError(值错误) 其他常见异常种类: 常见异常种类 异常名称 异常解释 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError ...

2018-08-21 23:22:43

阅读数:137

评论数:0

两个栈实现一个队列

两个栈实现队列其实很简单,因为栈只能先入后出,所以用第二个栈把他倒过来一下,出来的就是队列了。记得注意判断从哪个栈倒到哪个栈就可以了,具体看代码: 代码:c语言实现 //-------------------先实现栈------------------- #define _CRT_SECUR...

2018-08-18 17:57:30

阅读数:21

评论数:0

两个队列实现一个栈

栈是先进后出,队列是先进先出。把一个队列q1当作存数据的队列,另一个队列q2当作替换队列就可以实现一个栈。 具体方法:当进栈的时候,就直接给存数据的队列进去。当要出栈的时候,因为要出队尾,所以我们把q1队列的前n-1个元素一个个出队q1,入队到q2里去,剩下一个元素就是要出栈的元素,然后直接出队...

2018-08-18 17:52:05

阅读数:29

评论数:0

判断元素出栈入栈的合法性

一个例题:  栈的存储是先入后出,所以比如是12345入栈,那么出来就是54321. 但也可以先1234然后4出来,5入栈,再全出,就是45321的顺序。 如何判断这个顺序:每次入栈的时候,都试探一下现在出栈是否符合对应的出去的顺序。就可以了。c++代码如下   #include &a...

2018-08-18 17:28:29

阅读数:74

评论数:0

用一个数组实现两个栈(共享栈)

共享栈: 一个数组实现两个栈,第一个栈是开头,第二个栈是结尾: 用c语言实现,很简单,两个指针一个数组就够了,上代码: #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #includ...

2018-08-18 15:13:08

阅读数:430

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭