2011年11月24日
摘要: 昨天去参加一笔试,一题目是猫吃老鼠问题:有N个老鼠,排成一队,按顺序,1,2....N 。一只猫从任意位置开始吃,每隔一个吃一个,循环吃。例如:老鼠有1,2,3,4,5,6,7个,从第二个开始吃,则吃的顺序为:2,4,6,1,5,3,7由于我没学过数据结构,对算法不了解,所以想用C#去实现。但想了半天也没个好的解决办法。于是,今天找了本数据结构的书看了看,用双向链表好实现。思路:1.先定义一个双向循环链表,链表的每个节点的value为老鼠的编号。 2.删除链表中的节点(每膈一个删除一个)下面代码只是大概思路,没有经过编译,如果有误,希望大家提出。代码 1 1. typedef struct M 阅读全文
posted @ 2011-11-24 14:15 静海 阅读(737) 评论(0) 推荐(0) 编辑
  2011年11月12日
摘要: 二者主要区别在添加元素和访问元素方面:1. vector为存储的对象分配一块连续的地址空间,和数组有点像。因此对vector中的元素随机访问效率很高。在vecotor中插入或者删除某个元素,需要将现有元素 进行复制,移动。如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行拷贝时开销较大,因为拷贝对象要调用拷贝构造函数。对于简单的小对象,vector的效率优于list。vector在每次扩张容量的时候,将容量扩展2倍,这样对于小对象来说,效率是很高的。2. list中的对象是离散存储的,和链表有点像。随机访问某个元素需要遍历list。在list中插入元素,尤其是在首尾插入元素 阅读全文
posted @ 2011-11-12 18:12 静海 阅读(308) 评论(0) 推荐(0) 编辑
  2011年11月10日
摘要: 在c++中vector是一种类型对象的集合,称为容器。一个容器中的所有对象的类型必须一致。vector在头文件<vector>中。1.vector对象的初始化(以int型为例) vector<int> number(size); //在对象number中的类型只能是int型,size为number中元素的个数2.vector对象的操作 添加元素:例子, vector<string>name; name.push_back("张三");name.push_back("李四"); 该例,向容器name添加了两个元素,用na 阅读全文
posted @ 2011-11-10 16:48 静海 阅读(411) 评论(0) 推荐(0) 编辑
  2011年11月9日
摘要: 1.指向常量的指针int number=10;const int *pNumber=&number;即pNumber所指向的值不能改变,但可对number做任意操作;例如:number=20;//ok,可做操作 *pNumber=20; //error ,不可改变2.指针常量:指针中存储的地址不能改变;int a=10;int *const pa=&a;指针中存储的地址不能改变;但可以改变地址中的值;int b=20;pa=&b; //error 地址不可改变;*pa=20; //ok ,地址中的值可以改变 阅读全文
posted @ 2011-11-09 23:55 静海 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 在C语言中,根据数据在内存中存在的时间(生存期)不同,将内存空间分为三个区:1.程序区:用于存储程序的代码,即程序的二进制代码;2.静态存储区:用于存储全局变量和静态变量,这些变量的空间在程序编译时就已经分配好了;3.动态存储区:用于在程序执行时分配的内存,又分为:堆区(heap)和堆栈区(stack)两种。 堆区:用于动态内存分配,程序运行时由内存分配函数在堆上分配内存。在C语言中,只要使用指针才能动态的分配内存。 堆栈区:在函数执行时,函数内部的局部变量和函数参数的存储单元的内存区域,函数运行结束时,这些内存区域会自动释放。动态内存分配: 在C语言中用内存分配函数来实现内存的动态分配,这些 阅读全文
posted @ 2011-11-09 22:18 静海 阅读(3064) 评论(0) 推荐(0) 编辑
摘要: 由于下个项目要做移动平台的开发,最近学习objective-C语言。objective-C是C语言的一个扩展集,但是它是一门面向对象语言。如果学过C#或是java的朋友应该知道在C#的类中有一个Tostring()方法,在objective—C中也有一个类似的方法,即description()方法。description方法是基类NSObject 所带的方法,在自定义的类中,我们可以重载改方法。例如:我们自定义一个people类:@interface People:NSObject{ NSString *name; int age;}@ implementation People{ -(id) 阅读全文
posted @ 2011-11-09 15:05 静海 阅读(6454) 评论(1) 推荐(0) 编辑
  2011年11月8日
摘要: 上学时,老师布置了一个作业,就是用C写段程序,画功率谱谱图。由于有好几个公式里都有复数的情况,而当时不知如何表示复数,就用实数代替了。最近一段时间学习C,知道了C中也有复数类型,所以贴出来和大家分享。一、C中有三个类型可以储存复数: float _Complex:实部和虚部都为float类型; double _Complex:实部和虚部都为double类型;long double _Complex:实部和虚部都为long double类型;二、_Complex不免有些复杂,只要加入头文件<complex.h>即可,用complex代替_Complex,该头文件把虚部定义成‘I’,所 阅读全文
posted @ 2011-11-08 15:39 静海 阅读(12371) 评论(0) 推荐(0) 编辑
摘要: 我们在用C编程时有时需要定义不变的变量,即常量,有两种方法。举例说明。定义常量PI的两种方式:1. #define Pi 3.1415926f;2. const float pi 3.1415926f;区别:第一种方式:是将Pi定义成一种符号,此时Pi只是3.1415926的别名,在编译期间用3.1415926去取代Pi的值;第二种方式:是将PI定义成变量,但告诉编译器它的值是固定不变的,如果在程序中试图去修改它的值,在编译时会报错; 阅读全文
posted @ 2011-11-08 14:29 静海 阅读(32084) 评论(1) 推荐(2) 编辑
  2011年11月4日
摘要: 请几天项目中增加了一个功能,就是通过windows服务往数据库里填充数据。有一表A,表A里有字段“日期”,如果表A中有日期为“XXXX”的数据,则windows服务不在往改表中添加数据。我是这样写的:public bool HasData(datetime dt){ string sql="select *from A WHERE date="+ dt +"; datatable table=sqlHelper.Exculude(sql); 此方法为执行sql语句并返回一个datatable if(table==null) 判断是否为空表 { return fal 阅读全文
posted @ 2011-11-04 14:47 静海 阅读(22230) 评论(1) 推荐(2) 编辑