- 博客(40)
- 问答 (13)
- 收藏
- 关注
原创 二叉树(递归遍历和非递归遍历)(递归求树的高度以及叶子节点数和拷贝树)
#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #include "LinkQueue.h"#include "LinkStack.h"/*前序遍历:先中 再左 再右中序遍历:先左 再中 再右后序遍历:先左 再右 再中*/typedef struct _Tag_BiNode//节点结构体
2016-10-21 22:17:07
1712
原创 两种通用链表(Linux 内核链表)
Linux 内核链表(通用版)以下是头文件#define _CRT_SECURE_NO_WARNINGS#ifndef __LINKLIST_H__#define __LINKLIST_H__#include #include #include #include typedef struct _Tag_LinkNode //用来保存下一个节点{ struct _Tag_
2016-10-20 23:50:45
1698
原创 161017_考试错题集(二维数组表示,字符串大小(sizeof,strlen),链表删除另一种思路)
4、若有定义:int a[3][4],能表示数组元素a[1][1]( B)A *(&a[0]+5)B *(a[0]+5)C (*(a+1)[1])D *(a+5)解答:a[0]等价于*(a+0) a[1][1]等价于 * (*(a+1)+1) 或者 (*(a+1))[1] 或者 *((a[1])+1),所以C少了一个括号
2016-10-17 23:29:22
584
原创 华为笔试题,关于操控字符串
问题描述:输入字符串例如:there is a pig,,,.,pig is good.输出:there is a pig good去掉字符串中所有非字母的字符,并删去重复单词#define _CRT_SECURE_NO_WARNINGS#include #include #include char *change(char *str){ if (str == NULL
2016-10-17 22:58:09
380
原创 静态库和动态库的创建和使用
windows下静态库创建和使用静态库的创建1. 创建一个新项目,在已安装的模板中选择“常规”,在右边的类型下选择“空项目”,在名称和解决方案名称中输入staticlib。点击确定。2.在解决方案资源管理器的头文件中添加,mylib.h文件,在源文件添加mylib.c文件(即实现文件)。3.在mylib.h文件中添加如下代码:#ifndef TEST_H#define
2016-10-16 00:00:20
551
原创 浪潮面试题(将一个句子中的单词反转)例:i am bob 输出 bob am i
#define _CRT_SECURE_NO_WARNINGS#include #include #include /*strtok:char *strtok( char *str1, const char *str2 ); *****************str1一定是要分配内存的数据******************功能:函数返回字符串str1中紧接“标记”的部分的指针
2016-10-15 23:24:06
572
原创 ftell,fseek,rewind
int fseek(FILE*stream, long offset, int whence);功能:移动文件流(文件光标)的读写位置。参数:stream:已经打开的文件指针offset:根据whence来移动的位移数(偏移量),可以是正数,也可以负数,如果正数,则相对于whence往右移动,如果是负数,则相对于whence往左移动。如果向前移动的字节数超过了文件开头则出错返回
2016-10-14 22:43:19
319
原创 格式化读写文件fprintf,fscanf
#define _CRT_SECURE_NO_WARNINGS#include #include #include /*int fprintf(FILE * stream, const char * format, ...);功能:根据参数format字符串来转换并格式化数据,然后将结果输出到stream指定的文件中,指定出现字符串结束符 '\0' 为止。参数:stream:已经
2016-10-14 22:30:14
578
原创 函数指针,函数指针数组,以及回调函数(函数指针做函数参数)
#define _CRT_SECURE_NO_WARNINGS#include #include #include void fun01(int a,double b){ printf("fun01:%d %f\n", a,b);}void fun02(int a, double b){ printf("fun02:%d %f\n", a, b);}void fun03
2016-10-14 22:03:47
318
原创 fputc,fgetc,fputs,fgets,fwrite,fread写入或读取数据文件详细介绍
fputs,fgets:/*\r\n windows下存入文本数据时换行符会变成/r/n(/r是换行/n是将光标移动到行首) \nLinux下正常int fputs( const char *str, FILE *stream );标准解释:fputs()函数把str(字符串)指向的字符写到给出的输出流. 成功时返回非负值, 失败时返回EOF. 返回值:成功返回0失败
2016-10-13 22:39:12
1764
原创 二位数组详解以及二维数组的传递
#define _CRT_SECURE_NO_WARNINGS#include #include #include //不管是几维数组,数组名都表示指向数组首元素地址的指针(数组首元素是什么类型,指针就是什么类型) *******重点**********void test01(){ int arr[3][3] = { {11,22,33}, {44,55,66},
2016-10-11 22:25:11
423
原创 数组指针,指针数组,以及数组下标是否可以为负数
/*数组指针:指向一个数组的指针int(*p)[5]指针数组:一个数组,数组里的每一个元素都是一个指针 int *p[5]*/#define _CRT_SECURE_NO_WARNINGS#include #include #include /*******************************************************************//
2016-10-11 22:17:43
1433
原创 指针数组堆上分配内存(动态分配内存)
#define _CRT_SECURE_NO_WARNINGS#include #include #include char **allocateSpace(int len){ if (len <= 0) { return NULL; } char **temp = (char **)malloc(sizeof(char *)*len); if (temp == NULL)
2016-10-10 23:04:35
1900
原创 选择排序法,排序数字或者字符串
/*选择排序的思路:选择排序相比于冒泡排序,减少了交换次数,一般情况下冒泡每次比较符合交换要求时都要交换,而选择排序是不断的记录下标,保留最小数或者最大数的下标,在里层循环结束后再进行交换,减少了交换次数具体方法:遍历一次,记录下最值元素所在的位置,遍历结束后将此最值元素调整到合适位置,这样遍历一次,只需要交换一次,便可将最值放置到合适位置*/#define _CRT_SECURE_
2016-10-10 23:02:22
2172
原创 sscanf扣取字符串的常用用法
#define _CRT_SECURE_NO_WARNINGS#include #include#include void test1()//sscanf匹配整个字符串{ const char *str = "asdasdadsad"; char buf[1024] = { 0 }; sscanf(str, "%s", buf); printf("%s\n", buf);}v
2016-10-10 22:59:01
674
原创 sprintf初始化字符串的详细介绍
sprintf初始化字符串,详情请参照各个函数的注释:#define _CRT_SECURE_NO_WARNINGS#include #include #include void test1()//sprintf函数 字符串拼接{ char *p1 = "hello"; char *p2 = "world"; char buf[1024] = { 0 }; sprin
2016-10-10 22:56:01
1340
原创 统计字符串的个数
#define _CRT_SECURE_NO_WARNINGS#include #include #include int statisticString(char *str,const char *findStr){ if (NULL == str) { return -1; } int num = 0; char *p = str; while (1) { p
2016-10-08 23:49:16
374
原创 (两头堵)去除两边空格
#define _CRT_SECURE_NO_WARNINGS#include #include #include void trimSpace(char **str){ if (str == NULL) { return; } char *tmp = *str; if (tmp == NULL) { return; } char *left = tmp; c
2016-10-08 23:45:41
395
原创 大小端模式,栈的生长方向和内存的存放方向
/*栈的生长方向和内存的存放方向栈的开口向下,高地址在上,低地址在下内存的存放方向:自下向上大端模式下:栈的高地址对应数据的低位小端模式下:栈的高地址对应于数据的高位*/#define _CRT_SECURE_NO_WARNINGS#include #include #include //1. 栈的生长方向void test01(){ int a = 10; int
2016-10-08 23:37:46
3279
原创 static,extern详细用法
/*staticC语言:static 的作用:1、全局静态变量:(1)在全局静态区分配内存(2)如果没有初始化,其默认值是0(3改变量在本文件内从定义开始到文件结束可见2、局部静态变量:(1)改变量在全局静态区分配内存(2)如果不显示初始化,那么将被初始化为0(3)它始终在全局静态区,直到程序运行结束(4)其作用域为局部作用域,当定义他的函数或语句块结束时,其作用域随之结束
2016-10-07 23:51:32
593
原创 #法(先序遍历)创建二叉树
#define _CRT_SECURE_NO_WARNINGS#include #include #include typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild;}BiTNode;void inOrder1(BiTNode *T)//前序遍历{ if (T == NULL) { re
2016-08-09 15:28:15
1934
4
原创 二叉树中序遍历非递归算法
#include "iostream"#include "stack"using namespace std;typedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild;}BiTNode;/*步骤1:如果结点有左子树,该结点入栈;如果结点没有左子树,访问该结点;步骤2:如果结点有右子树,重复步骤1;
2016-08-09 15:25:38
555
3
原创 二叉树中序遍历递归算法,求树的高度,以及拷贝树
#include #include #include typedef struct BiTNode{ int date; struct BiTNode *lchild, *rchild;//二叉树左枝,右枝}BiTNode;void inOrder(BiTNode *root)//中序遍历递归算法{ if (root == NULL) { return; } inO
2016-08-09 15:22:35
997
2
原创 中缀转后缀
中缀转后缀方法:遇到数字:直接输出 遇到'(':压栈 遇到')':持续出栈,如果出栈的符号不是'('则输出,否则终止出栈。 遇到符号则判断该符号与栈顶符号的运算优先级,如果栈顶符号的运算优先级高,则出栈并输出,直到优先级相等或栈为空;如果栈顶符号的运算优先级低于或等于当前符号的运算优先级,则将当前符号压栈。 处理完字符串后将栈中剩余的符号全部输出例如:2+(3-1)*5
2016-08-07 12:56:53
783
原创 栈的链式存储
下面是栈的链式存储:下面是头文件:#ifndef __LINKSTACK_H__#define __LINKSTACK_H__#include "stdio.h"#include "stdlib.h"#include "nodelist.h"#include "string.h"typedef void LinkStack;typedef void LinkS
2016-08-07 11:53:30
362
原创 栈的线性存储
栈的特性是先入后出,下面给出栈的线性存储:下面是线性栈和线性链表的头文件:#ifndef __SEQLIST_H__#define __SEQLIST_H__#include #include #include typedef void SeqList;typedef void SeqListNode;SeqList * SeqList_Create(in
2016-08-07 11:44:13
552
原创 双向链表
双向链表示意图如下:下面是双向链表的头文件:#ifndef __LINKLIST_H__#define __LINKLIST_H__#include "stdio.h"#include "stdlib.h"typedef void LinkList;typedef struct LinkListNode{ struct LinkListNode * nex
2016-08-07 11:31:10
235
原创 循环链表
循环链表 和之前的链表原理一样头文件:#ifndef __CIRCLELIST_H__#define __CIRCLELIST_H__#include "stdio.h"#include "stdlib.h"typedef void CircleList;typedef struct _tag_CircleListNode{ struct _tag_CircleLis
2016-08-03 18:14:11
259
原创 线性表链式存储
首先是头文件:#ifndef __NODELIST_H__#define __NODELIST_H__#include "stdio.h"#include "stdlib.h"typedef void NodeList;typedef struct _tag_NodeListNode //单个节点{ struct _tag_NodeListNode * next;}Nod
2016-08-02 19:44:52
236
原创 顺序链表的实现
写了一下顺序链表,为了防止自己忘记,于是乎写在博客里方便查看。程序中的容错处理做的不好,是我懒了,就简单处理了一下下面才给出这儿一套API函数头文件:#ifndef __SEQLIST_H__#define __SEQLIST_H__#include #include #include typedef void SeqList;typedef void Seq
2016-08-02 14:06:13
524
原创 质数因子
#define _CRT_SECURE_NO_WARNINGS#include #include #include int JudgeDigit(long num);unsigned int Montgmery( int num, long index, long mod)//蒙哥马利快速幂算法 (num^index)%mod{ int tmp = 1;//保存奇数是剩下的那
2016-06-18 19:45:26
419
原创 C语言判断一个数是否是质数(蒙格马利快速幂算法)
前言:今天搞了一天这个 蒙格马利 什么的,我自己肯定是搞不定,参照了很多资料,写一下自己的理解总结,防止忘了没地方看。只是我个人的理解,对不对还得另说,一些公式还是不懂,只是大概的理解了下,各位当做参考吧问题描述:判断一个数是否是质数?解题思路:一开始我想的方法就是用For循环一个一个判断,后来看资料说这是最笨的方法,好吧,我得承认我数学太渣下面开始介绍点要用到的知
2016-06-18 17:33:53
3280
1
原创 华为的一道很简单的笔试题,当时答得很烂,现在拿出来重新搞了一下
//代码有参考http://codepad.org/6Fd8V6z0#define _CRT_SECURE_NO_WARNIGNS//程序看起来有点复杂是因为考虑到字母数大于9个的时候,需要转换一下存进字符串,最后的字符串保存在了一个字符数组内了#include #include #include int number_to_char(int number, char *char_ne
2016-06-06 19:59:34
637
原创 最大子数组问题
每周坚持搞三种算法问题,介绍一下最大子数组问题算法思路:分治策略求解,将问题不断分为更小的问题,进而求解问题描述:求数组中相连着的数 相加值最大,例如"{-3,2,3,-4,21,-5},输出最大为2+3-4+21=22"代码:#define _CRT_SECURE_NO_WARNIGNS#include #include #include #define N 10#defi
2016-05-24 19:35:03
290
原创 C语言超大数除法,支持小数
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 1000#define M 10 // 保留小数的位数void Input(char number1[], char number2[], int n);//输入数据void Change_str(char number[], int
2016-04-29 14:31:11
1944
原创 C语言,大数除法,不支持小数
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 1000void Input(char number1[], char number2[], int n);//输入数据void Change_str(char number[], int n);//数组前后互换void Sub(cha
2016-04-29 12:40:40
760
原创 用C语言写的超长的大数乘法,不支持负数,新手上路请多指点
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 20 //此处可以改变输入数字的位数void Multiply(char number1[],char number2[]){ int length_n1 = strlen(number1); int length_n
2016-04-26 18:57:58
556
原创 大数相减(不支持负数)
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 1000 //此处可以改输入大数据的位数struct Add_Number{ int num; struct Add_Number *pnext;};typedef struct Add_Number A_N;
2016-04-25 23:11:54
515
原创 新手一枚,写了个大数相加的C程序
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 1000 //此处可以改输入大数据的位数struct Add_Number{ int num; struct Add_Number *pnext;};typedef struct Add_Number A_N;
2016-04-25 23:08:58
355
空空如也
可以在class类中的成员变量,定义一个STL容器吗
2016-11-06
VS2013无法启动,拒绝访问怎么办
2016-07-28
万能的大神,帮忙看一下,程序运行之后会出现一个中断
2016-06-08
输入例如:aabb2222ccc 输出a2b2c3 ,不知道怎么用一次循环就搞定
2016-06-05
多重背包问题,输入正常数据,出现逻辑错误,求解答
2016-05-06
求大神赐教,关于文件读写,fun1正常fun2就会输出乱码
2016-04-23
为什么第二次调用show_all还能打印出数据,指针不是已经到了链表的最后了吗
2016-04-14
大神帮着看一下,为什么加上delete[]arr,这句就会显示错误,不加就没事
2016-04-11
用友元类外函数调用类的私有成员,显示无法调用,是什么原因
2016-04-05
各位大神,生命游戏,代码有点长,运行输入之后总是崩溃,求大神看一下
2016-03-26
华为上机测试题,我只得了50分,为什么?
2016-03-23
C语言问题,求大神指点迷津
2016-03-21
菜鸟求教,为什么会显示找不到,感激不尽
2016-03-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人