自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(247)
  • 收藏
  • 关注

转载 pass by value & pass by reference

传值:外面(函数外面)的地址与里面(函数里面)操作的数(内容)(的地址)不是同一个,所以根本没有修改. 传地址:外面(函数外面)的地址与里面(函数里面)操作的数(内容)的地址是同一个,所以在函数里面修改的话,影响外面.

2017-05-01 13:57:09 686

原创 数据结构—链表—单链表应用-增序排列节点

LinkList *p,*pre,*q; p=L->next->next; L->next->next=NULL; 单节点链表。 我们用p指针指向了第二个节点,然后把第一个节点和头节点分离出来。断掉了这条链。然后用q指向了p->next; 准备工作完成。 while (p!=NULL) { q=p->next; pre=L; while (pre->next!=NUL

2017-04-30 19:39:13 436

原创 数据结构—链表-单链表应用-删除元素最大的节点

难点,当找到这个节点时,你删除他,链表链就断了,所以你不仅要找到这个最大的节点还要记录下来他的前一个节点。 用两个指针,他们相伴而行,其中一个指针指向的是要删除的节点,与此同时,要记录他的上一个节点。因为要用他上一个节点的next指向后一个节点。 我们设置一个pre指针和一个p指针。 此外我们还需要两个指针。他们是maxpre和maxp 他们记录的是到目前为止找到的最大的节点和最大的节点的前

2017-04-30 19:03:39 2269

原创 数据结构—链表-单链表应用-拆分链表

拆分单链表 算法是函数需要三个指针类型的参数,分别是L头指针,指针L1和指针L2 我们先设置一个p指针,他指向L->next,即第一个节点,再定义p和r1两个指针。 首先我们令L1等于L即L1这个指针执行L指向的区域,即L1指向头节点。 再让r1指向L1,现在L,L1,r1都指向头节点了。 我们再给L2即拆分后的一个链表分配内存,此时L2就是一个相应类型的头节点了。L2->next

2017-04-30 18:11:43 977 2

转载 C语言中返回字符串函数的四种实现方法

有四种方式: 1。使用堆空间,返回申请的堆地址,注意释放 2。函数参数传递指针,返回该指针 3。返回函数内定义的静态变量(共享) 4。返回全局变量 其实就是要返回一个有效的指针,尾部变量退出后就无效了。 使用分配的内存,地址是有效 char *fun() { char* s = (char*)calloc(100, sizeof(char*)

2017-04-30 16:15:10 374

转载 malloc()与calloc区别

1.分配内存空间函数malloc  调用形式: (类型说明符) malloc (size) 功能:在内存的动态存储区中分配一块长度为”size” 字节的连续区域。函数的返回值为该区域的首地址。 “类型说明符”表示把该区域用于何种数据类型。(类型说明符)表示把返回值强制转换为该类型指针。“size”是一个无符号数。例如: pc=(char *) malloc (100); 表示分配100个字节的内存空

2017-04-30 16:13:04 811

原创 数据结构—链表-单链表基本操作实现

初始化线性表 L是定义的一个指针 初始化线性表的算法就是 按引用指针的方法,将L引用到函数中,然后在函数中为L指针赋予一片内存,即头节点,然后让L->next指向NULL;销毁线性表 在算法中,定义两个指针,*pre和*p; pre指针指向头节点,p指针指向头节点的下一个节点。 如果我们删除了pre指向的节点的话,我们要用另一个指针记住他的下一个节点,如果没有p指针,我们就将找不

2017-04-30 16:07:33 456

原创 数据结构—链表-建立单链表

我们这里的单链表定义为char型,其他类型是一样的做法 s->next=p->next; s这个指针指向的节点就和p的下一个节点连接起来了。 p->next=s; 注意:这两个语句不能交换 然后p->next是一个指针 s也是一个指针 s是一个指向某一个节点的指针。 p->next=s; 代表p->next指向了s指向的节点。不代表p->next和s等价 当s指向其他区域后,p->

2017-04-30 14:36:41 3084 1

原创 数据结构—链表-链式存储

头节点里面不放任何东西 头指针指向头节点 有些链表没有头节点 头指针直接指向首节点 头节点是为了方便插入和删除运算的实现 单链表的存储结构其实就是描述每一个节点是如何构成的 首先他数据域和数据类型是什么,实际应用中数据域是一个复合数据类型 在单链表这样一个数据结构里面,我们首先要定义每一个节点是如何构成的 数据域 指针域(指向下一个节点) 一个节点通过指针指向另外一个节点,数据结构中

2017-04-30 14:04:40 655

转载 i&1的用法

if(i&1==1) 表示 如果是 奇数 则。。。 i&1 – 按位与运算,取 2进制整数 i 的最低位,如果最低位是1 则得1,如果最低位是0 则得0。 奇数 i 的最低位 是1,偶数i 的最低位 是0。 i 2进制 &1 0 0000 0000 &1 得0 偶数 1 0000 0001 &1 得1 奇数 2 0000 0010 &1 得0 偶数 3 0000 0011 &1 得1

2017-04-29 15:45:54 7373

原创 求最大公约数

方法二:欧几里德算法(辗转相除法) 在两个数中,找出大数.用大数除以小数.得到整数商和余数.然后再不断地用除数(原来的小数)除以余数.直到没有余数为止.那么除数即为最大公约数. 例:求161与112的最大公约数. 161÷112=1……49 112÷49=2……14 49÷14=3……7 14÷7=2 所以161和112的最大公约数是 7方法三:《九章算术》更相减损术 用大数减小数,

2017-04-29 15:20:59 320

原创 srand rand time函数设置随机值

计算机没有办法产生真正的随机数的,是用算法模拟,所以你只调用rand,每次出来的东西是一样的。设置一个种子后,根据种子的不同,就可以产生不同的数了。而怎么保证种子的不同呢?最简单的办法当然是用永远在向前的时间。srand(time(0)) ;//先设置种子 rand();//然后产生随机数 Srand是种下随机种子数,你每回种下的种子不一样,用Rand得到的随机数就不一样。为了每回种下一个不一样

2017-04-29 15:13:47 758

转载 strlen

头文件:#include

2017-04-29 14:59:54 574

原创 将数字倒过来输出

数组和循环的应用

2017-04-29 14:53:18 3094

原创 e和%e的应用

%e的用法 e+5->*10^5 e-5->*10^-5

2017-04-29 14:32:34 1113

原创 基础知识—函数-默然参数

在定义函数时,可以为参数设置一个默认值,这样调用函数时,就可以省略一些参数,此时程序使用默认参数作为实际参数。 我们可以赋予函数参数默认值。所谓默认值就是在调用时,可以不写某些参数的值,编译器会自动把默认值传递给调用语句中。默认值可以在声明或定义中设置。 参数默认值只能在声明或定义中一处指定.不能同时指定.1.若在定义时而不是在声明时置默认值,那么函数定义一定要在函数的调用之前。因为声明时已经给

2017-04-29 14:05:43 320

转载 深度学习

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。[1] 深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真

2017-04-29 13:08:21 403

原创 线性表—顺序表-顺序表基本运算的实现

基本运算——初始化线性表 lintList 目标是构造出一个空的线性表 分配空间后,将length成员设置为0 对L的作用会传递回去基本运算——销毁线性表 DestroyList C free() C++delete()基本运算——判断是否为空表 ListEmpty bool类型 C没有 C++才有 C自己构造一个基本运算——求线性表长度 ListLength 基

2017-04-24 20:04:09 1170 1

转载 详解c++指针的指针和指针的引用

展示一下使用指针的指针和指针的引用修改传递给方法的指针,以便更好的使用它。(这里说的指针的指针不是一个二维数组)为什么需要使用它们 当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的copy而不是指针本身,原来的指针还保留着原来的值。我们用下边的代码说明一下问题: int m_

2017-04-24 13:15:47 445

转载 如何理解指向指针的指针?

int i = 5, j = 6, k = 7; int *ip1 = &i, *ip2 = &j; 现在我们可以这么写: int **ipp = &ip1; 那么现在指针 ipp 指向了 ip1,ip1 指向了 i。*ipp 就是 ip1,**ipp 就是 i,或者说是 5。我们可以用我们熟悉的盒子箭头图来描述,像这样: 如果我们接着这么写: *ipp = ip2; 我们就改变了

2017-04-24 13:01:28 253

转载 int *p=new int; int *p=new int[10]; int *p=new int(10);这三个有什么区别

int p=new int;——分配一个int型变量所占大小的空间,并将首地址赋给int 型指针p。 int p=new int[10];——分配一个有10个int型元素的数组所占空间,并将该数组的第一个元素的地址赋给int 型指针p。 int p=new int(10);——分配一个int型变量所占大小的空间,在其中放入十进制数10,并将首地址赋给int 型指针p。

2017-04-24 12:56:52 6499

原创 线性表—顺序表-创建线性表的实现

注意物理序号和逻辑序号的不同define MaxSize 50typedef struct { ElemType data[MaxSize]; int length; } SqList;基本运算—初始化线性表 构造一个空的线性表L 分配空间,并将length成员设置为0 算法 void InitList(SqList *&L) //指针的引用 { L=(SqList *)mall

2017-04-24 12:49:02 1110

原创 线性表—顺序存储结构-顺序表

把线性表中的所有元素按照其逻辑顺序依次存储到从计算机存储器中指定存储位置开始的一块连续的存储空间中。 一般分配空间是需要一些冗余的。 专门开辟一块空间线性表有n个数据 占用空间:n*sizeof(ElemType) 区分线性表和顺序表 线性表是逻辑结构,顺序表是存储结构,是指元素在内存里存储空间是连续的。 顺序表存储类型define MaxSize 50typedef struct {

2017-04-24 12:18:49 708

原创 线性表—线性表的合并

假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性 表中的数据元素即为集合中的成员。 编写一个算法求一个新的集合 C=A∪B,即将两个集合的并集放在线性表LC中。 解题思路 LC ← LA LC ← LB中不在LA中的元素 void unionList(List LA,List LB,List &LC) { int lena,i; ElemType e;

2017-04-24 12:04:35 807

原创 线性表—定义

线性表是具有相同特性的数据元素的一个有限序列。 表示为 L=(a 1 ,a 2 …a i-1 ,a i ,a i+1 …a n ) 线性表的长度:序列中所含元素的个数——n,n≥0  空表:当n=0时,表示线性表是一个空表,即表中不包含任何元素。  前驱:a i-1 是a i 的前驱,2≤i≤n  后继:a i+1 是a i 的后继,1≤i≤n-1  表头元素:表中第一个元素a

2017-04-24 11:53:02 343

原创 malloc和free

C语言提供一个分配内存的函数 叫做malloc函数 使用方法为 char *p; p=(char *)malloc(100); p为一个char类型的指针,malloc前面一个()里写出他的指针类型,后面一个()写赋予给他的内存大小。 类型分配使用完后要把这个内存释放掉 而且一定要释放 用free函数 注意malloc函数和free函数一定是成对出现的 free(p); 注意释放

2017-04-22 21:35:02 187

转载 野指针之2

1.何为野指针?野指针指指向一个已删除的对象或未申请访问受限内存区域的指针。与空指针不同,野指针无法通过简单地判断是否为NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。解释一下:malloc 和 free 是在系统的栈上分配空间。 malloc是申请,意思就是告诉系统,我要用一块RAM,给我用了别人就不要用了。 free是释放,意思是告诉系统,给我的这块

2017-04-22 21:29:19 158

转载 野指针

“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用 野指针”的成因主要有两种: (1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如 ch

2017-04-22 21:25:59 190

原创 关于指针int *p=&a和*p=&a的纠正

指针是一种类型; int*;这是一种类型; int p;p是int 类型,也就是int型指针; *p指向a;则*p表示的就是a,a是一个int 型变量,所以*p是int变量; int*p=&a是初始化与int *p;p=&a;是完全相同的;所以int *是一种类型 *是指针运算符 是一种运算符 *p代表对指针变量p 操作了指针运算符 p=&a代表p存储了a的地址,此时用*p 就代表了*

2017-04-22 21:18:55 2800

转载 字符串和字符串数组和\0

只有字符数组后才需要跟\0,不是字符数组不用加\0对于字符数组后面是否要加‘\0’,有以下几种情况: 第一种: char str[10] = {‘h’,’e’,’l’,’l’,’o’}; 如果大括号中的字符个数小于字符数组的长度,则把大括号中的字符赋给数组中前面的元素,其余元素自动赋值为空字符(即‘\0’)。 第二种:char str[5] = {‘h’,’e’,’l’,’l’,’o’};

2017-04-22 20:52:56 1170

转载 线性表和顺序表区别

线性表是逻辑概念,只要所有的数据在逻辑上是一维的都可以认为是线性表。线性表包括顺序表(栈,队列等),链表(栈,队列等)。跟线性表相对的概念应该是树或者堆。顺序表是空间概念,指的是所有的数据在存储空间上顺序排列,而跟具体的操作方式无关。与顺序表相对的概念只有链表。

2017-04-22 17:23:05 4990

原创 基础知识—函数-函数参数及返回值

函数的返回值是指函数在调用后,执行函数体中的程序段所取得并返回给主函数的值,函数的返回值通过return语句返回给主函数 return (表达式); 关于返回值1.函数的返回值类型和函数定义中的函数类型标识符应该保持一致,若不一致则以函数类型为准,自行进行类型转换。 2.在函数中可以存在多个return语句,但是只会有一个return语句被执行,因此只能返回一个返回值。 3.return ;

2017-04-21 00:47:55 847

原创 基础知识—函数-函数概述

函数就是能够实现特定功能的程序模块。 函数的定义 形式 类型标识符 函数名(形式参数表) { 变量的声明; 语句; } 类型标识符,用来标识函数返回值类型,可以根据函数的返回值判断函数的执行情况,通过返回值也可以获得想要的数据。 形式参数表,由各种类型变量组成的列表,各参数之间用逗号间隔,在进行函数调用时,主调函数对变量进行赋值。 形式参数可以为空 ->void

2017-04-20 00:39:59 196

原创 基础知识—循环语句-循环控制

循环控制包含两方面的内容,一方面是控制循环变量的变化方式,一方面是控制循环的跳转。 控制循环跳转要用break和continue两个关键字。 break是中断循环。continue是跳出本次循环。 2、break语句的作用 (1) 只能在循环体内和switch语句体内使用break语句。 (2) 当break出现在循环体中的switch语句体内时,其作用只是跳出

2017-04-18 23:25:42 343

原创 基础知识—循环语句-for

for表达式的一般格式 for(表达式1;表达式2;表达式3){语句;} 表达式1:该表达式通常是一个赋值表达式,负责设置循环的起始值。 表达式2:该表达式一般是一个关系表达式,用控制循环的变量和循环变量允许的范围内进行比较。 表达式3:通常是一个赋值表达式,对控制循环的变量进行增大或者减小表达式1可以省略,若表达式2、3省略则循环变成死循环。

2017-04-18 23:14:27 278

原创 基础知识—循环语句-while

while语句的形式 while(表达式) 语句 表达式应为一个关系表达式或者逻辑值,表达式的值应该是一个逻辑值真或者假。当表达式为真时开始执行循环语句,当表达式为假时退出循环。循环每次执行完毕回到表达式再次判断表达式。 注意1.表达式不能为空,表达式为空是非法的。 2.表达式可以用0表示假,用非0表示真。 3.若表达式内没有改变表达式值的语句,将成死循环。do

2017-04-18 23:07:10 519

转载 1. strcpy

strcpy函数:顾名思义字符串复制函数:原型:extern char *strcpy(char *dest,char *src); 功能:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间,返回dest(地址中存储的为复制后的新值)。要求:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。   一般函数原型实现方式:   char

2017-04-18 21:36:12 205

原创 基础知识—条件判断语句-switch语句

if语句是单一分支选择的,C++又提供了一种多分支选择的switch语句。 switch语句的一般表现形式 switch(表达式) { case 表达式常量1: 语句1; break; case 表达式常量2: 语句2; break; … case 表达式常量n: 语句n; break; default:

2017-04-17 23:30:18 1217

原创 基础知识—条件判断语句-if条件类型的语句

if关键字的条件判断语句 形式 if(表达式){语句} 表达式的运算结果应该为真和假,若为真则执行{语句},若为假则跳过。 else语句 与if语句连用的语句 形式为 if(表达式) 语句1; else 语句2; 表达式若为真执行语句1,为假则执行语句2. 注意else语句不能单独使用,必须和if语句一起使用。 同时else(表达式)是不合法的。 else if语

2017-04-17 23:09:35 1738

原创 基础知识—表达式与语句-语句

在C++程序中,语句是最小的可执行单元,一条语句由一个分号结束。 C++程序语句可按其功能划为两类,一是用于描述计算机执行操作运算的,称为操作运算语句;另一类是用于控制操作运算执行顺序的,称为流程控制语句。 基本的控制结构有三种:顺序结构,循环结构,选择结构。

2017-04-16 20:25:41 270

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除