
编程语言
文章平均质量分 70
与或非tm
这个作者很懒,什么都没留下…
展开
-
我所理解的二维数组
要对二维数组做一些详细的理解,那么我们先要复习下一维数组的几点知识:对于一维数组,大家肯定知道,一维数组的数组名可以当成一维指针使用,也就是说,可以用一个一维指针,把数组首地址赋值给这个指针,然后把这个指针当成数组名用.int arr[5]={1,2,3,4,5};//一维数组int *p=arr;然后可以用指针p来处理这个数组里面的元素,比如说p[0]就是arr[0],p[1]就原创 2017-08-06 23:00:00 · 390 阅读 · 1 评论 -
数据结构之链表
很多人,一接触到数据结构就难懂,就说有难度,还有就说,链表有什么用,小编头条里面写了一个链表写出来的飞机大战的游戏,也可以去看看的,今天我就详细的说下,这个链表有什么用。一、链表介绍1、链表有地址不连续的结点序列,必须通过指针相互连接。2、链表的分类:(1)单向线性链表每个节点中除了存储数据结构内容以外,还需要保存指向下一个节点的指针,叫做后指针。最后一个节点的后指针为NULL原创 2017-08-06 22:51:37 · 254 阅读 · 0 评论 -
为什么堆排序可以降低复杂度
前言: 事情的本质往往需要追根溯源,从最宏观去思考,会发现理解本质能事半功倍。举个例子:8个小球中有一个质量较轻,用天枰最少称几次能区分开?这种题的本质其实是对答案的搜索空间如何切分的问题,如果你知道天枰有三种状态,那最好的情况就是每次称量答案搜索空间能变为原来的1/3那肯定是最优的,这样看来2次就可以,9个球也是两次,27个球的话就要3次了。今天讨论下堆。堆,这里单指数据结构中的堆。它可原创 2017-08-07 06:58:28 · 528 阅读 · 1 评论 -
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 · 874 阅读 · 1 评论 -
了解C语言之数组
今天我带来一个知识点,C语言里面的数组,希望对刚接触C语言的伙伴有所帮助吧,也是仅仅自己所总结出来的,有需要的讲C语言里面的什么知识点,在下面给我评价留言就好了哈。今天文章里面会涉及到一维数组,二维数组,字符数组一、数组概述数组 数组是数目固定、类型相同的若干数据的有序集合数组元素 组成数组的各个成员称为数组元素,统一数组名[下标]访问数组分类 1、类型 (数值数组 字符数组转载 2017-08-07 07:10:33 · 277 阅读 · 0 评论 -
了解C语言之指针(一)
一、指针的概念什么是变量?内存中一块命名的临时区域什么是地址?内存中每一个存储单元有一个编号,称为地址。char a;int b;float c;通过变量名直接引用该内存空间。直接访问方式什么是指针?在C语言中,指针被用来表示内存单元的地址,如果把这个地址用一个变量来保存,这种变量就称为指针变量。通常指针变量的值用无符号的长整型来表示 unsigne原创 2017-08-07 07:16:34 · 230 阅读 · 0 评论 -
了解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 · 355 阅读 · 0 评论 -
了解C语言之指针(三)
七、多级指针1、二级指针二级指针变量的定义形式为:类型 **指针变量名;普通变量、一级指针变量、二级指针变量也可以在一道定义。例如: int **q,*p,x;指向指针的指针用于存放某个指针变量地址的指针变量被称为指向指针的指针,其定义形式如下:类型名 **变量名;int a, *p1, **p2 ;a=10;p1=&a;p2=&p1;printf(原创 2017-08-07 07:25:10 · 318 阅读 · 0 评论 -
了解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 · 710 阅读 · 0 评论 -
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 · 1351 阅读 · 0 评论 -
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 · 881 阅读 · 1 评论 -
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 · 225 阅读 · 0 评论 -
C语言之:函数
一、函数概述1、首先什么是函数?函数是用于完成特定任务的程序代码的自包含单元。2、为什么使用函数?第一、函数的使用可以身故重复代码的编写。第二、函数使得程序更加模块化,有利于程序的阅读修改和完善。3、main函数原型int main (int argc, char * argv[], char * envp[]) {....}第一个参数:命令行参数的个数第二个参数:原创 2017-08-06 22:43:55 · 238 阅读 · 0 评论 -
C语言排序原理及其分析
如何找一组数的最大值:假定第1个为最大的;然后往后面看,如果后面的元素更大,就把后面那个更大的给假定的这个地方,这样始终保证这个地方总是最大的值;这样,一次循环完了,就得到了整个数组中最大的数了。原创 2017-08-06 19:51:12 · 551 阅读 · 0 评论 -
C语言之内存管理
一、常见的内存错误及其对策1、内存分配未成功,却使用了它。编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解决办法是,在使用内存之前检查指针是否为NULL。如果指针 p 是函数的参数,那么在函数的入口处用 assert (p != NULL) 进行检查。如果是用 malloc 或 new 来申请内存,应该用 if (p == NULL) 或者 if (p != NULL) 进转载 2017-08-07 09:30:23 · 905 阅读 · 0 评论 -
几种常见排序算法及其特点
一、直接插入排序直接插入排序(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 · 5977 阅读 · 1 评论 -
走进数据结构---时间复杂度
一、时间复杂度介绍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 · 499 阅读 · 0 评论 -
数据结构之链表(一)
很多人,一接触到数据结构就难懂,就说有难度,还有就说,链表有什么用?今天我就详细的说下,这个链表有什么用。一、链表介绍1、链表有地址不连续的结点序列,必须通过指针相互连接。2、链表的分类:(1)单向线性链表每个节点中除了存储数据结构内容以外,还需要保存指向下一个节点的指针,叫做后指针。最后一个节点的后指针为NULL。其中第一个节点叫做头节点,指向头结点的指针叫做头指针。最后原创 2017-08-10 19:56:25 · 266 阅读 · 0 评论 -
数据结构之链表(二)
2、自写单链表代码实现说明:插入节点时,需要考虑多种情况,如输入坐标不合法、插入到头节点、在其他位置插入新节点等。插入方式为新建节点的下个节点指向头节点,而后让头节点指向新建节点,完成插入。其他位置插入则是循环到坐标位置。删除节点时,也需要考虑多种情况,如输入坐标坐标不合法、删除头节点、删除其他节点等。删除方式为头节点找个替身,然后将头节点指向头节点的下个节点。其他位置删除则是循环到坐标位置。原创 2017-08-11 19:47:21 · 289 阅读 · 0 评论 -
数据结构之链表(三)
四、双向线性链表C语言中一种更复杂的链表式“双向链表”或“双面链表”。其表中的每个节点有两个连接:一个指向前一个节点,(当这个“连接”为第一个:“连接”时,指向空值或者空列表);而另一个指向下一个节点,(当这个“连接”为最后一个:“连接”时,指向空值或者空列表)。例如:在一些低级语言中,XOR-linking 提供一种在双向链表中通过用一个词来表示两个链接(前后),我们通常不提倡这种方原创 2017-08-11 19:50:36 · 347 阅读 · 0 评论 -
数据结构之链表(四)
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 · 297 阅读 · 0 评论 -
C语言链表的来源分析
C语言中的链表是重点,也是难点,而且意义非凡。对链表的的抽象和恐惧是源于对它的来龙去脉的不明白。所以很有必要对它的发展渊源做透彻分析。知其源,才能用其本源。原创 2017-08-06 19:29:37 · 255 阅读 · 0 评论 -
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 · 3585 阅读 · 1 评论 -
C语言之多级指针
指针用途:1、使程序简洁、紧凑、高效2、内存的动态分配3、内存地址的直接处理4、函数调用时批量参数的传递5、复杂数据结构的简洁表达等许多其它数据类型难以实现的复杂操作等等……一、 多级指针1、为什么需要使用二级指针------使用二级指针是为了函数调用结束可以使作为函数实参的指针的值的改变保留下来------数据结构链表和二叉树当中经常用到二级指针2、c原创 2017-08-07 09:00:35 · 1135 阅读 · 1 评论