C/C++编程
文章平均质量分 62
乐哉悠哉
夏虫不可语冰者,语于夏花
展开
-
字符指针和字符数组的长度
字符指针原创 2010-11-25 09:56:00 · 3333 阅读 · 0 评论 -
算法导论 - 归并排序的 C 语言实现
归并排序是 Divide-and-Conquer 编程思想一个简单例子,其逻辑核心主要有以下几点。(1) 将两个有序数列合并的时间复杂度为 O(n),参见函数 void merge(int *src, int st, int md, int ed, int *sorted);(2) 数列中只有一个数的时候,数列处于有序状态。下面是归并排序的示例代码。#include #include原创 2015-01-27 19:13:55 · 965 阅读 · 0 评论 -
C++ AVL平衡树 模板
在上篇博文中的二叉搜索树的基础上(无实际联系,只是当时开发的时候参考),实现了AVL平衡树,完美地实现了其中较为困难的旋转操作。使用请注明出处,谢谢。源代码如下:#pragma once//#include "STree.h"template class AVLTree;template class AVLTree_iterator;template class AVLTree原创 2012-10-31 19:54:14 · 1880 阅读 · 0 评论 -
C++ 二叉搜索树 模板
以前写的二叉搜索树,其中节点是类模板,可对任何实现了比较大小的数据的插入、查找及删除操作。并使用Traits技术实现了使用迭代器对操作数据,移植性好,效率较高。使用请注明出处,谢谢。源码贴出如下:#pragma once#include #include #include using namespace std;template class STree;template原创 2012-10-31 19:49:32 · 1356 阅读 · 0 评论 -
八皇后全部解及指定皇后位置求解
编译器 VS2010编写者 冬虫2012.2.29这里借助STL的向量,通过封装类Board(棋盘)实现实现了八皇后的求解问题。1、提供了两种方式求解(1)求出八皇后的所有解(int FindAllSolution(); 共92种);(2)指定第一个皇后所在位置求解( bool Queens(int row, int col); );2、使用接口函数void Draw();在屏原创 2012-03-01 09:19:55 · 1665 阅读 · 0 评论 -
算法导论 - 快速排序的 C 语言实现
在实践中,需要对大量数据排序时,快速排序常常是最佳的选择。快速排序是基于分治思想的一种算法,和归并排序有相似之处。在最坏情况下,快速排序的时间复杂度是O( n^2 );平均情况下,快速排序的时间复杂度是 O( n * lg n)。我们知道归并排序的时间复杂度是O( n * lg n),那么为什么在实践中会发现快速排序常常要优于归并排序呢?通过分析快速算法,我们可以发现最坏情况出现的概率极为小;而在原创 2015-03-24 15:54:37 · 1035 阅读 · 0 评论 -
算法导论 - 最大和连续子数组
1. 问题描述已知一个整型数组,数组中一个元素或连续的多个元素可构成了该整型数组的子数组。将每个子数组中所有元素相加,即得到该子数组的和。求一个子数组,它的和在所有子数组中最大。本文分别给出利用分治算法和的动态规划的算法解决该问题的示例代码(C 语言实现,python 实现或 JAVA 实现),前者的时间复杂度为 O(n * log n),后者的时间复杂度为 O(n)。原创 2015-03-03 16:54:38 · 1062 阅读 · 0 评论 -
C++的文件结构
<br /> C++/C 程序的头文件以“*. h ” 为后缀, C 程序的定义文件以“*.c ” 为后缀;C++程序的定义文件通常以“*.cpp ”为后缀(也有一些系统以 “*.cc ” 或 “*.cxx ” 为后缀)。<br /> <br />1、头文件<br /> 首先对头文件的作用略作解释:<br />(1) 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器原创 2010-12-07 10:19:00 · 1064 阅读 · 0 评论 -
引用和指针 传递参数
1、引用是建立变量(操作对象)别名,引用声明和变量本身针对的是同一地址。引用声明例为:int case;int & citecase=case;int*pcase=case;上述语句使case和citecase代表同一变量,它地地址为定义case时分配的内存地址。以上述例子来说明,引用和指针的不同之处我们可以令指针*pcase指向其它变量,但是一旦声明了引用,citecase就只是代表case的一个引用,而不能将它仔用来代表其它变量。例如:int case1;*pcase=case; //rig原创 2010-11-25 12:30:00 · 1058 阅读 · 0 评论 -
指针的引用(* &)
主旨:如果在子函数中,我们不仅要改变指针所指对象的值,还需要改变指针本身,使它指向另外的对象,那么在子函数的参数列表中,就应该使用 “*&” 调用该指针。为了实现改变指针本身的目的,看这样两个子函数:void M_p(int *p1, int *p2) { cout"<<*p1<<endl; p1=p2; cout"<<*p1<<endl;}void RM_p(int *&p1, in原创 2011-12-15 10:08:41 · 1065 阅读 · 0 评论 -
new在局部函数中分配的动态内存
问题是这样的:我在局部函数test()程序中定义了一个动态数组(因为实际上,我是在这段程序中才能知道这个数组的长度的),并且需要把它传给主程序,所以我不能在test()中delete它,但是要保证内存的有效管理。代码如下:#include "iostream.h"int *test(){ int *p; p=new int[5]; for(int i=0; i p[i]=i; return p;}void main(){ int *ptr; ptr=te原创 2010-12-03 13:54:00 · 1541 阅读 · 0 评论 -
Friend class or function and nested types in class templates
以下内容依据《C++ primer》编写。1. Friend declaration in class templatesThree kinds of friend declarations(1) A nontemplate friend class or friend function, they are friends to all instantiations of the cl原创 2011-11-16 19:28:20 · 948 阅读 · 0 评论 -
拷贝构造函数
<br />关于C++的类,我们常常需要用已经赋值的类对象为另一个同类型的类对象赋值,例如:<br />Ccase case1;<br />Ccase case2; //Ccase是一个类<br />case2=case1; //调用拷贝构造函数<br />在语句case2=case1中,不同于普通变量(例如int i = j;)的操作,对case2的赋值其实调用了类Ccase的拷贝构造函数。这个拷贝构造函数的形式是Ccase(Ccase & case),如果类定义中程序员没有主动写原创 2010-11-26 09:01:00 · 633 阅读 · 0 评论 -
C语言字符串操作函数总结
Functionsmemcpy memmove strcpy strncpy strcat strncat原创 2011-03-29 09:35:00 · 1600 阅读 · 0 评论 -
cin 输入空格符和 getline() 忽略开头换行符
1、输入空格符 下面这段代码,需要按两次回车键才能显示。因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成 getline(cin,st,'s'); 即使输入的是abcsabc 那么也只会显示 abc 。 因此对于上面出现的情况,有人说getline默认情况下以回车('/n')作为结束符,第一次原创 2011-03-15 10:19:00 · 11522 阅读 · 0 评论