知识准备二叉树基础请见:二叉树基础 1 二叉查找树二叉查找树又称二叉搜索树(Binary Search Tree)或二叉排序树(Binary Sort Tree)。其或者是一棵空树,或者是具有下列性质的二叉树: 1 若左子树不空,则...
前缀、中缀、后缀表达式
一、简介前缀表达式、中缀表达式、后缀表达式都是数学中四则运算的表达方式。 日常生活中我们最常见的形如(a+b)xc表达式即中缀表达式,即操作符位于左右操作数的中间。但是计算机中利用中缀表达式计算求值则比较麻烦,需要将中缀表达式转换成表...
C++基础之字节对齐
本文转自C语言字节对齐问题详解, 做了一定的删减和修改。 1. 什么是字节对齐 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的...
面向对象设计之建造者模式
建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。可以将复杂对象的创建过程独立出来,简化逻辑。 直接从代码感受吧 12345678910111213141516171819202122232425262728293031323...
面向对象设计模式之单例模式
单例是最简单的一种设计模式,其只有一个类定义,整个系统运行中,该类只允许存在一个实例。 单例模式不能让外部创建该类实例,只能自己类内部创建唯一实例,所以需要将构造函数私有化。 单例通常有两种实现方式:饿汉模式和懒汉模式。 恶汉模式:在...
面向对象设计模式之工厂模式
工厂模式有三类:简单工厂,工厂方法,抽象工厂。复杂度依次递增。 我们先假设有一组产品: 12345678910111213141516//抽象产品:偶像明星public interface Idol { public voi...
面向对象程序设计七大原则
面向对象七大原则是人们总结的程序设计和设计模式的基础和指导思想。根据这七大原则编写的程序通常结构更合理,更易理解,易扩展,易维护。 1. 单一职责原则 (Single responsibility principle) 描述:一个类应...
linux内存管理和虚拟内存
一、虚拟内存简介在现代操作系统中,进程之间共享使用cpu和内存,但是内存资源有限,为了更加高效地使用内存,现代操作系统提供一个内存抽象—虚拟内存。 虚拟内存是操作系统内核为了对进程地址空间进行管理而精心设计的一个逻辑意义上的内存空间概...