08 2012 档案
摘要:为了克服自己看过就忘的毛病,现在决定用文字把这些东西记录下来。以下大部分是对书上内容的总结。1.开篇第一部分主要是使用位图法进行排序。 问题描述:一个最多包含n个整数的文件,每个数小于m,n=10^7,数据不重复(所以m>=n),且随机出现。对该数据进行排序,最多有1MB的内存空间可用。2.首先分析问题,对n=10^7个数据,设每个int型为4字节,那么总共需要40MB的大小。所以如果要使用归并排序,需要进行40趟磁盘IO,这显然在时间上是难以忍受的。 考虑该问题的特点:1)数据大小范围有限;2)不重复。 针对第一个特点,计数排序是一个很好的方法,我们可以申请一个m大小的数组,用对应..
阅读全文
摘要:1. 关于位域表示法:加类型表示在这个类型上分配。如:struct packet_bit{ unsigned char a:2; unsigned char b:3;}bit;//这样bit只在一个字节unsigned char(这种类型占一个字节)内分配内存,而a占了2位,b占3位,故有3位空闲,此时sizeof(bit) = 1struct pakcet_bit{ unsigned int a:2; unsigned int b:3;}bit;//这样在四字节unsigned int(这种类型占4个字节)内分配内存,故有27位空闲,sizeof(bit) = 4...
阅读全文
摘要:效果图如下:1.蛇的数据结构使用双链表实现,数据结构如下:typedef struct{ int y; int x;}Pos;typedef struct node{ Pos loc; struct node *prior; struct node *next;}node;typedef struct Dlink{ node *head; node *tail; int count;}Dlink;Dlink snake; //the snake 另外注意,由于要在链表头部插入节点,在尾部删除节点,所以最好选择自带头节点和尾节点的双...
阅读全文
摘要:1.介绍 在linux下如果定时如果要求不太精确的话,使用alarm()和signal()就行了(精确到秒),但是如果想要实现精度较高的定时功能的话,就要使用setitimer函数。 setitimer()为Linux的API,并非C语言的Standard Library,setitimer()有两个功能,一是指定一段时间后,才执行某个function,二是每间格一段时间就执行某个function, 以下程序demo如何使用setitimer()。2.函数参数 1 int setitimer(int which, const struct itimerval *value, struct ..
阅读全文
摘要:1.安装 ubuntu11.10下默认没有安装curses函数库,(CentOS下默认已经安装,可以直接在usr/include下查看是否有该头文件来确定)使用 >sudo apt-get install ncurses-dev 安装curses库,这样在curses函数库的头文件和库文件就被分别安装在/usr/include/和/usr/lib/下,在编译程序时,直接使用命令: gcc program.c -o program -lcurses 完成编译,运行。2.curses术语和概念 curses工作在屏幕,窗口和子窗口之上。屏幕是设备全部可用显示面积(对终端是该窗口内所有可...
阅读全文
摘要:1.core文件介绍 在一个程序崩溃时,它一般会在指定目录生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。 用指令>ls –l 可以发现,core是一个很大的文件,动辄上百M,所以一般我们都会及时将它清除掉,从而很少去关注它的真正内涵。默认系统也是阻止生成core文件的。2.开启或关闭core文件 用以下命令来阻止系统生成core文件: ulimit -c 0 (-c选项表示运行生成的core文件大小,后面为0,说明不允许core文件生成) 下面的命令可以检查生成core文件的选项是否打开: ulimit -a 该命令将显示所有的用户定制,其.
阅读全文

浙公网安备 33010602011771号