
C语言、算法与数据结构
lcw_202
这个作者很懒,什么都没留下…
展开
-
算法研究的重要问题类型
计算机科学把问题作为自己研究的对象,研究如何用计算机解决人类所面临的各种问题。计算机中经常研究的一些问题:1 查找问题2 排序问题3 图问题4 组合问题5 几何问题 相关概念:图(graph)通常表示为G=(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图中定点之间边的集合。如顶点 V1 和 V2 之间的边没有方向,则称这条边为无向边,用无序偶对(原创 2010-03-03 23:05:00 · 997 阅读 · 0 评论 -
文件结束符
#include int main(int argc, char* argv[]){ if(argc3) printf("usage:%s filename/n",argv[0]); FILE * fp = NULL; fp = fopen(argv[1],"r"); if (fp==NULL) printf("open file error/n"); printf("EOF=%原创 2011-03-06 20:39:00 · 1242 阅读 · 0 评论 -
0 长度数组
<br />在标准 C 和 C++ 中,不允许用 0 长度数组,但在 GNU C 中,却可以定义 0 长度数组。比如:引用 structline{<br /> intlength;<br /> charcontents[0];<br />}<br /><br />0 长度数组不占有空间,从打印 sizeof (struct line) 可以看到这个结构体的长度为 4,这 4 字节空间属于整型量 length 。那么结构体里最后的 0 长度字符数组 contents[0] 用来转载 2011-03-05 23:01:00 · 719 阅读 · 0 评论 -
回调函数
<br />函数指针的两个常见用法是,一是做为结构成员,做面向对向的封装,另一个就是回调函数的设计。<br /><br />所谓回调函数,也就是把函数传递给另一个函数,另一个函数在某一时候调用这个函数。<br /><br />测试代码:引用 #include <stdio.h><br /><br />intadd (inta,int b)<br />{<br /> return (a+ b);<br />}<br /><br /><br />intdo_it(int (*ADD)(int,int),i转载 2011-03-05 23:08:00 · 536 阅读 · 0 评论 -
宏与分号
<br />细节决定成败!<br />如果留心的话,可以看到 linux内核代码经常有这么奇怪的宏定义:引用 #define wait_event(wq, condition) <br />do{ <br /> if (condition) <br /> break;<br /> __wait_event(wq,condition);<原创 2011-03-05 23:04:00 · 2135 阅读 · 0 评论 -
通俗易懂的字节对齐
1、结构体大小测试代码:引用 #include structdemo{ charc; inti;}test;intmain(){ test.c='X'; test.i=8; printf("struct demo sizeof : %d/n",sizeof(structdemo)); printf("struct test sizeof : %d/n",sizeof(test)); return0;}运行及输出:引用 beyes@linux-beyes:~/C/ba转载 2011-03-06 13:38:00 · 659 阅读 · 0 评论 -
宏定义与副作用
测试代码:引用 #include #define MIN(x,y) ((x) intmain (){ inti=10; intk=8; inta[5]={8,9,11,10,13}; int*p =a; intj; j=MIN(*p++,i); printf("%d/n",j); printf("%d/n",*p); return (0);}运行与输出:引用 beyes@linux-beyes:~/C/micro> ./micro.exe 911说明:定转载 2011-03-06 10:34:00 · 1205 阅读 · 0 评论 -
asmlinkage 与 FASTCALL
<br />在大型C语言项目工程或者linux内核中我们都会经常见到两个FASTCALL和armlinkage<br /><br />两个标识符(修饰符),那么它们各有什么不同呢?今天就给大家共同分享一下自己的心得.<br /><br /> 大家都知道在标准C系中函数的形参在实际传入参数的时候会涉及到参数存放的问题,那么这些参数存放在哪里呢? 有一定理论基础的朋友一定会肯定地回答:这些函数参数和函数内部局部变量一起被分配到了函数的局部堆栈中,真的是这样吗?其实还有例外的情况:<br /><br />转载 2011-03-06 10:21:00 · 941 阅读 · 0 评论 -
指针与数组的区别
<br />指针和数组的一个不同,是在空间上分配的不同,下面测试程序分别定义了全局指针变量,全局数组变量,局部指针变量,局部数组变量:引用 #include <stdio.h><br /><br />char*p ="hello";<br />char b[]="LINUX-WORLD";<br />intmain()<br />{<br /> char*p1="world";<br /> chara[]="linux-wrold";<br /> printf ("转载 2011-03-05 23:11:00 · 601 阅读 · 0 评论 -
GNU C 扩展之__attribute__ 机制简介
<br />GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。<br />__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数。<br />__attribute__语法格式为:<br />__attrib转载 2011-03-05 22:41:00 · 3513 阅读 · 0 评论 -
一些重要的算法
下面是一些比较重要的算法,原文罗 列了32个,但我觉得有很多是数论里的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解 一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)A*搜寻算法<br />俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstr转载 2010-11-11 18:36:00 · 588 阅读 · 0 评论 -
BF算法
字符串匹配 – BF算法Posted in 2010-01-23 8:41 PMJulius ChenNo Comments » BF(Brute Force)算法是字符串模式匹配中比较简单的一种算法。它从主串的第一个字符开始和模式串进行匹配,若匹配成功,则返回第一个字符位置,否则主串指针回溯到后一个位置从第二个字符开始和模式串进行匹配,依此下去,直到和模式串匹配成功或到主串的末尾原创 2010-03-14 13:56:00 · 994 阅读 · 0 评论 -
算法分析
算法分析1 时间复杂度1.1 T(n):运行算法所需要的时间T是问题规模n的函数,记做T(n)1.1.1 问题规模(problemscope):输入量的多少1.1.2 基本语句(basic statement)是执行次数与整个算法的执行次数成正比的语句1.1.3 为了客观地反映一个算法的运行时间,可以用算法中基本语句的执行那个次数来度原创 2010-03-04 22:20:00 · 571 阅读 · 0 评论 -
c语言反汇编公式
for循环 反汇编代码<br />mov <循环变量>,<初始值> ;给循环变量赋初值<br />jmp B ;跳转到第一次循环<br />A: (该公循环变量) ;修改循环变量<br />B:cmp <循环变量>,<限制变量> ;检查循环条件<br />jge 跳出循环<br />............<br />jmp A ;跳回去修改循环变量 <br />do 循环 反汇编代码<br />................ ;执行循环体操作<br />cmp <循环变量>,<限制变量><br />jl原创 2011-04-24 08:25:00 · 706 阅读 · 0 评论