自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

转载 2020-11-29

摘要CYK算法是一个基于“动态规划”算法设计思想,用于测试串w对于一个上下文无关文法L的成员性的一个算法。CYK算法可以在O(n3)的时间内得出结果。CYK算法是由三个独立发现同样思想本质的人(J. Cocke、 D. Younger和T. Kasami)来命名的。这篇博客将主要介绍乔姆斯基范式、CYK算法的流程以及其代码实现。乔姆斯基范式任何一个非空且不含ϵ的上下文无关文法(CFL)都具有特殊形式的文法G。G中所有的产生式都属于以下两个简单的形式之一:(1). A→BC,其中A,B和C都是变元

2020-11-29 10:27:27 203

转载 队列的方式与实现

1、队列的定义队列(Queue):也是运算受限的线性表。是一种先进先出(First In First Out ,简称FIFO)的线性表。只允许在表的一端front进行插入,而在另一端rear进行删除。 队首(front) :允许进行删除的一端称为队首。 队尾(rear) :允许进行插入的一端称为队尾。    例如:排队购物。操作系统中的作业排队。先进入队列的成员总是先离开队列。

2016-12-19 22:18:08 281

转载 进程间通信

进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义上

2016-12-19 22:14:50 220

转载 进程与线程区别

1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系 一个线程可以创建和撤销另一个线

2016-12-19 22:11:14 247

转载 通讯录

实现了通讯录的录入信息、保存信息、插入、删除、排序、查找、单个显示等功能。。完整的代码如下:#include <stdio.h>#include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针//#include <string.h>#include <stdlib.h> //标准库函数// #define NULL 0#define LEN sizeof(s

2016-12-06 21:48:39 266

转载 进程

一、进程的定义进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元;二、进程与程序程序是放到磁盘的可执行文件 进程是指程序执行的实例三、进程与程序进程是动态的,程序使静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制 进程是暂时的,程序使长久的:进程是一个状态变化的过程,程序可长久保存 进程与程序组成不同:进

2016-12-06 21:43:19 255

转载 将两个文档数字相加添加到第三个文档

1.txt begin 10 11 12 20 21 22 30 31 32 end2.txt begin 15 16 17 25 26 27 35 36 37 end#include <stdio.h>#include <stdlib.h>int main(){FILE *fp1;FILE *fp2;FILE *fp3;char ch1;char ch2;ch

2016-12-06 21:33:59 412

转载 C——通讯录实例

C语言的学习即将告一段落,上周老师让我们应用链表来编写一个通讯录小项目,因为当时尚未学习文件操作的有关内容因此无法实现信息的保存,现在我们需要在原有的基础上进行修改实现文件的保存与读取,但是,学过文件操作后依然对如何实现这一功能毫无头绪,因此在网上搜索了他人写的一些程序,作为参考。#define _CRT_SECURE_NO_WARNINGS 1 //消除scanf不安全的警告#i

2016-12-06 21:26:10 302

转载 链表基本操作

内容包括链表的创建,增加、删除节点,链表的逆序、排序和销毁等。#include

2016-11-24 21:41:27 227

转载 内存泄漏分析

文章转自http://www.360doc.com/content/11/0302/18/5404234_97525468.shtml       内存泄漏是主内存分配了部分内存后而没有释放,逐渐耗尽内存资源,导致系统崩溃。它的后果甚至是会影响到以后内存的正常运行或使用内存损坏~~~ 它主要是指程序中间动态分配了内存,但是在程序结束时没有释放这部分内存,从而造成那一部分内存

2016-11-24 21:34:00 275

转载 数组名与指针的区别的深入探讨

引言  指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:”数组名就是指针”。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着”数组名就是指针”的误解。  想必这种误解的根源在于国内某

2016-11-24 21:28:05 183

转载 C——指针与数组名的区别

昨天晚上做了一套企业面试题,第一题便是“数组名与指针的区别”做了才知道自己知之甚少,学长说像这样的题纸上那点地方是不够用的,而我们能写出来的仅仅是两三行而已。所以特地在网上搜了一下。指针和数组名的共同特点是都是用来指代一个地址的。不同的是:1、指针是需要占用内存空间来存储地址的;数组名则更像是一个立即数或者常数。你可以修改指针指向的内容,但你绝对无法改变数组名的指向。2、数组和指针对于sizeof来

2016-11-24 21:27:14 564

转载 C——可变参数“...”

可变参数的宏一般在调试打印Debug 信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC 也支持可变参数宏, 但是两种在细节上可能存在区别.VA_ARGSVA_ARGS 将”…” 传递给宏.如 #define debug(format, …) fprintf(stderr, fmt, VA_ARGS)在GCC中也支持

2016-11-22 17:44:01 272

转载 C——volatile

volatile的主要作用是:提示编译器该对象的值有可能在编译器未监测的情况下被改变。 volatile类似于大家所熟知的const也是一个类型修饰符。volatile是给编译器的指示来说明对它所修饰的对象不应该执行优化。volatile的作用就是用来进行多线程编程。在单线程中那就是只能起到限制编译器优化的作用。所以单线程的童鞋们就不用浪费精力看下面的了。没有volatile的结果

2016-11-22 17:41:08 242

转载 约瑟夫环的数学优化

首先,约瑟夫环的数学优化方法为: 为了讨论方便,先把问题稍微改变一下,并不影响原意:问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。 我们知道第一个人(编号一定是(m-1)%n) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始):    k k+1 k+2 ... n-2, n

2016-11-22 17:38:51 225

转载 gdb——core

前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来.gdb: 有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字, 而把他叫做调试员

2016-11-18 22:13:30 342

转载 C——结构体

结构(struct) 结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 1. 结构说明和结构变量定义 在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此, 象其它 类型的变量一样, 在使用结构变量时要先对其定义。 定义结构变量的一般格式为: struct 结构

2016-11-18 22:04:23 208

转载 C——数组指针与指针数组

数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 如要将二维数组赋给一指针,应这样赋值: int a[3][4]; int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a; //

2016-11-16 21:47:43 265

转载 C----calloc/ralloc/malloc

首先要了解C语言跟内存分配方式 c语言内存有4G空间,其中1G分配给内核,3G分配给用户,其中3G空间又划分为栈空间,堆空间,数据段以及代码段, 下面先说下各个空间各自的存储内容   (1)数据段。里面包括bss(保存为初始化的全局变量),rodata(保存常量),.data(静态数据区,里面全局变量,static修饰变量)。 内存在程序编译的时候就已经分

2016-11-16 21:43:18 264

原创 C——野指针

野指针:未经初始化的指针,因为是一个局部变量,存储于栈空间,地址由系统随机分配。易造成内存泄漏错误,程序编译执行时出现的段错误原因之一便是由于在程序中存在野指针。如何避免野指针?养成良好的编码规范: (1)、当指针未确定指向时,要将其初始化为空:NULL(零地址,不能对其进行操作和赋值),这样能够在出现段错误时引起编程人员的注意,以便发现问题。 (2)、当向指针指向的内存空间赋值时,

2016-11-14 22:35:37 299

转载 C——函数

编译环境OS: Axianux 1.0 Compiler: gcc 3..2.3Linker: Solaris Link Editors 5.x Debug Tool: gdb Editor: vi最简C代码分析为简化问题,来分析一下最简的c代码生成的汇编代码: # vi test1.cint main(){ return 0;} 编译该程序,产生二进制文件:

2016-11-11 22:40:53 209

转载 C——struct

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子: struct stu{ char *name; //姓名

2016-11-10 20:05:41 241

转载 C——位运算简介及实用技巧

二进制中的1有奇数个还是偶数个 我们可以用下面的代码来计算一个32位整数的二进制中1的个数的奇偶性,当输入数据的二进制表示里有偶数个数字1时程序输出0,有奇数个则输出1。例如,1314520的二进制101000000111011011000中有9个1,则x=1314520时程序输出1。 var i,x,c:longint; begin readln(x); c:

2016-11-07 21:49:56 375 1

转载 C———位运算总结

位运算应用口诀 清零取反要用与,某位置一可用或 若要取反和交换,轻轻松松用异或移位运算 要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 “<<” 左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。 3 “>>”右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机

2016-11-07 21:46:02 199

转载 C——变量

1.语言中变量的实质内存只不过是一个存放数据的空间,就好像我 的看电影时的电影院中的座位一样。每个座位都要编号,我们的内存要存放各种各样的数据,当然我们 要知道我们的这些数据存放在什么位置吧!所以内存也要象座位一样进行编号了,这就是我们所说的内 存编址。座位可以是按一个座位一个号码的从一号开始编号,内存则是按一个字节一个字节进行编址, 如上图所示。每个字节都有个编号,我们称之为内存地址。好了,我说了

2016-11-07 21:45:00 188

转载 gcc三级优化

GNU编译器提供-O选项供程序优化使用: -O 提供基础级别的优化 -O2 提供更加高级的代码优化,会占用更长的编译时间 -O3 提供最高级的代码优化 -O4 不优化,这是默认值 不同的优化级别使用的优化技术也可以单独的应用于代码。 可以使用-f命令行选项引用每个 单独的优化技术。 1, 编译器优化级别1 在优化的第一个级别执行基础代码的优化。 这个级别试图执行9种单

2016-11-04 20:49:44 334

转载 linux_Gdb list使用介绍 :

GDB 可以打印出所调试程序的源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。当程序停下来以后, GDB会报告程序停在了那个文件的第几行上。你可以用list命令来打印程序的源代码。list 显示程序第linenum行的周围的源程序。 list 显示函数名为function的函数的源程序。 list 显示当前行后面的源程序。 lis

2016-11-04 20:31:29 462

转载 C——堆与栈

一、预备知识——程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)—

2016-11-03 21:35:59 146

转载 C——extern

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。 1. extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。这里需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到v,不只是取决于在a.c中声明e

2016-11-03 21:33:13 125

原创 C——static 的作用

在C语言中,它的作用有三条。(1)第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = ‘A’; // global variable void msg() { printf(“Hello\n”);

2016-11-02 19:12:47 186

原创 文章分享----面向对象与面向过程的区别

上周老师让我们查阅关于如何用C实现面向对象,但是作为一个刚刚接触这方面的的菜鸟,连面向对象和面向过程尚不理解,今天看到一篇文章里面的五子棋例子让我对此有了一个大概具体的认识。我觉得还不错。面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个

2016-10-31 21:59:50 206

转载 如何在C中实现面向对象

(1)类的实现在面向对象思想的表述中,类是对现实世界事物的抽象表述。在c++和java的语法中用关键字class来表示面向对象的类。那么很明显的在c语言的语法中结构体struct和类的表述最为接近,故我们使用c的关键字struct定义结构体来表述对应的类。根据面向对象的思想抽象出具体事物的属性作为结构体struct的成员变量。(2)类的封装对于java编程实践有一个基本的原则,一个文件实现一个类,

2016-10-31 21:54:13 337

原创 Shell符号及各种解释对照表:

在shell下总是有一些符号让人感到困惑费解下面有我从网上搜索的shell符号以及解释。gcc优化程序常用选项 选项格式 功能 -O -O1 试图减少代码大小和执行时间,但并不执行需要花费大量编译时间的任何优化 -O2 在-O1级别的优化之上,还进行一些额外调整工作——除不做循环展开、函数内联、和寄存器重新命名外,几乎进行所有可选优化 -O3 除了完成所有-O2级别的优化之外,还进行

2016-10-30 22:08:36 719

转载 C语言函数指针的几种用法

程序如下: #include

2016-10-29 22:33:44 356

原创 C学习笔记

**1、if语句** 形式1:if(expression) statement ; expression为真执行statement语句。 形式2:if(expression) statement 1; else statement2 ; expression为真执行1;否则执行语句2、形式3:if(条件1) 语句1; else if(条件2) 语句2;

2016-10-28 22:24:49 180

原创 C----函数指针

1.函数指针定义 函数类型 (*指针变量名)(形参列表); “函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。 例如: int (*f)(int x); double (*ptr)(double x); 在定义函数指针时请注意:函数指针和它指向的函数的参数个数和类型都应该是—致的; 函

2016-10-27 20:25:36 141

原创 C----printf()

一、常用转换说明符 %a或%A 浮点数,十六进制数和p-计数法; %c 一个字符 %d或%i 有符号十进制数 %e或%E 浮点数,e-计数法 %f 浮点数、十进制计数 %o 无符号

2016-10-26 23:02:43 205

原创 C--字符串

已经有两三年没有碰过C了!报了苏嵌要一周内看完一本C语言书籍!宝宝表示压力真的好大啊!可是男人嘛,自己选的路跪着都要走完,好了废话少说,开始检验自己今天所学内容—-字符串。 1,简介 字符串就是一个或多个字符的序列。如“”hello word!“” 双引号“”不是字符一部分,他是通知编译器其中包含了一个字符串,就如‘’标志着一个字符一样。 C中

2016-10-25 21:54:14 200

原创 Linux 常用命令使用——登陆退出Linux系统

1,启动和登陆系统:      超级用户名为“”root“”,系统启动后屏幕显示:localhost login:   ,输入 “root”后回车,屏幕提示密码输入:password:  ,输入密码回车就可进入系统进入操作(注:用户名,密码要输入正确,否则无法进入),此时屏幕显示:  [root@localhost/root] #   ,"#"表示超级用户系统提示符。无论是超级用户还是普通

2016-10-25 13:07:34 1017

NoteExpress_Vol_QingHua_3.2.0.7535_zh.zip

NoteExpress一款国内的文献管理软件,帮助你更好的整理学习中所下的文献资料,并且可以嵌入world中使用。

2020-11-29

EndNote清华版

EndNote是科研中非常好用的一款文献管理软件,能够帮助你更好的集中分类管理平时所下文献。同时具有文献搜索和下载功能,并可嵌入World中。

2020-11-29

空空如也

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

TA关注的人

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