- 博客(80)
- 收藏
- 关注
原创 将“talk is cheap show me the code”中的空格替换为“&&&”
将“talk is cheap show me the code”中的空格替换为“&&&” 思路: (1)先将字符串中空格的个数计算出来 (2)重新计算数组中的大小 (3)遇到空格,则替换,不是空格,则直接搬移即可 (4)直到原字符串中的所有元素都被替换完全 具体代码如下所示#includeusing namespace std;#include#include//将“
2018-02-01 19:56:30
555
原创 实现一个栈,要求实现出栈,入栈,返回最小值的操作,时间复杂度为O(1)
题目:实现一个栈,要求实现出栈,入栈,返回最小值的操作,时间复杂度为O(1) 解法:利用两个栈,一个普通栈s,一个最小值栈min, 入栈:将元素压入到s中,比较s中与min中栈顶元素的大小,如果小,则压入到min中,如果栈中为空,则将栈中s的元素也压入到min中 出栈:空栈—–>直接退出 非空栈—–>如果s中与min中的元素大小一致,则两者均删除,否则,删除s中的即可。 获取最小值:在m
2018-01-30 20:23:22
1115
原创 数据结构-----二叉搜索树
一、基本概念 1、二叉搜索树概念 二叉搜索树:又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 (1)若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 (2)若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 (3)它的左右子树也分别为二叉搜索树 2、形式 二、操作 (一)插入 1、若二叉树为空——>直接插入 2、不为空 (1)找插入结点的位
2018-01-27 15:39:55
299
原创 数据结构-----Huffman树
一、基本概念 1、哈夫曼树(Huffman tree),又名最优树,指给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。 2、路径与路径长度 在一棵树中,从一个结点往下可以达到的孩
2018-01-24 18:06:52
471
原创 数据结构-----堆的应用
上次内容中,我们对堆有了一个大概的认识,现在,我们就来看看堆中有哪些应用吧!!! 一、优先级队列 概念:优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。 解释:优先级队列是对堆的一次封装,利用堆的性质,封装出来一个与堆类似的东西,从而达到自己的目的。 下面,直接来上代码,此处的优先级队列,依赖前面的堆的基础实现,有需要的,可以先看堆的实现有关堆的创建与
2018-01-24 16:26:27
309
原创 数据结构之-----堆(1)C++实现
一、概念 数据以数组的形式存储。 如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki = K2*i+1 且 Ki >= K2*i+2) i = 0,1,2…,则称这个堆为最小堆(或最大堆)。 二、形式 最小堆:任一结点的关键码均小于等于它的左右孩子的关键码,位于堆顶结点的关键码最小。 最大堆:
2018-01-23 22:56:12
816
原创 小目标---时钟的实现
利用一个类,将时钟封装起来,只将运行接口暴露在外,从而达到数据的封装。 思路: (1)在类中的构造函数中,利用时间函数获取目前的时间 (2)在运行函数中,需要一个显示函数与一个更新数据的时间的函数 (3)在更新数据的函数中,需要一个清屏函数,从而使得显示不会占满屏幕。 (4)在数据更新函数中,每一次判断是否到达临界状态。
2017-12-03 23:28:03
230
原创 二叉树面试题之二叉树的遍历方式
一、基本概念 1、二叉树的概念 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的二叉树组成(即一个根节点最多只有两个孩子结点)。 2、二叉树的特点 (1)每个结点最多有两棵子树,即二叉树不存在度大于2的结点(分支数最大不超过2) (2)二叉树的子树有左右之分,其子树的次序不能颠倒 3、完全二叉树与满二叉树 (1)满二叉树:在一棵二叉树中
2017-12-02 21:41:56
3648
原创 栈之应用---括号匹配
一、括号匹配的四种可能性:①左右括号配对次序不正确②右括号多于左括号③左括号多于右括号④左右括号匹配正确二、测试代码chara[] ="(())abc{[(])}";//左右括号次序匹配不正确charb[] = "(()))abc{[]}"; //右括号多于左括号char c[] ="(()()abc{[]}" ; /
2017-11-20 21:52:24
464
原创 有关模板类----实现Vector的类模板
由上一篇的文章中 ,我们已经知道,模板是一个代码生成器,可以极大效率提高我们的工作效率,实现让编译器为我们产生代码的机制在C++面向对象中,我们在对类的使用上,已经达到了最少80%了,因此,模板类的使用,将极大的提高程序的运行效率,节省程序的运行时间。(一)概念区分类模板:也称类属类或类生产类,允许用户为类定义一种模式,使得类中的某些数据成员,默写成员函数的参数,某些成员参数的返回值,
2017-10-28 19:43:29
3253
原创 模板(一)----->函数模板
模板是C++语言的一个重要特性。利用模板机制可以显著减少冗余信息,能大幅度地节约程序代码,进一步提高面向对象程序的可重要性和可维护性。模板是实现代码重用机制的一种工具,他可以实现类型参数化,即把类型定义为参数,从而实现代码的复用,使得程序可以用于处理多种不同类型的对象,大幅度的提高程序设计的效率。
2017-10-21 16:08:03
470
原创 C++多态(一)
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。
2017-10-14 21:05:33
424
原创 实现日期类(日期计算器)
在日常生活中,需要我们计算一些日期,如果一些小的数字相加的话,我们便可以很方便的就计算出来,然而如果需要加上一些特别大的数字的时候,则会很浪费我们的时间,因此,日期计算机的出现,极大的方便了我们的生活,为我们带来极大的便利。 下面,我们将给出这个日期计算机的实现方式,希望大家相互学习,相互鼓励。代码思路:当天满时,则向月进位,当月满时,则向年进位。借位同理(判断是否为有效年)。#define _C
2017-09-25 18:37:13
1001
原创 模拟实现strchr、strrchr
strchr() 函数查找字符在指定字符串中从前面开始的第一次出现的位置,如果成功,则返回从该位置到字符串结尾的所有字符,如果失败,则返回 NULL。
2017-08-01 15:25:59
538
原创 模拟实现strstr、strrstr
strstr表示在字符串中找子串,其原型为:char *strstr( const char *string, const char *strCharSet );这个函数的含义是是,在string中找strCharSet第1次出现的位置,并返回一个指向该位置的指针。如果strCharSet并没有完整的出现在string的任何位置,函数返回一个NULL指针,如果函数的第二个参数为一个空字符串,函数则返
2017-08-01 13:54:34
508
转载 有关注释转换de实现
注释转换用于文件中,将文件里面的C风格的注释,转换为CPP风格的注释。 C风格注释:/* ############ */ CPP风格注释://
2017-07-30 10:37:36
306
原创 模拟实现长度受限制的字符串函数(strncpy、strncat、strncmp)
根据以上可知,在有的情况下,长度不受限制的字符串函数已经不能满足我们的需求,因此,便需要一些长度受限制的字符串函数,来满足我们的需要。 长度受限制的字符串函数,可以根据我们的需求,给指定的长度,从而完成我们的需求。
2017-07-30 10:15:54
348
原创 模拟实现不受限制的字符串函数(strcat、strcpy、strcmp)
1)目标空间足够大, 2)原字符串有‘\0 目标空间可改 (strcpy 字符串拷贝) 目标字符串中’\0’被覆盖(strcat 字符串追加) 目标空间不可改(strcmp 字符串比较) 3)断言(assert)
2017-07-29 21:33:49
365
原创 动态顺序表的实现
动态顺序表的实现,是基于静态顺序表而实现的。将原来静态顺序表中静态定义的数组,改为用来动态定义,从而减少内存的开销,,增大程序的运行效率。
2017-07-28 14:48:22
325
原创 静态顺序表的实现
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。分为静态顺序表和动态顺序表。 而静态顺序表的实现则依据数据在内存中的连续存储而实现的。例如数组,便是数据在内存中的连续存储。
2017-07-28 14:18:54
628
原创 模拟实现strlen函数
字符串函数在我们编程之时,给我们提高了极大的方便,使得我们的代码清晰,明了,在平常,我们是极少需要编写自字符串函数的,但是,如果自己可以动手实现这些函数,对我们理解这些函数,有极大的帮助。
2017-07-24 21:43:46
475
原创 循环语句的简单应用(二分查找、猜数字游戏)
在写代码之时,正确的使用循环语句,可以极大的提高我们的效率,增加代码的可读性,为别人以及自己的学习,带来极大的方便。今天,利用C语言中的循环语句,简单的实现我们的折半查找(二分查找:在有序数组中的查找)以及猜数字游戏。
2017-07-22 15:03:58
1023
原创 利用C语言求解一元二次方程组的解
题目:求一元二次方程的解。 注意:a,b,c是浮点数,浮点数判断是否等于0. 因为浮点数在内存中的存储方式使得,有些浮点数在内存中无法精确存储,这样就会使得浮点数的精度丢失。 因此在浮点数与0作比较时,设置适当的精度,误差在此范围内,便可认为其=0.
2017-07-20 15:46:46
6668
原创 动态通讯录的实现
在前面,我们已经看过了静态通讯录的实现方法,现在,在了解了动态内存开辟之后,可以将静态的改为动态的,从而很大程度的节省了空间,提高了内存的利用率。
2017-07-19 19:41:40
981
原创 判断在存储数据使用的大小端
众所周知,对于数据超过一个字节的数据,在计算机中的存储需要跨越字节。某些机器选择在存储器中按照从最低为有效字节到最高有效字节的顺序存储对象,而另一些机器则按照从最高为有效字节到到最低为有效字节的顺序存储,前一种存储方式被称为小端存储,后一种方式被称为大端存储。判断机器是大端存储还是小端存储,他的实现代码非常简单,下面,我将介绍三种方式,从而让大家判断:第一种:不分装函数,直接在main函数内进行
2017-07-18 19:15:05
454
原创 静态通讯录的实现
利用现学的C语言知识,从而编写一个简单的静态通讯录 通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址 这个通讯录的主要功能有: 1.增加联系人信息 2.删除已增加的联系人 3.查找已增加的联系人 4.显示已增加的联系人 5.对已有联系人按照名字进行排序 6.清空这个通讯录 7.对已有联系人进行修改 8.退出系统
2017-07-16 15:06:22
871
原创 数组的计算 sizeof strlen
一、一维数组的计算(一)int型int a[]={1,2,3,4} printf("%d\n",sizeof(a));\\16 原因是:数组名单独放在sizeof内部,相当于取出整个数组,因为这是一个含四个元素的数组,且都为整型,因此为16。printf("%d\n",sizeof(a+0));\\4原因呢是:a+0表示数组的首元素的地址,而地址在sizeof内,均为4个字节
2017-04-28 21:39:32
509
原创 有关strcpy与strlen的实现
#define _CRT_SECURE_NO_WARNINGS 1 模拟实现strcpy#include#include#includechar*my_strcpy(char*pdest,const char*psou)//*形成链式访问{char*ret = pdest;assert(pdest != NULL);assert(psou != NULL);
2017-04-22 11:29:11
316
原创 做,与众不同的我
大家好,我是一个地地道道的西安妹子,有着西安妹子的爽朗热情,也有着女孩子的温柔。现在,让我来正式介绍一下我,我叫兰妮,来自陕西西安长安。家庭教育的原因,让我从小就有一钟不服输的性格,这样的性格,也就注定了我,对自己决定的事,一定会尽己所能,努力的完成它。 最初接触C语言,是在进入大学的第二年,那时的自己,对什么都一无所知(尤其在电脑这一方面),但是,在学校老师的带领下,慢慢的对这些有了些
2017-03-21 21:46:39
395
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅