- 博客(34)
- 收藏
- 关注
原创 linux-文件的类型与权限
关于文件的类型与权限先看下面的一幅图: 然后我们分别来叙述类型与权限文件的七种类型‘ - ’ :管道文件‘ d ’ :目录文件‘ l ’ :软连接文件‘ c ’ :字符设备‘ b ’ :块存储设备‘ p ’ :管道文件‘ s ’ :socket文件文件的权限文件访问者的分类:文件拥有者:一般为文件的创建者,谁创建了该文件,就天然的成...
2018-08-01 22:02:07
950
原创 mysql表的操作
创建表语法 create table table_name( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 ; 查看表结...
2018-07-24 18:10:44
240
原创 mysql库的操作
mysql的启动和关闭 service mysqld start; service mysqld stop;创建数据库创建名为company1的数据库 create database company1;创建一个使用utf8字符集的company2数据库 create database company2 charset =utf8;...
2018-07-23 13:07:46
293
原创 Huffman树实现文件的压缩与解压缩
Huffman树的概念 Huffman树是由n个带权叶子节点构成的所有二叉树中带权路径长度最短的二叉树。节点的带权路径长度 树根到某一节点的路径长度与该节点的权的乘积。树的带权路径长度 树的带权路径长度为树中从根节点到所有叶子节点的各个带权路径长度之和。Huffman树的构造步骤:初始化:将给定的节点都看作根节点,构成森林。找最小树:在森林中选出两...
2018-07-15 12:04:02
2841
原创 Linux-守护进程
在介绍守护进程之前首先介绍三个概念:进程组:进程组是一个或多个进程的集合。每个进程除了有一个进程ID之外,还属于一个进程组。每个进程组有一个唯一的进程组ID。每个进程组都可以有一个组长进程,组长进程的标识是:进程组ID等于组长进程ID。只要某个进程组中有一个进程存在,该进程组就存在,与组长进程是否存在无关。...
2018-07-05 10:41:18
159
原创 const关键字(c语言)
人们对const的不精确理解: 很多人都认为被const 修饰的值是常量。这是不精确的,精确的说应该是只读的变量,其值在编译时不能被使用1.const修饰一般变量:一般常量是指简单类型的只读变量。这种只读变量在定义时,修饰符const 可以用在类型说明符前,也可以用在类型说明符后。 例如: int const i=2; 或const int i=2;2.const修饰...
2018-04-22 10:55:45
381
原创 二叉树的前、中、后序遍历(递归与非递归)
二叉树的遍历常见的二叉树的遍历有三种方式:前序遍历(根节点,左子树,右子树) 中序遍历(左子树,根节点,右子树) 后序遍历(左子树,右子树,根节点)每种方式都可以用递归和非递归来实现...
2018-04-12 10:37:31
8163
3
原创 二叉树的层序遍历(递归与非递归)
递归实现:计算二叉树的高度逐层打印: 例如打印二叉树的第k层,可以看作以root->_left为根节点,打印它的k-1层,然后以root->_right为根节点,打印它的k-1层,直到k==1。void _BTreeLevelOrder(BTNode* root, size_t i){ if (root == NULL || i == 0)...
2018-04-08 17:53:17
20131
6
原创 快排的非递归实现
基本思想: 用栈来模拟递归的过程部分代码如下:void QuickSortOP(DataType* a, int left, int right){ assert(a); Stack s; StackInit(&s); StackPush(&s, left); StackPush(&s, right); ...
2018-04-05 14:11:01
275
原创 快速排序(c语言)
快速排序的基本思想: 快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比key值小,另外一部分的所有数据都比key值大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序的整体思路:void QuickSort(DataType...
2018-04-03 18:40:29
1002
原创 冒泡排序(c语言)
冒泡排序的基本思想: 从前往后两两判断并交换,把最大的交换到最后面,然后向左缩小无序区间。算法如下:void BubbleSort(DataType* a, size_t n)//冒泡排序{ assert(a); for (size_t end = n; end > 0; --end)//减小区间 { int flag = ...
2018-04-01 18:34:57
199
原创 堆排序(c语言)
堆排序的基本思想及步骤 堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了构建初始堆(升序建大堆,降序建小堆) a.给定一个无序数组: b.创建一个大堆 将根节点与最后一个叶子节点进...
2018-03-29 20:31:05
10134
原创 选择排序(c语言)
选择排序: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。对选择排序的改进: 每一趟排序选出最大值和最小值 算法如下:void Swap(DataType* x1, DataType* x2){ DataT...
2018-03-27 22:29:41
334
原创 从尾到头打印单链表
解决这个问题有两种方法:1.非递归 2.递归 算法如下void SListPrintTailToHead(SListNode* pHead)//非递归{ SListNode* tail = NULL; while (pHead != tail) { SListNode* cur = pHead; whi...
2018-03-26 20:05:04
163
原创 归并排序(c语言)
归并排序示例: 把数组平均分成两半,若两个区间有序后,则进行归并。使两个区间有序和快排同样的方法一样,递归到最后只有一个值或者没有时即有序。但在归并时需要开辟一段空间把合并的数据存起来,再放回原数组。时间复杂度: N*logN算法如下:void _MergeSort(DataType* a, DataType* tmp, int le...
2018-03-25 23:21:46
911
原创 希尔排序(c语言)
希尔排序:取一个小于n的整数gap(gap又叫做步长),通过把所有距离为gap或者gap的倍数的数据放在一个组里,对每一个组进行插入排序,当每个组有序时,这整个序列就接近有序,然后减小gap,继续上面的操作,gap越小时,预排序完毕越接近有序,当gap等于1时,预排序就相当于直接插入排序。
2018-03-23 17:22:05
699
原创 将c风格的注释转换成cpp风格
首先要将文本分成四个状态: 1.普通状态(NULLSTATUS) 2.c状态(CSTATUS) 3.cpp状态(CPSTATUS) 4.EOF状态(EOFSTATUS)
2017-12-07 16:44:15
270
原创 指针1
1.指针数组 它是数组还是指针?(指针数组是数组,是一个存放指针的数组)2.数组指针 数组指针是一个指针,这个指针是具有能力指向一个数组的! int (*p)[10]; //p先和*结合,说明p是一个指针变量,然后指针指向的是一个大小为10个整形的数组,所以p是一个指针,指向一个数 组,叫做数组指针。 //[]的优先级要高于*,所以必须加上()来保
2017-12-01 16:30:22
185
原创 字符串函数模拟实现(strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove)
1.实现strcpy#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>char *my_strcpy(char *str1, const char *str2){ assert(str1); assert(str2); char *str3=str...
2017-11-21 22:03:33
337
原创 编写一个函数,删除一个字符串的一部分
函数的原型如下: int substr(char *str,const char *substr) 函数应该首先判断substr是否出现在str中,如果它并未出现,函数返回值为0;如果出现,函数返回值为1;str中保存删除后的字符串。
2017-11-20 21:33:27
2045
1
转载 关键字static的作用
在C语言中,关键字static有以下三个作用: (1)在一个函数内说明一个静态变量(也称内部静态变量),该类型变量在内存中占据永久性的内存单元,在函数被调用过程中维持其值不变。 (2)在一个模块内(同一文件但在函数体外)说明一个静态变量(又称外部静态变量),该类型变量同样在内存中占据永久性的存储单元,可以被模块内所有的函数访问,但不能被模块外其他函数访问。它是一个局限在一个模块内的全局变量,使数
2017-11-02 21:02:27
212
原创 不使用(a+b)/2这种方式,求两个数的平均值
为什么不使用(a+b)/2这种形式求两个数的平均值? 假如a和b都是int类型的数,两个数相加的时候可能会超过int类型所能表示的最大数,所以一般不用这种方法求两个数的平均值。 如何解决: 1.通过两个数作差来实现。 2.通过两个数位运算来实现。程序代码如下:
2017-11-01 11:26:09
306
转载 堆栈溢出的原因
堆栈溢出的原因很多,不同的语言环境可能的原因也是不同。在C语言中,产生堆栈溢出一般有以下两种情况: (1)函数调用层数太深。函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,就会造成栈溢出此时递归无法正确返回。再有,当函数调用的层次过深时也可能导致栈无法容纳这些调用的返回地址而造成栈溢出。 (2)动态申请空间之后没有释放。由于C语言中没有垃圾资源自动回收机制,因
2017-10-28 13:23:29
4783
原创 确定跳水比赛名次
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#includeint main(){ int A,B,C,D,E; for(A=1;A<=5;A++) for(B=1;B<=5;B++)
2017-10-20 11:04:49
269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人