- 博客(97)
- 收藏
- 关注
原创 旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。eg:数组{1,2,3,4,5}的其中的一个旋转数组为{3,4,5,1,2},该数组的最小值是1。#includeusing namespace std;int MinInOrder(int* numbers, int index1, int index2);
2016-03-27 16:57:15 487
原创 写给当下的自己
当毕业那一天来临,当你一无所有,没了爱情,没了事业,没了承诺,谁的怀抱还会让你依靠?是父母。谁会不计回报的包容这样一个颓废的你?还是父母。可终究父母不能伴你一生,父亲走了,母亲走了,而你呢? 记住:现实不会给你颓废的时间。你现在不光要为了父母奋斗,更要为了自己去奋斗! 今天是2016年3月27日,距离写得最后一篇博客(2015年9月17日)已经过去半年了。只想感叹时间过
2016-03-27 16:40:21 888 1
原创 二叉树的操作
#pragma once#include#include#includeusing namespace std;templateclass BinTree;templateclass BinTreeNode;typedef enum{L,R}Tag_Type;templatestruct stkNode{ BinTreeNode *ptr; Tag_Typ
2015-09-17 09:07:55 544
原创 采用邻接矩阵创建图
采用邻接矩阵创建一个有向网N分析:图的创建主要利用输入的各个顶点,并存储到一个向量(一维数组)中,然后通过输入两个顶点及权重创建弧,利用二维数组表示,因此,利用邻接矩阵创建图的存储需要两个数组:一个一维数组和一个二维数组。#include#include#include#includetypedef char VertexType[4];typedef char InfoPtr;t
2015-08-08 21:09:12 4978
原创 《高质量程序设计指南C/C++语言》 林锐 韩永泉编著 总结3
第 9 章 类的构造函数、析构函数与赋值函数1.构造函数初始化表的使用规则: 1)如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。2)类的 const 常量只能在初始化表里被初始化,因为它不能在函数体内用赋值的方式来初始化。3)类的数据成员的初始化可以采用初始化表或函数体内赋值两种方式,这两种方式的效率不完全相同。2. 类 String 的构造函数与析构函数
2015-08-04 22:02:11 1038
原创 《高质量程序设计指南C/C++》 林锐 韩永泉编著 总结2
第 3 章 命名规则1.共性规则:规则1.标识符应当直观且可以拼读,可望文知意,不必进行“解码”。规则2.标识符的长度应当符合“min-length&& max-information”原则。规则3.命名规则尽量与所采用的操作系统或开发工具的风格保持一致。规则4.程序中不要出现仅靠大小写区分的相似的标识符。例如:int x, X; // 变量 x 与 X 容易
2015-08-04 21:43:01 971
原创 与零值的比较
与零值的比较:1.布尔变量与零值比较 规则1.不可将布尔变量直接与TRUE、FALSE 或者 1、0 进行比较。 根据布尔类型的语义,零值为“假” (记为 FALSE) ,任何非零值都是“真” (记为TRUE) 。TRUE 的值究竟是什么并没有统一的标准。例如 Visual C++ 将 TRUE 定义为1,而 Visual Basic 则将 TRUE 定义为-1。假设布尔变
2015-08-04 21:37:26 763
原创 《高质量程序设计指南C/C++语言 》 林锐,韩永泉编著 总结1
第 1 章 文件结构1.头文件由三部分内容组成:(1)头文件开头处的版权和版本声明。(2)预处理块。 (3)函数和类结构声明等。规则1.为了防止头文件被重复引用,应当用 ifndef/define/endif 结构产生预处理块。规则2.用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索) 。规则3. #include “filen
2015-08-04 20:29:52 812
原创 树和二叉树的应用
#include #include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchild; }Bit
2015-07-28 20:51:01 694
原创 哈弗曼编码
#include #include #include #define MY_STRMAX 100 #define infinity 1000000 typedef struct { unsigned int weight; //深度 char ch; //结点数值 unsi
2015-07-28 20:43:04 882
原创 树的孩子兄弟链表应用
孩子兄弟表示法采用链式存储结构,链表由一个数据域和两个指针域组成。其中,数据域 存放结点的数据信息,一个指针域用来指示结点的第一个孩子结点,另一个指针域用来指示结点的下一个兄弟结点。#include #include #include #include typedef int ElemType; typedef struct CSNode//孩子兄弟表示法类型定义
2015-07-28 20:32:28 1888
原创 线索二叉树的遍历应用
线索二叉树的遍历,就是在已经建立后的线索二叉树中,根据线索查找结点的前驱和后继。利用在线索二叉树中查找结点的前驱和后继的思想,遍历线索二叉树。#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef enum { Link,/*指向孩子结点*/Thread/*
2015-07-28 20:18:36 1178
原创 二叉树的计数
二叉树的遍历也常常用来对二叉树进行计数。#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchi
2015-07-28 20:07:35 1241
原创 二叉树的输出
例如:按树输出如下:#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchild;
2015-07-27 21:48:56 2298
原创 二叉树的遍历的应用
创建如下图所示的二叉树:#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchild;
2015-07-27 21:37:55 1765
原创 二叉树的链式存储
#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchild; }*BitTree,BitNod
2015-07-27 21:25:49 906 1
原创 模式匹配应用
比较经典的Brute-Force算法与KMP算法的效率的优劣。#include #include #include #define MAXSIZE 60 typedef struct { char str[MAXSIZE]; int length; }SeqString; int B_FIndex(SeqString
2015-07-27 21:20:12 1025
原创 串的模式匹配
在串的各种操作中,串的模式匹配是经常用到的一个算法。串的模式匹配也称为子串的定位操作,即查找子串在主串中出现的位置。1.经典的模式匹配算法Brute-Force。2.KMP算法。#include #include #include #define MAXSIZE 60 typedef struct { char ch[MAXSIZE];
2015-07-27 21:11:03 1021
原创 链串的基本运算
#include #include #include #define CHUNKSIZE 10 #define stuff '#' typedef struct Chunk { char ch[CHUNKSIZE]; struct Chunk *next; }Chunk;//串的结点类型定义 typedef struct {
2015-07-26 09:11:07 2189
原创 堆串的应用
例如串S1=“Welcome to”,S2="China",Sub="Xi'an",将串S2连接到串S1末尾,然后将串S1中的S2用Sub替换。#include #include #include typedef struct { char *str; int length; }HeapString; void InitString
2015-07-26 09:04:42 1956
原创 堆串的基本运算
#include #include #include typedef struct { char *str; int length; }HeapString; void InitString(HeapString *S);//串的初始化操作 void StrAssign(HeapString *S,char cstr[]);//
2015-07-26 08:48:13 1052
原创 串的应用举例
假设串S1 = "I come from Beijing",S2 = "Chongqing" ,Sub = "America". 利用串的基本操作,如果串的赋值、串的插入、串的删除、串的替换、对上面 的串进行操作#include #include #define MAXSIZE 60 typedef struct { char str[MAXSIZE]
2015-07-26 08:39:54 1650
原创 双端队列的应用
双端队列是一种特殊队列,它是在线性表的两端对插入和删除操作限制的线性表。双端队列可以在队列的任何一端进行插入删除操作。#include #define QUEUESIZE 8 typedef char ElemType; typedef struct DQueue { ElemType queue[QUEUESIZE]; int end1; i
2015-07-26 08:26:06 3245
原创 把数组中的n个元素的值分别扩大5倍,要求数组名作为参数。
通过把数组名作为参数传递,实际上是把数组的地址传递给形式参数。这样在被调用函数中就可以对整个数组进行操作了,将数组名作为参数传递,调用函数和被调用函数都是对占同一块内存单元的数组进行操作。#include#define N 10void MulArray1(int *x,int n);//数组名作为参数的函数原型void MulArray2(int *aPtr,int n);//指针作为参数
2015-07-25 22:08:50 1960
原创 二叉树的基本运算
//二叉树的初始化操作。二叉树的初始化需要将指向二叉树的根结点指针置为空:void InitBitTree(BiTree *T)//二叉树的初始化操作{ *T=NULL;}//二叉树的销毁操作。如果二叉树存在,将二叉树存储空间释放:void DestroyBitTree(BiTree *T)//销毁二叉树操作{ if(*T)//如果是非空二叉树 { if((*T)->lch
2015-07-25 21:16:32 1667
原创 二叉树的遍历实现
二叉树的先序遍历//先序遍历二叉树的递归实现void PreOrderTraverse(BiTree T){ if(T) { printf("%2c",T->data);//访问根结点 PreOrderTraverse(T->lchild);//先序遍历左子树 PreOrderTraverse(T->rchild);//先序遍历右子树 }}//二叉树的先序遍历
2015-07-25 20:53:05 864 1
原创 创建二维数组
方法一:使用数组指针用new开辟空间#include using namespace std; #define ROW 3 #define COL 4 void main() { int(*p)[COL] = new int[ROW][COL]; for(int i=0; i<ROW; ++i) { for(i
2015-07-23 19:55:25 773
原创 指向结构体的指针
运用指向结构体数组的指针输出学生信息说明:指针指向结构体数组,就得到了该结构体数组的起始地址。通过该地址可以访问结构体数组中的所有成员变量。其中,指向结构体的指针的算术运算与 指向数组的指针的用法相似。#include#define N 10//结构体类型及变量的定义,初始化struct student{ char *number; char *name; char sex;
2015-07-22 22:58:44 1600
原创 内存动态分配与释放
内存的动态分配需要使用函数malloc,函数free和运算符sizeof来实现。函数malloc的原型是:Void* malloc(unsigned int size);函数malloc的作用是在内存中分配一个长度为size的连续存储空间。函数的返回值是一个指向分配空间的起始位置的指针。如果分配空间失败,则返回NULL。如果要为类型为struct node的结构体分配一块内存空间。可以使用
2015-07-22 22:12:33 1005
原创 二叉树的存储表示与实现
二叉树的顺序存储完全二叉树的存储可以按照从上到下,从左到右的顺序依次存储在一维数组中。完全二叉树的顺序存储如图所示: 如果按照从上到下,从左到右的顺序把非完全二叉树也同样的编号,将结点依次存放在一维数组中,为了能够正确反映二叉树中结点之间的逻辑关系,需要在一维数组中将二叉树中不存在的结点位置空出。 顺序存储对于完全二叉树来说是
2015-07-20 17:51:11 3204
原创 链式队列
编程判断一个字符序列是否是回文。回文是指一个字符序列以中间字符为基准两边字符完全相同,即顺着看和倒着看是相同的字符序列。如字符序列“ABCDCBA”就是回文,而字符序列“ABCBCAB”,就不是回文。#include//包含输出函数#include//包含退出函数#include//包含字符串长度函数#include//包含内存分配函数typedef char DataType;//类型定
2015-07-20 10:34:28 944
原创 指针函数
指针函数是指函数的返回值是指针类型的函数。一个函数的返回值可以是整数,实型和字符类型,也可以是指针类型。指针类型的定义形式举例如下:float* fun(int a,int b);其中,fun是函数名,前面的“*”说明返回值的类型是指针类型,因为前面的类型标识是float,所以返回的指针指向浮点型。该函数有两个参数,参数类型是整型。通过一个题目学校指针函数的用法。例如:假设若干个学
2015-07-17 23:14:27 2256
原创 指向函数的指针数组的用法
声明一个指向函数的指针数组,并通过指针调用函数。#includevoid f1();//函数f1的声明void f2();//函数f2的声明void f3();//函数f3的声明void main(){ void (*f[3])()={f1,f2,f3};//指向函数的指针数组的声明 int flag; printf("请输入一个1,2或者3.输入0退出.\n"); scanf(
2015-07-15 22:28:25 848
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人