摘要://// main.c// gfhjhgdf//// Created by chenhao on 13-12-23.// Copyright (c) 2013年 chenhao. All rights reserved.//#include"stdio.h"#include typedefstruct List_Node{int info;struct List_Node *next;}node;//链表长度int Count_Node(node *head){node *p;int num = 0;if (head == NULL){ return 0;}p = head
阅读全文
摘要:#include #define SIMPLE_KUOHAO "(()1231qeqw)(@#$)"#define COMPLEX_KUOHAO "{(()[asd])}{{{{(((())))}}}}"int main(int argc, const char * argv[]){ /*问题描述: 假设一个算术表达式中可以包含三种括号:圆括号"(" 和 ")",方括号"["和"]"和花括号"{"和"}",且这三种括号可按任意的 次序嵌
阅读全文
摘要:/*预处理命令--宏定义*/ //宏名一般习惯用大写字母表示 //使用宏可以减少再程序中重复书写某些繁琐字符的工作量,避免不必要的错误 //宏定义只是简单地替换,不做正确性检查 //宏定义末尾不必加分号 //宏定义的有效范围是,宏定义之后到本源文件结束 //宏定义可以引用已经定义的宏,层层替换 //程序中在""中的字符即使与宏名相同也不进行替换 //宏定义只做字符替换,不分配内存 //宏替换不占用运行时间,只占用编译时间 /*宏定义的一般格式*/ //#define 宏名 需要替换地字符串 /*带参地宏定义*/ //#define 宏名(参数表) 需要替换地字符 ...
阅读全文
摘要:/* &:取地址运算符 *:指针运算符(或称为间接运算符),取指针所指向的对象的内容 */ int a,b; int *pointer_1, *pointer_2; pointer_1 = &a;//把变量a的地址赋给pointer_1,切记不要将一个整数赋值给指针变量 &*pointer_1;//&和*的优先级相同,但按自右而左的方向结合,次句先执行(*pointer_1)而* pointer_1就是变量a,再执行&运算,故&*pointer_1 和 &a等价,即取变量a的地址 *&a;//先进行&运算得a的地址,再进行
阅读全文
摘要:#define LENGTH 10/*冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。*/ int i, j, tmp, number[LENGTH] = {95, 45, 15, 78, 84, 51, 24, 12}; for (i = 0; i i; j--) { if (number[j] number[j-1])...
阅读全文
摘要:二叉排序树(二叉查找树)分类:算法、数据结构2011-11-22 11:081266人阅读评论(0)收藏举报nulldeleteclass存储二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值。(2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。(3)它的左,右子树也分别是二叉排序树。二叉排序树有类似折半查找的特点,又采用了名字表作为存储结构,因而是一种动态查找表二叉排序树的插入二叉排序树是一种动态树表,特点是:树的结构通常不是一次生成的,而是在查找过程中,当树中不存在关键字等于给定值的结点时再进行插入。新插
阅读全文
摘要:/*顺序查找: 顾名思义,就是从头到尾遍历的查找,直到找到要找的元素x为止,所以这种方法对于有n个元素的线性表而言,在最坏情况下需要n次比较。*/ int searchArray[100];//要查找的数组 for (int i = 0; i < 100; i++) { searchArray[i] = i + 1; } int searchNum = 50;//要查找的数 //顺序查找 for (int i = 0; i < 100; i++) { if (searchArray[i] == searchNum) { printf("%d\n",i)...
阅读全文
摘要:折半查找法的两种实现折半查找法的两种实现折半查找法:在有序表中,把待查找数据值与查找范围的中间元素值进行比较,会有三种情况出现:1)待查找数据值与中间元素值正好相等,则返回中间元素值的索引。2)待查找数据值比中间元素值小,则以整个查找范围的前半部分作为新的查找范围,执行1),直到找到相等的值。3)待查找数据值比中间元素值大,则以整个查找范围的后半部分作为新的查找范围,执行1),直到找到相等的值4)如果最后找不到相等的值,则返回错误提示信息。按照二叉树来理解:中间值为二叉树的根,前半部分为左子树,后半部分为右子树。折半查找法的查找次数正好为该值所在的层数。等概率情况下,约为log2(n+1)-1
阅读全文
摘要:1、auto 这个关键字声明一个自动的局部变量,与static相反。这是函数或方法内部默认的声明方式,一般不使用。下面举个例子 auto int index; 该语句声明index为一个自动局部变量,意味着进入该模块时,自动为其分配存储空间,退出该模块时自动解除分配,因为这是默认的,所以 int index;和语句 auto int index;等价 静态变量有默认的初始值0,而自动变量没有默认的初始值。除非显式的为自动变量赋值,否则它的值是不确定的。2、const 编译器允许你给程序中不变的变量设置const特性。这样就告诉编译器,指定的变量在程序运行期间都有恒定的值。在初...
阅读全文
摘要:外部变量如果在Objective-C程序的开始处(所有方法、类定义和函数定义之外)编写以下语句:int gMoveNumber = 0;那么这个模块中的任何位置都可以引用这个变量的值。在这种情况下,我们说gMoveNumber被定义为全局变量。为了向阅读程序的人说明变量的作用域,按照惯例,用小写的g作为全局变量的首字母。实际上,在Objective-C中,这样的定义使得其他文件也可以访问变量gMoveNumber的值。确切地说,前面语句不仅将gMoveNumber定义为全局变量,而且将其定义为外部全局变量。外部变量是可被其他任何方法或函数访问和更改其值的变量。在需要访问外部变量的模块中,变量声
阅读全文
摘要:@protected——这个指令后面的实例变量可被该类及任何子类中定义的方法直接访问。默认的实例变量都是protected。@private——这个指令后面的实例变量可被定义在该类的方法直接访问,但不能被子类中定义的方法直接访问。@public——这个指令后面的实例变量可被定义在该类的方法直接访问,也可被其他类或模块中定义的方法直接访问。其他类或模块中定义的方法或函数可以通过使用指针运算符(->)访问实例变量。@package——对于64位图像,可在实现该类的图像的任何地方访问这个实例变量。
阅读全文
摘要:static 是静态变量的的类型说明符静态变量属于静态存储方式,(外部变量也是静态存储方式)静态的局部变量静态局部变量属于静态存储方式,它具有以下特点:(1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。(2)允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以0值。(3)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以 看出它是一种生存期为整个源程序的量。虽然离开定义
阅读全文