自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 C语言中的 extern关键字

.h文件中有什么?(1)#define(2)typedef(3)函数声明(4)extern变量C++标准并没有规定头文件中不能定义变量,只不过如果在头文件中定义变量,而该头文件被多次包含的话,会造成变量重定义问题(定义和声明是不同的,一个程序中对变量只能定义一次,声明可以多次)。也就是说头文件中不能放定义,但是有三个例外:(1)static int x=20;(2)类...

2019-02-28 20:56:24 967

原创 给定一个二叉树,返回它的前序遍历

函数原型:int* PreOrderTraverSal(struct TreeNode* root, int* returnSize);returnSize拿到二叉树结点个数,返回前序遍历结果存的空间起始地址。方法一:在C语言中,我们需要创建一个动态顺序表来存储二叉树的遍历顺序,但是如果在C++中的话,可以直接使用vector,它就是现成的动态顺序表。//先创建一个动态顺序表,并...

2019-02-28 16:14:45 2577

原创 用队列实现栈

用两个队列->栈。始终保持一个队列是空的(用来倒数据),入数据时往非空的那个队列入,出数据时将非空队列中n-1个数据倒在空队列中,令最终剩的那个数据出去。这样就模拟出栈的思想。由于对于队列来说,倒一次数据并不改变原数据的顺序,因此每次出数据都要倒一次,而不像两个栈实现队列,两个栈只要倒一次数据就可以实现队列的思想。 需要注意的是,在C语言中,假定我们已经实现了队...

2019-02-28 14:38:15 122

原创 c++中类型转换操作符

在C语言中,类型转换只需要在变量前加上转换的类型即可,而且转换可以是双向的,但是这种粗暴的类型对付基本类型还可以,对付复杂类型就力不从心了。因此C++提供了四种类型转换操作符:static_cast、dynamic_cast、const_cast、reinterpret(1)static_cast static_cast可以完全代替C风格的类型转换实现基...

2019-02-28 12:33:31 448

原创 C语言包含两种头文件的方法区别

通过#include<> 与 #include""都可以将指定文件中的内容引入到当前文件,但是二者在搜索被引用文件时的搜索策略不同:(1)#include<>直接从编译器指定的路径出搜索,找不到直接报错。即库目录C:Program Files\Microsoft Visual Studio\VC\include(2)#include""首先在程序当前目录中进行搜索,...

2019-02-27 20:38:18 3279

原创 C语言中的“三字母词”

在ANSI标准中,定义了“三字母词”,也叫为“三联符序列”。目的主要是为了在一些特定的字符集中。三字母词”有且仅有9个,如以下。源代码中的“三字母词”,在编译阶段会被替换为“对应的字符”。但是由于编译器的原因,对ANSIC的支持也不一样,所以有些C编译器不处理“三字母词”,将它们当做普通的字符串来处理。...

2019-02-27 19:13:30 550

原创 模拟实现“堆”数据结构

“堆”是一种特殊的数据结构,可以将其看成是一棵“完全二叉树”的顺序存储。堆可以用数组来实现。完全二叉树的结点存储在数组中时,父结点与左孩子、右孩子的关系是:(1)一个节点的下标是i,其左孩子下标是2*i+1,右孩子下标是2*i+2 (2)一个节点的下标是i,其父结点的下标是(i-1)/2.另外判断下标为i的结点是不是叶子结点,看它的左孩子下标是否存在,即(2*i+1)<数组长度,说明它没...

2019-02-27 16:41:07 168

原创 模拟实现“队列”数据结构

队列也是一种特殊的数据结构,原则是先进先出(FIFO)。只允许在一端插入,称为“队尾”,在另一端删除,称为“队头”。队列可以用数组、链表实现,但是用链表实现更优。以下就是使用链表实现的。Queue.h#pragma once#include "Commen.h"//队列-->单链表实现typedef int QDataType;typedef struct Que...

2019-02-26 19:06:24 280

原创 模拟实现“栈”数据结构

“栈”是一种数据结构-特殊的线性表。原则是后进先出(LIFO)。只允许在固定的一一端进行插入、删除,称为“栈顶”,而另一端称为“栈底”。“栈”可以用数组、链表来模拟实现,但是数组方式更优,以下我们就使用数组来模拟实现。Stack.h #pragma once#include "Commen.h"//栈--数组实现typedef int STDataType;typede...

2019-02-26 17:34:32 196

原创 检查括号是否匹配问题

借助于栈实现:方法(1):依次读取每个字符,如果是左括号就入栈,如果是右括号,看栈顶是否是对应的左括号,是的话弹出栈顶元素,代表一对括号匹配完毕,再判断下一个字符。不是的话,说明匹配失败。最后记得要判断栈为空才匹配成功,防止左括号个数与右括号个数不一致。方法(2):与方法1思想一致,只是方法二的扩展性较好,假如增加其它的括号(如<、>)等。方法一代码:(如果是C语言中,前提是你...

2019-02-26 17:25:55 6347

原创 实现一个最小栈

设计一个栈,支持push、pop、top等操作。并且能够在O(1)的时间内检索到最小元素,即设计一个“最小栈”。思路:用两个栈实现。一个普通栈,一个min栈(普通栈负责数据的入、出,min栈的栈顶永远保存当前元素的最小值)。第一次入栈时,入到普通栈、min栈中。再次入往普通栈入数据时,当该数据<=min栈栈顶元素时,也将该数据入到min栈中,否则只入到普通栈中。从普通栈出数据时,该数据==m...

2019-02-26 17:20:31 273

原创 用栈实现队列

使用两个栈(一个入栈,一个出栈)实现队列。入栈时就往"入栈"中放数据,出栈时从"出栈的栈顶取数据",如果出栈为空,就从"入栈"中将数据倒过来,而且只需倒一次,就可以达到"队列"的效果。在C语言中,我们需要自己定义栈数据结构以及一些操作,再创建该结构的两个栈对象。而在C++中,我们可以直接调用库创建两个栈变量。以下代码的前提是假设我们已经实现好了栈结构及其接口(Stack)以下是数据结构以及一些...

2019-02-26 17:15:27 348

原创 设计循环队列

循环队列,也叫“环形队列”。它指的是:将队列抽象成一个环形,如果队头前面有空间,我们可以继续使用。环形队列可以用数组、链表实现,以下我们使用数组实现。环形队列的队头front表示第一个入队的元素下标,队尾rear代表最后一个有效元素的下一个位置下标。因此,环形队列判空条件是front==rear,判满的条件是(rear+1)%n==front.n表示数组总大小(n=k+1,k表示有效元素个数)...

2019-02-26 17:08:04 784

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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