自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用c++实现二叉树的线索化

二叉树的线索化,先序、中序,测试用例实现源代码:#includeusi

2016-05-30 16:59:40 1647

原创 用两个队列模拟实现一个栈的过程

栈具有“后进先出”的特点,即某个元素最后进入栈,却最先出栈;队列具有“先进先出”的特点,即元素从队尾依次进队列,依次从队头出队列;现在用两个队列模拟实现一个栈的过程,详细过程请看下面这张本人制作的gif图:650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/82/0E/wKioL1dJjbLBs09rAALQGkmi570447.gi

2016-05-29 13:44:36 2311 3

原创 打印菜单界面,用c语言实现二叉树的基本操作

打印菜单界面,用c语言实现二叉树的基本操作:其代码原理和用c++实现一样,请看本人上篇博客:二叉树的先序、中序、后序遍历等基本操作c++实现,链接:http://yaoyaolx.blog.51cto.com/10732111/1783527实现代码:#include #include #define MAXSIZE 50//定义二叉树的二叉链表结构typedef struct Node{ cha

2016-05-29 13:44:33 2750

原创 二叉树的先序、中序、后序遍历等基本操作c++实现

二叉树:树的每个节点最多有两个子节点。1.实现二叉链表的结构://节点结构templatestruct  BinaryTreeNode{ BinaryTreeNode* _left;//左子树 BinaryTreeNode* _right;//右子树 T _data;//数据域 //构造函数 BinaryTreeNode(const T& x) :_left(NULL)//左孩子指针 ,_ri

2016-05-29 13:44:27 881

原创 稀疏矩阵的列序递增法和一次定位快速转置法

稀疏矩阵:矩阵中大多数元素为0的矩阵,从直观上讲,当非零元素个数低于总元素的30%时,这样的矩阵为稀疏矩阵。如:int array [6][5] =     {{1, 0, 3, 0, 5},                                              {0, 0, 0, 0, 0},                                         

2016-05-29 13:44:24 2666

原创 二分查找算法的递归、循环实现及其缺陷

关于二分查找法      在学习算法的过程中,我们除了要了解某个算法的基本原理、实现方式,更重要的一个环节是分析算法的复杂度。在时间复杂度和空间复杂度之间,我们又会更注重时间复杂度,往往用牺牲空间换时间的方法提高时间效率。时间复杂度按优劣排差不多集中在:O(1), O(log n), O(n), O(n log n), O(n2), O(nk), O(2n)二分查找法主要是解决在“一堆数中找出指定

2016-05-29 13:44:21 2308

原创 斐波拉契数列的递归、非递归、公式法多种方法实现

实现斐波拉契数列:1,1,2,3,5,8...,当n>=3时,f(n)=f(n-1)+f(n-2)。解:求解斐波拉契数列方法很多,这里提供了4种实现方法和代码,由于第5种数学公式方法代码太过繁琐,只做简单介绍方法一:递归调用,每次递归的时候有大量重复计算,效率低,可将其调用的过程转化成一颗二叉树进行分析,二叉树的总结点个数不超过(2^n-1)个,由于其是不完全二叉树,那么函数计算的次数必小于(2^

2016-05-29 13:43:53 3785

原创 c语言:实现对于给定的正整数N,依次打印出小于等于N的所有素数。两种方法及其优化

请编写一个程序,实现对于给定的正整数N,依次打印出小于等于N的所有素数。方法一:试除法由素数的定义得到如下程序:#includeint print_prime(int num)//prime表示素数{ int i = 0; for (i = 2; i { int j = 0; for (j = 2; j { if (i%j == 0) { break; } } if

2016-05-29 13:38:54 15712

原创 c语言:新颖的进制灵活应用

新颖的进制灵活应用

2016-05-29 14:18:48 437

原创 求f(k)=k^k(k=1...n)的前n项和

求f(k)=k^k(k=1...n)的前n项和。程序实现:#define _CRT_SECURE_NO_WARNINGS#includelong long My_Mul_Sum(int *n)//封装了一个求k^k的前n项和的函数{ int k = 1; long long sum = 0;//定义为long long是为了防止数据较大,容易溢出 for (k = 1; k { int cou

2016-05-29 13:44:18 2486

原创 汉诺塔问题的递归解法

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/80/04/wKioL1c0mLOj9UFaAAMmSLBAO4U112.png" title="捕获.PNG" alt="wKioL1c0mLOj9UFaAAMmSLBAO4U112.png" />汉诺塔问题的递归解法:实现程序:#includeusing namespace st

2016-05-29 13:44:15 463

原创 多栈运算

多栈运算的算法思想:将多个链栈的栈顶指针放在一个一维指针数组中来统一管理,从而实现同时管理和使用多个栈。650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/80/04/wKioL1c0jzjBUGYkAAAjsxAXniU553.png" title="图片1.png" alt="wKioL1c0jzjBUGYkAAAjsxAXniU

2016-05-29 13:44:13 943

原创 链栈的基本操作

链栈的基本操作实现代码如下:#includeusing namespace std;#define TRUE 1#define FALSE 0//链栈的结构typedef struct node{ int data; struct node *next;}LinkStackNode;typedef LinkStackNode *LinkStack;//链栈进栈int Push(LinkStack

2016-05-29 13:44:10 971

原创 循环队列的初始化、入队、出队等基本操作

循环队列的初始化、入队、出队等基本操作,实现代码如下:#includeusing namespace std;#define TRUE 1#define FALSE 0//循环队列的类型定义#define MAXSIZE 50//队列的最大长度typedef struct{ int element[MAXSIZE];//队列的元素空间 int front;//头指针指示器 int rear;//尾

2016-05-29 13:44:07 18936 2

原创 链队列的初始化、入队、出队等操作实现

链队列的初始化、入队、出队等基本操作实现代码如下:#includeusing namespace std;#define  TRUE 1#define  FALSE 0//链队列定义typedef struct Node{ int data;//数据域 struct Node *next;//指针域}LinkQueueNode;typedef struct { LinkQueueNode *fro

2016-05-29 13:44:04 7680

原创 多栈共享技术,双端栈的初始化、进栈、出栈操作

栈的应用非常广泛,经常会出现一个程序中需要同时使用多个栈的情况。若使用顺序栈,会因为对栈空间大小难以准确估计,从而产生有的栈溢出、有的栈空间还很空闲的情况。为了解决这个问题,可以让多个栈共享一个足够大的数组空间,通过利用栈的动态特性来使其存储空间互相补充,这就是多栈的共享技术。    在顺序栈的共享技术中,最常用的是两个栈的共享技术,即双端栈。它主要利用了栈的栈底位置不变,而栈顶位置动态变化的特性

2016-05-29 13:44:02 2488

原创 顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素

顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈操作的特殊性,还必须附设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。通常以top=-1表示空栈。代码如下:#includeusing namespace std;#define  TRUE 1#define  FALSE 0//顺序栈的存储结构#define Stack_Size 50 //设栈中元

2016-05-29 13:43:59 24405 5

原创 win10系统桌面图标变为白色方框和去除桌面图标快捷方式小箭头的方法

 一、有些用户在开机后,发现windows10系统桌面的图标都变成了白色的方框。这是怎么回事?下面就为大家介绍一下Win10系统桌面图标变为白色方框的解决办法。     导致win10图标变白的情况有三种,大家可以按照自己的情况选择具体解决方法!(一)最为常见的是设置了显示设置中的:更改文本丶应用和其他项目的大小。设置后图标会变大,图标缓存也会进行数据的更改,如果处理错误,开机就会出现...

2016-05-29 13:43:56 34081 1

原创 单链表的头插、尾插、删除、合并等操作

单链表的头插、尾插、删除、合并等操作实现代码如下:#includeusing namespace std;//单链表的存储结构typedef struct Node{ int data; struct Node* next;}Node,*LinkList;//LinkList为结构指针类型//初始化单链表void InitList(LinkList *L){ *L = (LinkList)mall

2016-05-29 13:43:50 881

原创 顺序表的查找、插入、删除、合并操作及其优缺点

顺序表的查找、插入、删除、合并操作,用c++实现相关代码:#includeusing namespace std;//定义线性表顺序存储结构#define MAXSIZE 100  //线性表最大长度typedef struct{ //线性表占用数组空间 int elem[MAXSIZE]; //记录线性表中最后一个元素在数组elem[]中的位置(下标值),空表置为-1 int last;}Seq

2016-05-29 13:43:47 3979

原创 指针与数组的比较

C++/C 程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。     数组要么在静态存储区被创建(如全局数组) ,要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变” ,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字符串为例比较指针

2016-05-29 13:43:44 1649

原创 C++/ C循环语句的效率问题

循环语句的效率:C++/ C 循环语句中,f or语句使用频率最高,whi l e语句其次,do语句很少用。提高循环体效率的基本办法是降低循环体的复杂性。1.在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。例1:程序1:for (row = 0; row{ for (col = 0; col { sum = sum + a[row][co

2016-05-29 13:43:41 1505

原创 类型萃取

类型萃取是实现不同类型数据面对同一函数实现不同的操作,它与类封装的区别是:并不用知道所调用的对象是什么类型,类型萃取是编译后知道类型,先实现;而类的封装则是先定义类型,后实现方法。类型分为基本类型(POD),和自定义类型。在这里用模板的特化实现其编程思想:以memcpy为例,当拷贝的是基本类型(POD)时,只用拷贝所传递指针上的数据,如果是string类型,则需要在堆上开辟空间,所传递的指针如果被

2016-05-29 13:43:39 559

原创 企业发放奖金根据利润提成,从键盘输入当月利润I,求应发放奖金总数?

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%

2016-05-29 13:43:36 4752

原创 在10万以内判断,一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,求该数

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果。 程序源代码:#include#includeint main(){ long int i, x, y; for (i = 1; i { x = sqrt(i + 100);

2016-05-29 13:43:33 7529

原创 打印楼梯,同时在楼梯上方打印两个笑脸

题目:打印楼梯,同时在楼梯上方打印两个笑脸。 程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 程序源代码:#includeint main(){ int i, j; printf("\1\1\n");/*输出两个笑脸*/ for (i = 1; i { for (j = 1; j { printf("%c%c", 77, 77); } printf("\n"

2016-05-29 13:43:30 7162

原创 c/c++程序的文件结构

文件结构:1.c/c++程序分两个文件a.头文件:用于保存程序的声明(“.h”为后缀);b.定义文件:用于保存程序的实现(c以“.c”为后缀,c++以“.cpp”为后缀)。2.为防止头文件被重复引用,用#ifndef/#define/#endif 结构和#pragma once处理。#ifndef/#define/#endif 结构和#pragma once区别:#ifndef/#define/#

2016-05-29 13:43:27 3197 3

原创 BOOL变量 , float变量, 指针变量和整型变量与“零值”比较

BOOL变量 , float变量,  指针变量和整型变量与“零值”比较例1:写出 BOOL flag 与“零值”比较的 if  语句。答案:if ( flag )if ( !flag )如下写法均属不良风格:i f ( f l ag == TRUE)i f ( f l ag == 1 ) i f ( f l ag == FALSE)i f ( f l ag == 0)例2:请写出 float x 

2016-05-29 13:43:25 624

原创 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。程序:#includeint main(){ int i = 0, j = 0, k = 0,count=0; for (i = 1; i { for (j = 1; j { for (k = 1; k

2016-05-29 13:43:22 11325

原创 函数的传值调用,传址调用和引用调用分析

函数的传值调用和传址调用在C和C++中都是合法的语法,但是引用调用就只是在C++中合法的。1.传值调用:程序:#includevoid swap(int x, int y){ int tmp = x; x = y; y = tmp;}int main(void){ int a = 1, b = 2; printf("a=%d, b=%d\n", a, b); swap(a, b); printf(

2016-05-29 13:43:19 3307

原创 在异常处理中处理析构函数

例1:在异常处理中处理析构函数。程序:#include#includeusing namespace std;class Student{public: Student(int n, string nam)//定义构造函数 { cout num = n; name = nam; } ~Student()//定义析构函数 { cout } void get_data();private:

2016-05-29 13:43:16 552

原创 c++中的异常处理定义和使用方法

异常处理:所谓异常处理就是指对运行时出现的差错以及其它例外情况的处理。C++中处理异常的机制由3部分组成:检查(try),抛出(throw),捕捉(catch)。650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7E/FF/wKioL1cPZbSgmPwqAAGMAedw3To083.png" title="图片1.png" alt

2016-05-29 13:43:13 552

原创 用于字符输入的流成员函数使用举例

用于字符输入的流成员函数:1.流成员函数get有3种形式:无参数的、有1个参数的、有3个参数的(1)无参get函数其调用形式:cin.get()。用来从指定的输入流中提取一个字符(包括空白字符),函数的返回值就是读入的字符,若遇到输入流中的文件结束符,则函数返回值EOF(EOF是在iostream头文件中定义的符号常量,代表-1)。注意:EOF:end of file,!EOF表示读取文件没有结束

2016-05-29 13:43:10 741

原创 派生类构造函数的定义和使用举例

1.派生类构造函数的一般形式为:派生类构造函数名(总参数表):基类构造函数名(参数表){   派生类中新增加数据成员初始化语句}2.在建立一个对象时,执行构造函数的顺序是:a.派生类构造函数先调用基类构造函数;b.再执行派生类构造函数本身(即派生类构造函数的函数体)3.在派生类对象释放时,先执行派生类析构函数,再执行其基类析构函数例:定义一个简单的派生类构造函数。解:程序:#include#inc

2016-05-29 13:43:07 12014

原创 ostream类的3个输出流对象cout,cerr,clog区别和使用

ostream类定义了3个输出流对象:cout,cerr,clog。cerr和clog都是标准错误流,其区别是:cerr不经过缓冲区直接向显示器输出信息;clog中的信息存放在缓冲区,缓冲区满后或遇endl向显示器输出。例:求解一元二次方程,若公式出错,用cerr流输出有关信息。解:程序:#include#includeusing namespace std;int main(){ float a

2016-05-29 13:43:05 3470

原创 将字符串"BASIC"按照相反顺序输出

将字符串"BASIC"按照相反顺序输出。程序1:用cout.put输出单个字符的成员函数put#includeusing namespace std;int main(){ char *p = "BASIC"; int i = 0; for (i = 4; i >= 0; i--) { cout.put(*(p + i)); } cout.put('\n'); system("pause");

2016-05-29 13:43:02 1157

原创 继承与派生定义及相关程序调用举例

一、面向对象程序设计的特点:抽象,封装,继承,多态性。二、3种成员访问限定符及其继承关系:650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/7E/C7/wKioL1cItPmglf2AAABIbKUEQmA608.png" title="图片1.png" alt="wKioL1cItPmglf2AAABIbKUEQmA608.png

2016-05-29 13:42:59 657

原创 关键字sizeof及其十大特性

Sizeof是c/c++中的关键字,它是一个运算符,其作用是取得一个对象(数据类型或数据对象)的长度(即占用内存的大小,以byte为单位)。其中类型包括基本数据类型(不包括void)、用户自定义类型(结构体、类)、函数类型。数据对象是指用前面提到的类型定义的普通变量和指针变量(包含void指针)。十大特性:特性0:sizeof是运算符,不是函数;特性1:sizeof不能求void类型的长度;特性2

2016-05-29 13:42:56 1524 3

原创 函数模板和类模板的定义和使用

模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。模板分为函数模板和类模板。函数模板:建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用函数就称为函数模板。一般形式:templatetypename T>           通用函数定义注意:关键字typename是类型名,只适用于函数体相同、函数的参数个数相同而类型不同的情况。函数

2016-05-29 13:42:53 2400

原创 用Java语言打印九九乘法口诀表

打印九九乘法口诀表。程序:package myclass;public class myclass { public static void main(String[] args) { for(int i=1;i for(int j=1;j if(j>i){ break; } System.out.printf("  %d*%d=%d",i,j,i*j

2016-05-29 13:42:50 8607

空空如也

空空如也

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

TA关注的人

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