- 博客(33)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 C语言之多级指针
指针用途:1、使程序简洁、紧凑、高效2、内存的动态分配3、内存地址的直接处理4、函数调用时批量参数的传递5、复杂数据结构的简洁表达等许多其它数据类型难以实现的复杂操作等等……一、 多级指针1、为什么需要使用二级指针------使用二级指针是为了函数调用结束可以使作为函数实参的指针的值的改变保留下来------数据结构链表和二叉树当中经常用到二级指针2、c
2017-08-07 09:00:35 1102 1
原创 为什么堆排序可以降低复杂度
前言: 事情的本质往往需要追根溯源,从最宏观去思考,会发现理解本质能事半功倍。举个例子:8个小球中有一个质量较轻,用天枰最少称几次能区分开?这种题的本质其实是对答案的搜索空间如何切分的问题,如果你知道天枰有三种状态,那最好的情况就是每次称量答案搜索空间能变为原来的1/3那肯定是最优的,这样看来2次就可以,9个球也是两次,27个球的话就要3次了。今天讨论下堆。堆,这里单指数据结构中的堆。它可
2017-08-07 06:58:28 511 1
原创 C语言中如何获取系统时间?
1 使用time_t time( time_t * timer ) 精确到秒函数名: time头文件:time.h函数原型:time_t time(time_t * timer)功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX
2017-08-14 19:23:32 813
原创 数据结构之链表(四)
1、双向循环链表实现双向循环链表创建、插入、删除、释放内存等简单操作#include #include typedef struct Node{int data;struct Node *pNext;struct Node *pPre;}NODE, *pNODE;//创建双向循环链表pNODE CreateDbCcLinkList(void);/
2017-08-11 19:54:09 283
原创 数据结构之链表(三)
四、双向线性链表C语言中一种更复杂的链表式“双向链表”或“双面链表”。其表中的每个节点有两个连接:一个指向前一个节点,(当这个“连接”为第一个:“连接”时,指向空值或者空列表);而另一个指向下一个节点,(当这个“连接”为最后一个:“连接”时,指向空值或者空列表)。例如:在一些低级语言中,XOR-linking 提供一种在双向链表中通过用一个词来表示两个链接(前后),我们通常不提倡这种方
2017-08-11 19:50:36 331
原创 数据结构之链表(二)
2、自写单链表代码实现说明:插入节点时,需要考虑多种情况,如输入坐标不合法、插入到头节点、在其他位置插入新节点等。插入方式为新建节点的下个节点指向头节点,而后让头节点指向新建节点,完成插入。其他位置插入则是循环到坐标位置。删除节点时,也需要考虑多种情况,如输入坐标坐标不合法、删除头节点、删除其他节点等。删除方式为头节点找个替身,然后将头节点指向头节点的下个节点。其他位置删除则是循环到坐标位置。
2017-08-11 19:47:21 275
原创 数据结构之链表(一)
很多人,一接触到数据结构就难懂,就说有难度,还有就说,链表有什么用?今天我就详细的说下,这个链表有什么用。一、链表介绍1、链表有地址不连续的结点序列,必须通过指针相互连接。2、链表的分类:(1)单向线性链表每个节点中除了存储数据结构内容以外,还需要保存指向下一个节点的指针,叫做后指针。最后一个节点的后指针为NULL。其中第一个节点叫做头节点,指向头结点的指针叫做头指针。最后
2017-08-10 19:56:25 242
原创 fork && fork || fork问题
#include #include int main() { fork();/*****/ fork() && fork() || fork();/*****/ fork();/*****/ sleep(100); return 0;问题是
2017-08-10 10:05:11 1083
转载 程序的灵魂----算法(二)
4、快速排序算法(1)算法描述从待排序序列中任意挑选一个元素,作为基准将所有小于基准的元素放在基准之前,大于基准的元素放在基准之后,等于基准的元素放在基准之前或之后,这个过程称为分组以递归的方式,分别对基准之前和基准之后的分组继续进行分组,知道每个分组内的元素个数不多于 1 个为止(2)算法评价平均时间复杂度:O(NlogN)非稳定排序若每次都能均匀分组,则排序速度
2017-08-09 19:37:59 205
转载 程序的灵魂----算法(一)
一、算法的基本概念算法是指对解题方案准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法中的指令描述的是一个计算过程,在它的作用下,系统从初始状态和初始输入(也可能没有)开始,经历一系列有限且被明确定义的中间状态,最终产生所要求的输出,并停止于终止状态。同一个问题,不同的算法,可能会在时间、空间等方面表现出明显的差异,一个算法的优劣可以用时间
2017-08-09 19:34:29 561
转载 数据结构与算法---栈与ADT
1、数据结构的基本概念在计算机学科中数据结构表示数据在计算机中的存储和组织形式。主要描述数据元素之间和位置关系等。一般来说,选择适当的数据结构可以提高计算机程序的运行效率(时间复杂度)和存储效率(空间复杂度)。2、数据结构的三种层次(1)逻辑结构--抽象层主要描述的是数据元素之间的逻辑关系(2)物理结构--结构层主要描述的是数据元素之间的位置关系(3)运算结构--实现层
2017-08-09 19:28:40 445
原创 走进数据结构---时间复杂度
一、时间复杂度介绍1、时间复杂度定义在进行算法分析,语句总得执行次数 T(n) 是关于问题规模 n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n)),它表示随问题规模 n 的增大算法执行时间的增长率和 f(n) 的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度,其中f(n) 是问题规模
2017-08-09 19:19:35 461
转载 几种常见排序算法及其特点
一、直接插入排序直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的元素记录,按其关键字大小插入到它前面已经排好序的子序列中的适当位置,直到全部元素插入完成为止。设需要排序的数组为a[0…n-1]。1. 初始时,i = 0,a[0]自成1个有序区,无序区为a[1..n-1]。2. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。3
2017-08-08 14:02:15 5918 1
转载 C语言之内存管理
一、常见的内存错误及其对策1、内存分配未成功,却使用了它。编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解决办法是,在使用内存之前检查指针是否为NULL。如果指针 p 是函数的参数,那么在函数的入口处用 assert (p != NULL) 进行检查。如果是用 malloc 或 new 来申请内存,应该用 if (p == NULL) 或者 if (p != NULL) 进
2017-08-07 09:30:23 871
转载 C语言之指针数组
指针数组: 数组的所有元素都是指针类型数据(指针变量)。定义形式: 类型名 *数组名[元素个数];例如:char *name[10];具体应用:一般用于处理一组字符串数据。应用举例:char *name[]={“Tom”,”Mike”,”Mary”,”Peter”};for(i=0;iputs(name[i]);习 题1、定义a为共有5个元素的一维整型数
2017-08-07 08:58:05 845 1
转载 C语言之字符串与指针
1、字符串的存储与访问字符串的访问char str[N];第i个字符的地址:str+i第i个字符:*(str+i)思考???以下写法是否正确?char s1[N];s1[]=“Welcome”;s1=“Welcome”;错误!必须逐一赋值或使用函数,且数组长度要足够大。可以使用字符指针解决:char *s;s=“Welcome”;或:
2017-08-07 08:56:06 1318
原创 了解C语言之指针与数组
一、数组的存储与访问小结:a[i]的地址是: &a[i] a+ia[i]的内容是: a[i] *(a+i)二、指向一维数组的指针需要定义一个基类型与数组元素数据类型相同的指针变量。#include#define N 10void main( ){ int a[N],i;int *p=a; 下标法for(i=0;iscanf("%d",a+
2017-08-07 07:27:09 671
原创 了解C语言之指针(三)
七、多级指针1、二级指针二级指针变量的定义形式为:类型 **指针变量名;普通变量、一级指针变量、二级指针变量也可以在一道定义。例如: int **q,*p,x;指向指针的指针用于存放某个指针变量地址的指针变量被称为指向指针的指针,其定义形式如下:类型名 **变量名;int a, *p1, **p2 ;a=10;p1=&a;p2=&p1;printf(
2017-08-07 07:25:10 301
原创 了解C语言之指针(二)
四、指针变量的运算指针变量可参与3种运算:赋值运算、算术运算和关系运算赋值运算:float c, *p, *q;p=&c;q=p;int i ,*p;i=3; p=&i;*p++与*++p:引用下一元素的值*p++çè*(p++)*++pçè*(++p) char i ,*p;p=&i;printf("%d",p);p=p+2;pri
2017-08-07 07:22:17 346
原创 了解C语言之指针(一)
一、指针的概念什么是变量?内存中一块命名的临时区域什么是地址?内存中每一个存储单元有一个编号,称为地址。char a;int b;float c;通过变量名直接引用该内存空间。直接访问方式什么是指针?在C语言中,指针被用来表示内存单元的地址,如果把这个地址用一个变量来保存,这种变量就称为指针变量。通常指针变量的值用无符号的长整型来表示 unsigne
2017-08-07 07:16:34 213
转载 了解C语言之数组
今天我带来一个知识点,C语言里面的数组,希望对刚接触C语言的伙伴有所帮助吧,也是仅仅自己所总结出来的,有需要的讲C语言里面的什么知识点,在下面给我评价留言就好了哈。今天文章里面会涉及到一维数组,二维数组,字符数组一、数组概述数组 数组是数目固定、类型相同的若干数据的有序集合数组元素 组成数组的各个成员称为数组元素,统一数组名[下标]访问数组分类 1、类型 (数值数组 字符数组
2017-08-07 07:10:33 265
原创 Linux下的通讯录
//.h文件#ifndef __MASSAGELIST_H__#define __MASSAGELIST_H__#define unit unsigned int#define PASS 0#define ERROR -1#define MALLOC_ERROR -2#define N 40typedef int LinkData; typedef struct node{LinkData ID;
2017-08-07 07:05:34 821 1
原创 我所理解的二维数组
要对二维数组做一些详细的理解,那么我们先要复习下一维数组的几点知识:对于一维数组,大家肯定知道,一维数组的数组名可以当成一维指针使用,也就是说,可以用一个一维指针,把数组首地址赋值给这个指针,然后把这个指针当成数组名用.int arr[5]={1,2,3,4,5};//一维数组int *p=arr;然后可以用指针p来处理这个数组里面的元素,比如说p[0]就是arr[0],p[1]就
2017-08-06 23:00:00 363 1
转载 C语言的关键字
C语言一共有32个关键字,如下表所示:1数据类型关键字A)基本数据类型(5个)void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果char:字符型类型数据,属于整型数据的一种int:整型数据,通常为编译器指定的机器字长float:单精度浮点型数据,属于浮点数据的一种double:双精度浮点型数据,属于浮点数据的一种B)类型修饰关键字(4个)sho
2017-08-06 22:58:25 282
原创 数据结构之链表
很多人,一接触到数据结构就难懂,就说有难度,还有就说,链表有什么用,小编头条里面写了一个链表写出来的飞机大战的游戏,也可以去看看的,今天我就详细的说下,这个链表有什么用。一、链表介绍1、链表有地址不连续的结点序列,必须通过指针相互连接。2、链表的分类:(1)单向线性链表每个节点中除了存储数据结构内容以外,还需要保存指向下一个节点的指针,叫做后指针。最后一个节点的后指针为NULL
2017-08-06 22:51:37 243
原创 C语言精华之:函数
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。学习好指针必须要从四个方面入手:1、指针的类型2、指针所指向的类型3、指针的值或者叫指针所指向的内存区4、还有指针本身所占据的内存区例如1:a. int *ptr;b. char *ptr;c. int **ptr;d. int (*ptr)[3];e. int *(*ptr)[4];
2017-08-06 22:48:21 210
原创 C语言之:函数
一、函数概述1、首先什么是函数?函数是用于完成特定任务的程序代码的自包含单元。2、为什么使用函数?第一、函数的使用可以身故重复代码的编写。第二、函数使得程序更加模块化,有利于程序的阅读修改和完善。3、main函数原型int main (int argc, char * argv[], char * envp[]) {....}第一个参数:命令行参数的个数第二个参数:
2017-08-06 22:43:55 221
原创 C语言指针--初级部分
一、指针和指针变量(重点)在计算机科学当中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在计算机存储器中另一个地址的值。1、指针是什么?指针就是一个变量,此变量存储的是一个地址,指向一个存储单元。我们可以根据指针(地址)找到地址所指的变量,并对这个变量进行操作(赋值等)。通过C语言里面的取地址符号&和取所指向内容的符号*可以很方便的表示指针以及指针所指向的变量之间的关系。
2017-08-06 22:41:22 212
原创 Linux下的通讯录项目
//Massage.h文件#ifndef __MASSAGELIST_H__#define __MASSAGELIST_H__#define unit unsigned int#define PASS 0#define ERROR -1#define MALLOC_ERROR -2#define N
2017-08-06 22:23:25 453 1
原创 C语言排序原理及其分析
如何找一组数的最大值:假定第1个为最大的;然后往后面看,如果后面的元素更大,就把后面那个更大的给假定的这个地方,这样始终保证这个地方总是最大的值;这样,一次循环完了,就得到了整个数组中最大的数了。
2017-08-06 19:51:12 527
原创 C语言链表的来源分析
C语言中的链表是重点,也是难点,而且意义非凡。对链表的的抽象和恐惧是源于对它的来龙去脉的不明白。所以很有必要对它的发展渊源做透彻分析。知其源,才能用其本源。
2017-08-06 19:29:37 233
原创 Linux下实现冒泡排序
排序思想:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。每次排序后,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。排序过程:原序列 9 8 7 6 5 43 2 1第一次排序后 8 7 6 5 4 3 2 1 9第二次排序后 7 6 5 4 3
2017-07-12 19:55:45 3554 1
请问这段代码执行结束,创建了几个进程?
2017-08-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人