![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
Dyson~
小小黑
展开
-
指针
指针可以理解成是一个变量,一个用来存放地址的变量。(存放在指针中的值都被当成地址处理)指针的出现就是为了存放地址,而地址就相当于一个门牌号,让内存更容易被访问。指针的大小在32位平台上为4个字节,在64位平台是8个字节。指针类型指针和变量一样有不同的类型,比如int,char,double,float等。那定义了类型指针有什么意义呢?1.有了类型的区分,就相当和法律一样有了规则,使得代码更加严谨。...原创 2018-05-26 13:59:55 · 184 阅读 · 0 评论 -
大小段字节序基本常识 & 如何判断当前机器的字节序
大端存储模式 : 是指数据的低位字节序保存在内存的高地址中, 而数据的高位字节序, 保存在内存的低地址中;小端存储模式 : 是指数据的低位字节序保存在内存的低地址中, 而数据的高位字节序, 保存在内存的高地址中;通过上图可以看出 a 和 b 分别以补码的形式存储在内存当中 , 但是存储的顺序确是反过来的 , 这是因为在 VS2013 编译器上数据存储模式是小端字节序存储 , 是由低地址...原创 2018-09-10 21:00:23 · 1996 阅读 · 0 评论 -
啊哈,算法 !--火柴棍公式 ( C语言版 )
题目 : 假如现手中有m(m<=24)个火柴棍,希望拼出A+B=C等式。等式中的A、B、C均为火柴棍拼出来的整数(若该数非0,则最高位不能为0)。注意:1、加号与等号各自需要2根火柴棍; 2、如果A不等于B,则A+B=C与B+A=C视为不同的等式(三者均大于0); 3、所有根火柴棍必须全都用上。思路:24根除去 '+' 和 '=' 4根还有20根,而数字1所需火柴棍最少,需2根...原创 2018-09-07 16:45:40 · 2307 阅读 · 1 评论 -
贪心算法问题
一、概念1. 贪心法(Greedy Algorithm)定义 求解最优化问题的算法通常需要经过一系列的步骤,在每个步骤都面临多种选择; 贪心法就是这样的算法:它在每个决策点作出在当时看来最佳的选择,即总是遵循某种规则,做出局部最优的选择,以推导出全局最优解(局部最优解->全局最优解)2. 对贪心法的深入理解 (1)原理:一种启发式...转载 2018-09-15 15:44:37 · 20543 阅读 · 2 评论 -
C语言中一些有关于字符串的库函数 ( 源函数 )
strlen 计算字符串大小// 计数器方法int my_strlen(const char * str) { int count = 0; while(*str) { count++; str++; } ...原创 2018-09-20 23:48:36 · 1028 阅读 · 0 评论 -
LeetCode--153 寻找旋转排序数组中的最小值 (Find Minimum in Rotated Sorted Array)(C语言版)
题目描述:解题思路:可以使用顺序遍历,将最小值记录下来,时间复杂度为O(n),但是根据题目描述,该数组为旋转排序数组,这里就可以联想到二分查找,试着用二分查找的思想,首先使用Lindex和Rindex记录左右区间的下标,然后再用Mindex表示区间中间元素的下标,根据旋转特性可以将数组分为,大的递增区间和小的递增区间,在大区间中所有元素都大于小区间元素,当我们取到中间元素时就可以判断,当中...原创 2018-10-11 21:29:59 · 223 阅读 · 0 评论 -
LeetCode--154 寻找旋转排序数组中的最小值 II ( Find Minimum in Rotated Sorted Array II)(C语言版)
题目描述:解题思路:当数组有重复元素时,只要Mindex与Rindex和Lindex下标代表的元素都不相等时还是可以继续使用二分查找,但是当Mindex与Rindex和Lindex下标代表的元素都相等时,这时使用就不能使用二分查找,需要将这一段区间单独取出来使用顺序遍历的方法算出数组中最小值。代码如下://顺序遍历求出最小值int MinInorder(int* Nums,in...原创 2018-10-12 09:18:55 · 254 阅读 · 0 评论 -
C语言复习笔记
在C语言中, 当const修饰一个表示符的时候, 被修饰的表示符依然是一个变量, 但它具有常属性, 不能被改变. C语言中, 一些重要的关键字( Keyword ) , volatile ( 保证内存的可见性, 防止编译器对代码优化 ), typedef( 类型重命名 ),register( 寄存器关键字, 建议的作用 ) https://blog.csdn.net/21aspne...原创 2018-10-12 10:05:12 · 1317 阅读 · 0 评论 -
排序算法之计数排序 ( C语言版 )
计数排序:计数排序又称为鸽巢原理,是对哈希直接定制法变形应用,是一种稳定的算法,它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法,当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)),如归并排序,堆排序)操作...原创 2018-10-07 11:37:38 · 6472 阅读 · 1 评论 -
LeetCode--110 平衡二叉树 ( Balanced Binary Tree )( C语言版 )
题目描述 :方法一:需要重复遍历节点多次解法,当遍历到一个节点时就将左右子树的的深度计算出来,然后判断是否满足条件/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *rig...原创 2018-10-07 15:30:39 · 504 阅读 · 0 评论 -
LeetCode--105 从前序与中序遍历序列构造二叉树 (Construct Binary Tree from Preorder and Inorder Traversal)(C语言版)
题目描述:解题思路:通过先序遍历来确定每次所要创建的根节点 通过 i 来将中序遍历的区间不断划分为左右区间 再分别在左右区间中继续执行上述步骤代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left;...原创 2018-10-08 16:40:20 · 324 阅读 · 0 评论 -
LeetCode 236 -- 二叉树的最近公共祖先 ( Lowest Common Ancestor of a Binary Tree ) ( C语言版 )
题目描述 : 方法一:代码如下(附有解析):/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */struct TreeNode* Fi...原创 2018-09-16 17:57:32 · 407 阅读 · 0 评论 -
关于strncpy这个函数
来源 : https://blog.csdn.net/sinat_30071459/article/details/72771137转载 2018-09-12 16:28:02 · 273 阅读 · 0 评论 -
数据结构--单链表的基本功能实现
链表实现下面功能//初始化链表void InitLinkList(pList* pplist);//销毁链表void DestroyLinkList(pList* pplist);//销毁节点void Destroy(pList* pplist);//打印void PrintList(pList plist);//尾插void PushBack(pList* pplist,...原创 2018-06-30 11:08:23 · 1531 阅读 · 0 评论 -
啊哈 , 算法 !--深度优先搜索( C语言版 )
深度优先搜索 : 理解的关键在于解决“当下该如何做”。至于“下一步该如何做”则与“当下该如何做”是一样的问题 : 求出123的全排列123 132 213 231 312 321这里我们可以用一个a数组去存放要排列的数组, 再用一个book数组去标记哪些数已经被使用了 . 代码如下 : #include <stdio.h>#include &l...原创 2018-09-08 10:42:41 · 3823 阅读 · 1 评论 -
可变参数列表解析
C语言中的可变参数是一个比较有意思的实现,通过将函数实现为可变参数的形式,可以使得函数接受1个以上的任意多个参数(不固定)例子:实现一个函数可以求任意个参数的平均值:#include <stdio.h>#include <stdarg.h>int average(int n, ...){ va_list arg; int i = 0; int sum = 0;...原创 2018-05-19 12:22:54 · 179 阅读 · 0 评论 -
实现一个函数,可以左旋字符串中的k个字符。
解法一:使用传值的方式#include<stdio.h>char Left_hand(char *arr, int k){ int right = 0; int i = 0; int len = strlen(arr);//求出字符串长度 char ret; while(k) { ret = arr[0]; for(i = 0; i < len; i++)...原创 2018-05-08 23:21:44 · 843 阅读 · 0 评论 -
杨氏矩阵有一个二维数组。 数组的每行从左到右是递增的,每列从上到下是递增的。 在这样的数组中查找一个数字是否存在。时间复杂度小于O(N);
首先先了解一下杨氏矩阵 杨氏矩阵是一个从左到右依次递增,从上到下依次递增的二维数组比如:1 2 3 2 3 4 3 4 5解法思路:如果要在杨氏矩阵中查找一个数,且时间复杂度小于O(N),那根据该数组特点依次递增的特性,则可以先从数组的每一行的最一个元素开始,如果相等就直接输出,如果小于要查找的数则用下一行的最后一个元...原创 2018-05-05 11:03:51 · 750 阅读 · 0 评论 -
小小游戏---三子棋
text.c 文件#include"game.h"int main(){ int a=0; int count=1; do { menu(); scanf("%d",&a); switch(a) { case 1: game(); break; case 0: count--; break; default: ...原创 2018-04-28 19:11:53 · 193 阅读 · 0 评论 -
求一个整数中二进制中1的个数
思想一:通过余数的方法判断#include<stdio.h>int main(){ int a=0; int i=0,count=0; printf("请输入一个正整数:"); scanf("%d",&a); do { if((a%2)==1) { ...原创 2018-04-19 17:51:35 · 1558 阅读 · 0 评论 -
编程小常识:数组的基本知识和有关数组的运算
一维数组的一般形式为:类型符 数组名 [常量表达式]一维数组的使用:1.数组是使用下标来访问的,下标是从0开始。//int arr[10]; 2.数组的大小可以通过计算得到。 //int sz=sizeof(arr)/sizeof(arr[0]);一维数组在内存中的存储:数组在内存中是连续存放的。一维数...原创 2018-04-15 13:56:42 · 539 阅读 · 0 评论 -
编程小常识:操作符与表达式
C语言中操作符和表达式 操作符分类:算数操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用,函数调用和结构成员算数操作符: + - * / % 1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。 2.多于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点...原创 2018-04-05 21:51:26 · 717 阅读 · 0 评论 -
编程小练~一元二次方程求解问题
如何考虑一元二次方程求解问题:求解思想:首先考虑a是否为0,若为0,则直接判断该方程不为一元二次方程。 若不为0,则判断b*b-4ac和0的关系,若为0,判断该方程只有一个解并直接输出解为-b/2a 若大于0,判断该方程有两个解并输出解为(-b+sqrt(b*b-4ac)/2a,(-b-sqrt(b*b-4ac))/2a 若小于0,判断该方程无解。注意:浮点型和零之间的比较由于...原创 2018-03-31 19:57:24 · 2500 阅读 · 1 评论 -
编程小练~100-200素数求和
用语言求100-200间的素数。素数的定义:只有1和它本身两个因数的自然数。如果a能被2-a-1之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m;例如:16可以分成4*4,那只要满足2-4中有可以被16整出即可,所以16不是素数;13可以分为3*3,那只要满足2-3中有可以被13整出即可,所以13是素数;并且所有的偶数均不是素数;#include<stdio.h&g...原创 2018-03-30 17:23:04 · 7741 阅读 · 2 评论 -
基本的数据类型大小
#include <stdio.h>#include <stdlib.h>int main(){ printf(" char(字符数据类型)的字节大小 : %d Byte\n ", sizeof(char)); printf("shart(短整型)的字节大小 : %d Byte\n ", sizeof(short)); printf("int(整形)的字节大小...原创 2018-08-28 16:41:04 · 1092 阅读 · 0 评论 -
剑指offer( 面试题 9 )--斐波那契数列
常规解法,使用循环#include <stdio.h>long long Circ(int n){ long long n1=0,n2=1,n3=n; int i=n; for(;i>1;i++) { n3=n1+n2; n1=n2; n2=n3 ...原创 2018-05-12 18:19:38 · 279 阅读 · 0 评论 -
LeetCode--对称二叉树 ( Symmetric Tree ) ( C语言版 )
对称二叉树 : 给定一个二叉树,检查它是否是镜像对称的。思路 : 根据对称二叉树的特性, 可以使用递归去求解, 这里只需要判断左孩子的左边和右孩子的右边 或者 左孩子的右边和右孩子的左边是否相等或为空即可;代码如下 : /** * Definition for a binary tree node. * struct TreeNode { * int val; *...原创 2018-09-01 19:07:41 · 1122 阅读 · 0 评论