自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 二叉搜索树的根节点插入

在标准二叉搜索树中,每个新节点都会插入到树的底层的某个地方,替换某个外部节点。这种状态并不是一个绝对的要求;也可以从根节点插入,方法是先插入到相应外部节点然后在通过旋转,转到根节点,下面给出实现: #include #include struct Tree { int item; struct Tree* l; struct Tree* r; }; struc

2012-03-15 22:03:21 827

原创 二叉搜索树

二叉搜索树是一棵二叉树,它的每个内部节点都关联一个关键字,并具有以下性质:任意节点的关键字大于或等于该节点左子树中所有节点的关键字,小于等于该节点右子树中所有节点的关键字。 实现: #include #include   struct Tree {     int item;     structTree *l;     structTree *r; };   void

2012-03-12 23:34:49 401

原创 二分搜索

二分搜索的思想是把数据项集合分成两部分,确定搜索关键字属于哪一个部分,然后集中处理那一部分。划分数据项的一种合理方式是保持数据项有序,然后在有序数组中使用下标来界定所要处理的那一部分数组。 下面给出实现:   #include     int* search( int a[], int l, int r,int key); int main( int argc, char* arg

2012-03-11 20:57:51 487

原创 顺序搜索

来自于一个太大范围的关键字是不能作为索引的。符号表实现的一个简单方法是把数据项按照顺序连续地存放在数组中。当要插入一个新的数据项时,就像插入排序中所做的那样,将较大的元素移动一个位置,把新的数据项放进数组中;当要进行搜索时,我们顺序地查找数组。因为数组是有序的,当遇到一个大于搜索关键字的关键字时,我们即可报告搜索失败。 基于数组的实现: static Item *st; static int

2012-03-11 10:33:21 696

原创 linux c 库函数 qsort 和bsearch

函数原型:void qsort(void *base, size_t nmemb, size_t size,                   int(*compar)(const void *,const void *)); base:要查找数组的首地址 nmemb:数组元素个数 size:元素大小 compare:回调函数,指明两个元素比较的方法。 例子: #include

2012-03-10 22:24:35 1176 1

原创 Libiptc库(一)

1.     Iptc_init 函数原型:struct iptc_handle *iptc_init(const char*tablename); 描述:tablename是表名iptables内置支持的表名有:filter,mangle,nat函数返回一个初始化后的struct iptc_handle指针,大多数libiptc库函数都要依赖此指针。 2. iptc_first_chain

2012-03-10 17:20:31 6157

原创 关键字索引搜索

假定关键字的值是不同的小整数。在这种情况下,最简单的搜索算法是对存储在数组中的数据项进行排序,并按关键字进行索引。下面给出这种思想的伪代码: NULLitem 表示空项 Item 表示数据项的类型。   static Item *st; static int M = maxKey; //最大项   void STinit( int maxN ) {        Inti;

2012-03-10 17:10:30 956

原创 读写流

1.每次读写一个字符 int getc( FILE *fp ) int fgetc( FILE *fp ) int getchar( void ) getc 和 fgetc 的区别是getc 是由宏实现的而fgetc是个函数。这就意味着: (1) getc的参数不能是有副作用的表达式。 (2) fgetc可以作为参数传递给另一个函数。 (3) getc的效率要比fge

2011-11-23 23:32:41 466

原创 请问这函数有什么问题?

char *p = NULL;  char *  func( int size ) { if(  p == NULL ) p = (char*)malloc(size); return p; } 这个函数在多线程环境下有什么问题?

2011-11-22 23:35:22 656 2

原创 打开标准I/O流函数

打开标准I/O流 FILE *fopen(const char *path,const char *mode) FILE *fdopen(int fd, const char *mode) FILE *freopen(const char *path, const char *mode, FILE *stream) fopen:打开path指定的文件 freope

2011-11-22 23:23:19 631

原创 fsync、sync、fdatasync函数

sync、fsync、fdatasync 函数原型: int fsync( int fd ) int fdatasync( int fd ) void sync( void ) sync 函数只是将所有修改过的内容排到写入队列中,然后就返回。它并不等待实际的写入。 fsync 只对fd描述符指向的文件起作用并等待磁盘操作结束。 fdatasync 类似于fsy

2011-11-20 11:29:03 856

原创 dup、dup2函数

dup、dup2函数 函数原型: int dup( int fd ) int dup2( int oldfd, int newfd ) dup和dup2函数可以复制文件描述符。 1.dup dup复制文件描述符fd并返回新描述符,它们指向同一个文件。新描述符是系统中可用的最小的文件描述符。 2.dup2 dup2复制文件描述符

2011-11-20 10:50:30 451

原创 fcntl函数

fcntl 函数 1.fcntl 可以改变已打开文件的性质。 函数原型: int fcntl( int fd, int cmd,.../* args */) 1. cmd = F_DUPFD :复制文件描述符,fcntl找到大于或等于第三个参数的最小可用的文件描述符,并复制 fd。返回新文件描述符。失败则返回-1。 例子: #include #includ

2011-11-20 09:53:55 1290

原创 在首页上看到的一道有趣的题

#include   int main( void )   {        int a[4] = {1,2,3,4};        int *ptr1 = (int*)(&a+1);        int *ptr2 = (int *)((int)a+1);        printf("%x\n",ptr1[-1]);        printf("%x\n",*ptr2);

2011-11-13 20:07:54 492

原创 判断系统是大端还是小端

大端系统: 字数据的高字节存放在低地址,而低字节存放在高地址。 小端系统: 字数据的低字节存放在低地址,高字节存放在高地址。 下面这个函数可以判断系统是大端还是小端。 int endian( void ) {      union      {          int i;           char a;       }e;      e.i=1;

2011-11-13 19:38:35 1000

原创 文件I/O

1.open函数 通过man查看open的帮助文档发现open有两个原型分别为: int open(const char *pahtname, int flags); int open(const char *pathname,int flags,mode_t mode); 但c语言中并没用支持重载,那为什么open有两个原型呢? 在fcntl.h文件中发现open的真正原型是这样的:

2011-11-13 17:33:56 483

空空如也

空空如也

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

TA关注的人

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