摘要:
学习链表的实现,还是觉得linux下的显得不错。今天爬取了份可以用在linux下的代码。不必要重复造轮子了。对于这份代码的详细说明,请参考 《Linux Kernel Linked List Explained》如下代码的获取路径http://isis.poly.edu/kulesh/stuff/src/klist/list.hlist.h 1 #ifndef __LIST_H 2 #define __LIST_H 3 4 /* This file is from Linux Kernel (include/linux/list.h) 5 * and modified by simply re 阅读全文
摘要:
list链表是双链表,在libnet中的实现同样简单,其借用了linux中list的实现思路,将指针域与数据域分离。要用list也是跟list中一样的。如下是指针域的实现代码——为了方便阅读,我用linux下的风格将语句分开了。/* Linked list code, inspired by Links, but written from scratch. */struct list_head { void *next; void *prev;};#define init_list(L) \ do { \ L.next = L.prev = &L; \ } while (0) #def 阅读全文
摘要:
libnet 是一个小型的接口函数库,主要用C语言写成,提供了低层网络数据报的构造、处理和发送功能(百度百科上有很详细的介绍哦)。貌似我下载的版本与网上教程说的不太一致。我在sf上下载的最新版,但是却是0.10.11版——网上有说1.0版的,我到底该信谁的呢!今天无意中看到该库的循环队列的实现,感觉真是简洁啊!有木有啊!!!/* Queues. */#define QUEUE_SIZE 2048struct queue { unsigned char data[QUEUE_SIZE]; int head, tail;};#define queue_wrap(x) ((x) & (QUE 阅读全文
摘要:
我用gcc编译,有std=c99选项。出现mylist.c:88: warning: implicit declaration of function ‘typeof’mylist.c:88: error: expected expression before ‘)’ tokenmylist.c:88: error: expected expression before ‘)’ tokenmylist.c:91: error: expected expression before ‘)’ tokenmylist.c:91: error: expected expression before ‘ 阅读全文
摘要:
遇到一段代码,觉得很迷糊,觉得不对。于是做了个测试,代码如下#include <stdio.h>int main(){ int flag = flag ;//flag哪里定义? flag = 1; printf("flag is %d\n",flag);}在gcc下竟然可以通过,输出也是对的。如果不赋值的话,flag输出的为无意义值于是产生为什么flag不提示未定义的疑问,这是什么语法?gcc连警告都不提。水木上的牛人给出了网址http://cpp-style.info/Addison.Wesley-CPP.Gotchas-Avoiding.Common.Pro 阅读全文
摘要:
cURL是个非常不错的工具,同时libcurl 是一个很不错的库,支持http,ftp等很多的协议。好久之前就想学习下。cURLcpp是cURL的一个封装。有兴趣的同学可以尝试下。请参考文章《在 Windows 上编译(安装)和使用 libcurl》。如果不想自己编译,可以下载官方上编译好的库文件。一般比最新的版本低,下载地址为http://curl.haxx.se/latest.cgi?curl=win32-ssl-devel-msvc。可以参照上面的文章设置include 和lib路径,具体来说就是1)新建一个console工程,将下载包解压到的include 和lib拷贝到工程中(或者设 阅读全文
摘要:
本文转载自《Josephus问题》本文转自: http://blog.csdn.net/firetoucher/archive/2006/03/22/632838.aspxJosephus问题是建立在历史学家Josephus的一个报告的基础之上,该报告讲述了他和40个士兵在公元67年被罗马军队包围期间签定的一个自杀协定,Josephus建议每个人杀死他的邻居,他很聪明的使自己成为这些人中的最后一个,因此获得生还。注意:本文中所用定义并非标准,只为叙述方便。第一类Josephus数假设n 个竞赛者排成一个环形,依次顺序编号1,2,…,n。从某个指定的第1 号开始,沿环计数,每数到第2个人就让其出 阅读全文
摘要:
在lwip协议栈中,在tcp.c中有如下代码#if SO_REUSE && SO_REUSE_RXTOALL if ((broadcast || ip_addr_ismulticast(¤t_iphdr_dest)) && ((pcb->so_options & SOF_REUSEADDR) != 0)) { ………………………… }#endif /* SO_REUSE && SO_REUSE_RXTOALL */对于其上的两个条件编译选项,其定义在opt.h中/** * SO_REUSE==1: Enable 阅读全文
摘要:
原来一直很喜欢Opera,以前用Firefox那个启动啊,真是龟速,无奈Firefox下的插件比较多,而且有很好的扩展。于是今天下载到Firefox4 Beta 版,本来只想做为某某的一个稍微的替代品。但是,我发现我喜欢上它了,类似Opera的界面,简介。Firefox最大的优点就是插件比较多,所以,安装后的第一件事情就是安装插件。折腾了半天,找出了如下几个兼容版本4的插件。1.Adblock plus广告已成往事! 强力清除广告插件。强大的反广告插件,用过就知道它的强大,请选择中国区数据库,并且可以自己右键添加未拦截的广告,十分方便,神器级别插件2.Close tab by double c 阅读全文
摘要:
前言 在网上发现关于此的文章转载到处都是。我也就不再做重复性的工作了,将我觉得重要的做下笔记就好了,整理下思路。概况 链表是经典的组织有序数据的数据结构,是线性表的一种重要实现方式(另外一种是数组)。其基本思想是通过指针将一系列数据节点连接成一条数据链,达到有序组织数据的目的。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。按照指针域的组织以及各个节点之间的联系 阅读全文