c语言
Xzg_2017
这个作者很懒,什么都没留下…
展开
-
逻辑移位和算术移位的区别
逻辑移位 逻辑移位是指逻辑左移和逻辑右移,移出的空位都用0来补。算术移位算术移位 就需要分有符号型值和无符号型值 对于无符号型值,算术移位等同于逻辑移位。 而对于有符号型值 ,算术左移等同于逻辑左移,算术右移补的是符号位,正数补0,负数补1。那么C编译器中采用的是那种移位方式呢?在汇编指令中,shl和shr表示逻辑左移和逻辑右移,sal和sar表示算术左移和算术右移。首先让我们来看一段原创 2018-05-01 18:02:27 · 41545 阅读 · 1 评论 -
单链表是否有环
1,实现思路如何判断一个单链表是否有环? 我们可以定义两个指针,第一个指针一次遍历一步,第二个指针一次遍历两步,如果第二个指针指向NULL,则单链表无环,如果第二个指针与第一个指针相遇,则说明有环。 2,代码实现LNode* HasCircle(LNode *phead){ if(phead ==...原创 2018-07-22 13:32:02 · 291 阅读 · 0 评论 -
查找倒数第K个节点
1,实现思路查找倒数第K个节点 第一种思路: 倒数第K个节点也就是正数第N-K+1个节点吗,我们可以将链表遍历一遍求出链表的长度N,然后在遍历到第N-K+1个节点,就实现了查找倒数第K个节点。 但是这种思路需要将链表遍历两遍,那么有没有遍历一遍的方法呢? 第二章思路:可以定义两个指针,首先第一个指针指向头节点不动,第二个...原创 2018-07-22 12:34:33 · 924 阅读 · 0 评论 -
O(1)的时间复杂度下删除单链表中的节点
1,基本思路在单链表中如果要删除一个节点,需要通过头结点找到该节点的前驱节点,然后让该节点的前驱节点指向它的后继节点,然后free点当前节点就实现了单链表的删除,但是这样的删除需要遍历到当前节点的前驱节点,时间复杂度自然而然就成了O(n),那么如何O(1)删除呢?如果想要O(1)删除节点,就不能删除当前节点,因为不知道当前节点的前驱节点,删除最后单链表的链...原创 2018-07-22 12:00:30 · 2104 阅读 · 1 评论 -
合并两个排序的单链表--递归与非递归实现
链表结构定义如下:typedef int ElemType;typedef struct LNode{ ElemType data; LNode *next;}LNode; 1,递归实现合并两个升序的单链表LNode *Merge(LNode *phead1, LNode *phead2){ if(phead1 == NULL) ...原创 2018-07-22 01:48:02 · 395 阅读 · 0 评论 -
单链表的逆置
1,题目 定义一个函数,输入一个链表的头节点,逆置该链表并输出逆置链表的头节点,链表的定义如下:typedef int ElemType;typedef struct LNode{ ElemType data; LNode *next;}LNode; 2,链表逆置代码实现 LNode *ReverseList(LNo...原创 2018-07-22 00:26:50 · 1010 阅读 · 0 评论 -
堆排序
讲堆排序之前,先讲一下简单选择排序! 1,简单选择排序基本思想:就是通过n-i次关键字间的比较,从n-i+1个数据中选出关键字最小的数据,并与第i个数据进行交换。 2,简单选择排序的代码实现void Swap(int *a,int *b) //交换{ int tmp = *a; *a = *b; *b = tmp;...原创 2018-07-08 00:53:55 · 323 阅读 · 0 评论 -
希尔排序
讲希尔排序之前,先给大家讲一下直接插入排序。 1,直接插入排序什么是直接插入排序?基本思想:直接插入排序的基本操作就是将一个数据插入到已经排好序的有序表中,从而得到一个新的,数据个数增1的有序表。 2,直接插排序代码实现void InsertSort(int *arr, int n){ assert(arr != NULL &amp...原创 2018-07-07 17:38:54 · 280 阅读 · 0 评论 -
static关键字的总结
C++中的static关键字的总结 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static 1.1静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。 静态全局变量有以下特点: • 该变量在全...转载 2018-07-25 00:23:10 · 279 阅读 · 0 评论 -
KMP算法
1,## KMP算法的来源? ##由于朴素匹配算法非常低效,需要挨个遍历主串,所以有三位前辈,D.E.Knuth,J.H.Morris,和V.R.Pratt发表了一个模式匹配算法,可以大大避免重复遍历的情况,我们称这为克努特–莫里斯–普拉特算法,简称KMP算法。 2,## 何为KMP算法? ##KMP算法在匹配过程中发生失配时,并不是简单的从原始串的下...原创 2018-07-05 00:14:24 · 229 阅读 · 0 评论 -
可变参数
## **可变参数** ##可变参数 : 是通过宏来实现的 **1,可变参数的用法**1,首先声明一个类型va_list的变量,与下面几个宏配合使用,访问参数的值。 2,va_start()用来初始化可变参数列表,它的第一个参数是va_list类型的变量的名字,第二个参数是省略号前最后一个有名字的参数,初始化过程把变量指向可变参数部分的第一个参...原创 2018-07-03 09:42:26 · 280 阅读 · 0 评论 -
转换表实现简单计算器
## **转换表** ##转换表 : 一个函数指针数组创建一个转换表需要两个步骤, 1,声明并初始化一个函数指针数组,并确保这些函数原型出现在这个数组声明之前。 double add(double, double);//加 double sub(double, double);//减 double mul(double, do...原创 2018-07-03 00:56:04 · 215 阅读 · 0 评论 -
朴素匹配
## **朴素匹配** ##何为朴素匹配? 朴素匹配其实就是我们所熟知的暴力匹配,简单的说,就是对主串进行遍历,与匹配串每一个字符进行匹配,如果对应的字符不相等,主串后移,匹配串不动; 匹配过程中如果相等,两个串同时向后移,如果将匹配串全部遍历,则说明找到了,返回 主串现在位置减去字串长度; 匹配过...原创 2018-07-03 00:25:21 · 617 阅读 · 0 评论 -
菲波那契数列
** 菲波那契数列 **定义: 指的是0 1 1 2 3 5 8 13 21 34 …… 这样一个数列,用数学表达式被以递归的方式来形容就是F(0) = 0,F(1) = 1,F(n) = F(n-1) + F(n-2) (n>=2,n∈N*)。** 递归算法 int fibonacci(unsigned int n){ if(n < 2) ...原创 2018-05-26 16:56:22 · 1061 阅读 · 0 评论 -
递归算法
**递归算法** 定义:就是直接或间接调用自身的算法。实现的原理:每次递归调用后必须越来越接近某种限制条件,当递归算法符合这个限制条件,他便不再调用自身。让我们来用阶乘举例来简单说明一下递归算法:阶乘的递归算法int Factorial(int n){ if(n < 1) //限制条件 return 1; el...原创 2018-05-26 11:59:17 · 342 阅读 · 0 评论 -
剑指offer之替换空格
替换空格 请实现一个函数,把字符串中的每个空格替换成“%20”, 例如输入“we are happy.”,则输出“we%20are%20happy.”看到这个题目,我们可以想到原来一个空格字符,替换之后变成了’%’,’2’,’0’这三个字符,因此字符串会变长,如果是在原来的字符串上进行替换,就有可能覆盖修改字符串后面的内存。如果是创建新的字符串并在新的字符串上进行替换,那么我们...原创 2018-05-15 10:55:50 · 235 阅读 · 0 评论 -
整型在字符数组中的存储
这篇文章我们来讨论整型在字符数组中的存储首先我们来讨论一下字符大家都知道一个字符占用一个字节,无符号字符型的范围是从0~255,而有符号字符型的范围是-128~127,那么对于有符号字符型而言,大于127或小于-128的数该怎么存储呢?请您往下欣赏:以-129为例,我向大家展示一下吧 整数存的是源码,而负数存的是补码,所以说要存储-129,得先算出它的补码。 源码 本该是 1 1000 0001原创 2018-04-26 19:58:36 · 5080 阅读 · 1 评论 -
data,bss和rodata段的区别与联系
有人可能会说,全局内存就是全局变量嘛,有必要专门一章来介绍吗?这么简单的东西,还能玩出花来?我从来没有深究它,不一样写程序吗?关于全局内存这个主题虽然玩不出花来,但确实有些重要,了解这些知识,对于优化程序的时间和空间很有帮助。因为有好几次这样经历,我才决定花一章篇幅来介绍它。正如大家所知道的,全局变量是放在全局内存中的,但反过来却未必成立。用static修饰的局部变量就是放在放全局内存的,它的...转载 2018-08-08 16:13:51 · 10866 阅读 · 0 评论