C/C++
Java技术博文
这个作者很懒,什么都没留下…
展开
-
C语言实现的线性表 函数形参:指针类型与变量类型的区别 (SqList *L)(SqList L)
C/C++ 函数接受参数:指针与变量的区别#define MAXSIZE 20typedef int ElemType;typedef struct { ElemType data[MAXSIZE]; int length;}SqList;//初始化线性表bool InitList(SqList *L) //改变了传进去的参数的属性值时,形参应是指针型变量原创 2013-03-03 21:17:03 · 2331 阅读 · 0 评论 -
typedef用法小结
第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:转载 2013-02-25 21:38:46 · 587 阅读 · 0 评论 -
数组元素在使用前一定要初始化否则运行结果将是不确定的
/*本程序要求输入3年内每个月的销售额,并逐一输出每一年的销售额,最后计算出三年的总销售额*/#includeint main(){ using namespace std; const int YEAR=3; const int MONTH=12; int sales[YEAR][MONTH]; int sum[YEAR]={0}; //存储每一年的销售额//原创 2013-03-10 14:27:00 · 2007 阅读 · 0 评论 -
C++ cin,_cin.get,cin.getline等函数深入分析+实例详解
C++读取输入的类和方法有:cin 、cin.getline(str,number)、cin.get(str,number)、getline(cin,str)1.cin:(面向单词的输入) 读取输入时,可以跳过保留在输入队列中的空白(Tab/空格/Enter),直到找到非空白为止。 然后开始读取字符,直到再次遇到空白为止(Tab/空格/Enter)。读取结束后将空白原创 2013-03-02 15:46:27 · 989 阅读 · 0 评论 -
vs2010快捷键
Visual Studio 2010 快捷键:CTRL + SHIFT + B 生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O 打开项目CTRL + SHIFT + C 显示类视图窗口F4 显示属性窗口SHIFT + F4 显示项目属性窗口CTRL + SHIFT + E 显示资源视图F12 转到定义CTR转载 2013-03-02 17:32:01 · 588 阅读 · 0 评论 -
C/C++语法知识:typedef struct 用法详解
第一篇:typedef struct与struct的区别1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什转载 2013-06-09 20:50:46 · 792 阅读 · 0 评论 -
二维数组和指向指针的指针
二维数组和指向指针的指针一道面试题引发的问题,首先要知道[]的优先级高于*,题目:char **p,a[6][8]; 问p=a是否会导致程序在以后出现问题?为什么?直接用程序说明:#includevoid main(){ char **p,a[6][8]; p = a; printf("\n");}编译,然后就会发现通不过,报转载 2013-06-09 21:03:03 · 823 阅读 · 0 评论 -
struct和typedef struct彻底明白了
struct和typedef struct分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student s转载 2013-06-09 20:41:13 · 939 阅读 · 0 评论 -
C语言预处理的方式总结
预处理是C语言的一个重要知识点,它能改善程序设计的环境,有助于编写易移植、易调试的程序。因此,我们有必要掌握好预处理命令,在自己编程的时候灵活的使用它,使得编写的程序结构优良,更加易于调试和阅读。接下来我尽可能的把预处理中重要知识点向读者讲解清楚,使读者能够在自己以后编程的过程中熟练的使用预处理命令。文件包含指令(#include)宏定义指令(#define)条件编译指令(#ifdef转载 2013-06-12 15:16:36 · 983 阅读 · 0 评论 -
最小生成树之prim算法
最小生成树之prim算法边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权。 最小生成树(MST):权值最小的生成树。 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最小生成树表示使其造价最小的生成树。 构造网的最小生成树必须解决下面两个问题: 1、尽可能选取权值小的边,转载 2013-06-07 11:17:51 · 767 阅读 · 0 评论 -
最小生成树--克鲁斯卡尔算法
给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.求最小生成树的算法(1) 克鲁斯卡尔算法图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间.(2) 普里姆算法图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点陆续转载 2013-06-07 11:23:01 · 827 阅读 · 0 评论 -
最小生成树之kruskal算法
最小生成树之kruskal算法1.kruskal算法假设连通网N=(V,{E})。则令最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,{}),图中每个顶点自成一个连通分量。在E中选择最小代价的边,若该边依附的顶点落在T中不同的连通分量中,则将该边加入到T中,否则舍去此边而选择下一条代价最小的边,依次类推,直到T中所有顶点都在同一连通分量上为止。示例如下:图中先将每个转载 2013-06-07 11:48:43 · 851 阅读 · 0 评论 -
&和&&的区别
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现N转载 2013-06-19 11:01:29 · 1364 阅读 · 0 评论 -
printf("%d\n",*(ptr++))讲解
C代码如下:[cpp] view plaincopyprint?int main() { int arr[] = {6,7,8,9,10}; int *ptr = arr; *(ptr++) += 123; printf("%d ,%d/n",*ptr,*(++ptr)); return 0; } //结果为 8转载 2013-06-19 21:22:47 · 1835 阅读 · 0 评论 -
cin.get()和cin.get(ch)之间的区别
每次读取一个字符,直到遇到EOF的输入循环的基本设计如下:cin.get(ch); //attempt to read a charwhile(cin.fail()==false) //test for EOF{ ......... cin.get(ch); //attempt to read another char}可以在上述代码中使用一些简捷方式:wh转载 2013-06-20 14:04:21 · 3074 阅读 · 0 评论 -
n*n的ZigZag数组
ZigZag数组就是形如下图的,依次沿对角线增加->减小交替变换的数组00 01 05 06 14 15 27 2802 04 07 13 16 26 29 4203 08 12 17 25 3转载 2013-07-08 10:34:51 · 827 阅读 · 0 评论 -
error C2065: “vector”: 未声明的标识符
漏写using namespace std;会出现此错误原创 2013-06-21 14:21:55 · 2836 阅读 · 0 评论 -
C语言统计单词个数
#include "stdio.h"main(){ char s[81],c; int i,num=0,word=0; printf("请输入一行英文:\n"); gets(s); for(i=0;(c=s[i])!='\0';i++)//判断句子是否到未 if(c==' ') word=0;//是空格就为0 else if(word==0)//不是空格就判断转载 2013-06-22 14:32:45 · 1537 阅读 · 0 评论 -
2012年10月份,百度笔试题
一、简答题1、列举几个常见的哈希算法,简述哈希算法的主要用途http://blog.csdn.net/zxycode007/article/details/6999984这篇文章介绍的很清楚了。主要用途:查找关键字、文件校验、数字签名2、描述OSI的7层架构,并指出HTTP、UDP、ARP协议在那一层?应用层:为应用程序提供网络服务表示层:确转载 2013-07-08 16:55:28 · 795 阅读 · 0 评论 -
螺旋队列
螺旋队列的样子如下图:两大规律:1、螺旋规律2、奇数(圈数,或X轴正坐标)平方规律(紫线) 问题描述: 设1的坐标是(0,0),x方向向右为正,y方向向下为正,例如,7的坐标为(-1,-1),2的坐标为(1,0)。编程实现输入任意一点坐标(x,y),输出所对应的数字! 问题解决:从紫线突破。从图中不难转载 2013-07-08 13:56:52 · 997 阅读 · 0 评论 -
编译和链接的区别
编译和链接的区别 在多道程序环境中,要想将一个用户源代码变成一个可以在内存中执行的程序,通常分为三个步骤:编译、链接、载入。 (1)编译:由编译程序将用户的源代码编译成若干个目标模块。 (2)链接:由链接程序将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的载入模块。 (3)载入:由载入程序将转载 2013-07-08 17:17:29 · 729 阅读 · 0 评论 -
C语言的编译链接过程的介绍
关键字:C语言 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下: 从图上可以看到,整个代码的编译过程分为编译和链接两个过程,转载 2013-07-08 17:14:54 · 676 阅读 · 0 评论 -
C++程序链接的过程原理详解
许多Visual C++的使用者都碰到过LNK2005:symbol already defined和LNK1169:one or more multiply defined symbols found这样的链接错误,而且通常是在使用第三方库时遇到的。对于这个问题,有的朋友可能不知其然,而有的朋友可能知其然却不知其所以然,那么本文就试图为大家彻底解开关于它的种种疑惑。大家都知道,从C/C+转载 2013-07-08 17:15:57 · 916 阅读 · 0 评论 -
螺旋队列
螺旋队列 螺旋队列:如下图所示的螺旋队列,以01所在点为坐标原点建立坐标轴,X方向向右为正,Y方向向下为正。如01坐标为(0,0),02坐标为(1,0),03坐标为(1,1)。试找出规律,给出任意坐标(x,y),返回该坐标处的数字,如给出(0,0)返回1,给出(1,1)返回3。43 44 45 46 47 48 4942 21 22 23 24 25 264转载 2013-07-08 11:29:13 · 950 阅读 · 0 评论 -
螺旋队列问题
螺旋队列问题下面是一个螺旋队列: 73 74 75 76 77 78 79 80 81 72 43 44 45 46 47 48 49 50 71 42 21 22 23 24 25 26 51 70 41 20 7 8转载 2013-07-08 13:57:42 · 747 阅读 · 0 评论 -
C++ string类的构造函数
string类的构造函数共6个:size_type-依赖于实现的整型n_pos-字符串的最大长度NBTS-(null-byte-terminated string)表示以空字符结束的字符串-传统的C-风格字符串1>string(const char *s): //将string对象初始化为C—风格字符串例:string one("First constru原创 2013-07-08 16:13:46 · 1017 阅读 · 0 评论 -
C++ 迭代器类型
C++ STL包括:容器、算法、迭代器、函数对象迭代器:用于遍历容器,独立于数据类型和容器类型迭代器的类型:1输入迭代器 ‘输入’是从程序的角度来说,既输入来自容器,输入迭代器被程序用来读取容器的信息 具体说:对输入迭代器解除引用可以使程序能够读取容器的值,但不一定能修改,因此,需要输入迭代器的算法将不会修改容器中的值 通过++操作符(前缀格式和后缀格原创 2013-07-09 19:31:58 · 1190 阅读 · 0 评论 -
C++将指针用作迭代器-将信息复制到显示器上/从输入流中复制信息
1迭代器是广义指针,所以指针满足所有的迭代器要求迭代器是STL算法的接口 ------>STL算法可以使用指针(来对基于指针的非STL容器进行操作)||指针是迭代器例如:可以将STL的算法用于数组 const int SIZE=10; double Arr[SIZE]; sort(Arr,Arr+SIZE); //sort原创 2013-07-09 20:53:39 · 1092 阅读 · 0 评论 -
C语言中memset函数详解
功 能:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 用 法: void *memset(void *s, char ch, unsigned n); 程序例: #include #include #include int main(void) {转载 2013-06-24 11:26:20 · 746 阅读 · 0 评论 -
荷兰国旗问题
1.问题描述: 我们将乱序的红白蓝三色小球排列成有序的红白蓝三色的同颜色在一起的小球组。这个问题之所以叫荷兰国旗,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。2.问题分析:这个问题我们可以将这个问题视为一个数组排序问题,这个数组分为前部,中部和后部三个部分,每一个元素(红白蓝分别对应0、1、2)必属于其中之一。由于红、白、蓝三色小球数量并转载 2013-06-24 16:47:38 · 672 阅读 · 0 评论 -
C++函数对象
函数对象---也叫函数符函数符是可以以函数方式与()结合使用的任意对象包括:函数名、指向函数的指针和重载了()操作符的类对象(即定义了operator()()的类)函数符概念:#生成器:不用参数就可以调用的函数符#一元函数:用一个参数可以调用的函数符#二元函数:用两个参数可以调用的函数符#断言:返回bool值的一元函数 #二元断言:返回bool值的二元函原创 2013-07-10 17:12:35 · 640 阅读 · 0 评论 -
C++ STL
C++ STL 是一个集合,包括:容器类模板迭代器类模板函数对象模板算法函数模板valarry类模板是面向数值运算的,不是STL的一部分例如:valarray没有push_back()和insert()方法string类不是STL的组成部分,但设计时考虑到了STL例如:string包含begin()、end()、rbegin()和rend()等成员原创 2013-07-11 10:22:08 · 681 阅读 · 0 评论 -
C++容器种类
容器类型可用于创建具体对象的模板11个容器类型分别为:deque / list / queue / priority_queue / stack / vector / map / multimap / set / mulitset / bitset容器概念:指定了所有STL容器类都必须满足的一系列要求容器:存储其他对象的对象要求:1>被存储的对象必须是同一种数据类型(可以使原创 2013-07-10 11:28:35 · 1371 阅读 · 0 评论 -
C++实现Kmp字符匹配算法的优化版
C++实现Kmp字符匹配算法的优化版 头文件:KmpAlgorithm.h[cpp] view plaincopy#ifndef KMPALGORITHM_H #define KMPALGORITHM_H #include #include class KmpAlgorithm{ std::s转载 2013-06-25 21:37:37 · 850 阅读 · 0 评论 -
KMP算法C++代码
KMP算法的思想一般数据结构书都有讲,没讲的话google一下,有很多文章解释了其思想。晚上写了写这个代码,虽然不难,但还是费了番功夫调试,出现的主要问题有:无符号整型数据与整型数据比较大小(让我越来越讨厌无符号数!),还有一个问题就是KMP算法本身与求next数组的算法很类似,但是有些微妙的区别,也让调试了几次。 int* GetNextVal(const char *s, in转载 2013-06-25 21:41:23 · 824 阅读 · 0 评论 -
KMP算法 (C++实现)
KMP算法 (C++实现)// Test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;void get_next(char*t, int next[ ]){ int t_len=strlen(t); int i=0; //求解每个next[i]转载 2013-06-25 21:42:42 · 753 阅读 · 0 评论 -
选择排序法的几个原则
在多种条件影响下,最优的O表达式的算法不见得最快,最差O表达式的算法也不一定最慢算法的时间复杂性的渐进表示,只是反映了当n增大时,程序执行时间的一种变化趋势,并不能反映算法在实际工作时的效率算法时间复杂性的渐进分析反映了算法本身和排序数据量的关系具有较好渐进性的算法适合于对大数据量的排序,但对小数据量的排序反而不如较差渐进性的算法选择排序法的几个原则:1>当数据量不大时原创 2013-07-11 17:48:44 · 1685 阅读 · 0 评论 -
SQL Server里查询表结构命令
环境:SQL Server 2008 R2问题:查询表结构命令 对MySQL和Oracle数据库熟悉的朋友知道用desc就可以查询一张表的结构,但是在SQL Server里执行desc命令会报错。 [sql]desc Student; --关键字 'desc' 附近有语法错误。 www.2ct转载 2013-07-11 15:28:31 · 1708 阅读 · 0 评论 -
合并两个有序序列
经典写法合并两个有序序列,太简单了吧?还有专门讨论的必要吗?这是一个最简单的 Merge 版本:[cpp] view plaincopytemplateclass InputIter1, class InputIter2, class OutputIter> void merge(InputIter1 first1, InputIter1 last1,转载 2013-06-26 09:57:29 · 986 阅读 · 0 评论 -
C++插入排序
插入排序的基本思想:每次将一个待排序的数据对象按关键码大小插入一个有序的数据序列中,得到一个新的容量加1的数据序列,如此往复直到全部对象插入完毕不同的插入排序算法寻找插入位置的方法不同,这是区别各种插入算法的根本1>直接插入排序基本思想:数据对象存储在顺序表中 ,当插入第i个对象V[i]时,前面的i-1个元素V[0],V[1],...V[i-1]已经排好序,用第i个对象的关键码同已原创 2013-07-11 22:31:15 · 840 阅读 · 0 评论