
C语言学习
文章平均质量分 61
flybywind
这个作者很懒,什么都没留下…
展开
-
链表逆序小结
最近想找些笔试题练练,于是就看到了微软05年的一道面试题:给定一单链表的表头指针和指向其中一个节点的指针,要求以该指针为头将原链表逆序排列,例如: N1->N2->N3->N4->N5->NULL pHEAD = N1,pSTART = N3,返回N3->N2->N1->N5->N4->NULL N1->N2->N3->N4->N5->NULL pHEAD = N1,pSTART = N5,返原创 2010-04-13 15:18:00 · 2092 阅读 · 1 评论 -
多项式加乘操作--小结
今天使用链表实现了一下多项式的算术加和乘操作,为了节省存储空间同时增加运算效率,链表中只存储了系数非零的项。同时还定义了默认构造,复制构造,赋值运算,operator其中Polynomial.h的代码如下:#pragma once#include "iterator.h"#include class factor{public: int Exp; double原创 2010-04-15 17:22:00 · 634 阅读 · 0 评论 -
关于Pimpl技术
一般情况下,在设计类时,私有成员变量和函数一般都设成值类型,这样做有三点不妥:1、增加了编译时间。若“私有成员变量”或“私有成员函数的参数”都是值定义的,那么在编译这个类时需要这些对象的完全定义。而如果这些类型的头文件里又包含了很多其他类(尤其对一个大的项目更是如此),那么编译时间将会相当长;2、使名字查找和匹配产生多义性。在C++中,可视性(visibility)和可访问性(accessibility)是不同的。这主要体现在名字匹配过程中。public、protected和private限制的是可访问性,原创 2010-09-29 10:32:00 · 797 阅读 · 0 评论 -
多线程网络爬虫
最近用C在linux环境下搞了一个多线程网络爬虫,真是历经坎坷啊。现在把自己的教训总结一下:尽量不要使用静态数组,如 char path[200] 之类的。不要以为网址的path“应该”不长。有些网页在302重定向时,会提供一个特别长的path。这可能是由编程人员的疏忽导致。不管怎么样,如果path溢出,那定义在path之后的变量就全部被损坏了,从而导致不可预知的错误。检查calloc原创 2012-04-15 17:45:08 · 2882 阅读 · 1 评论 -
STL sort函数--对map按值排序
问题:要对以map中的数据进行按value排序难点:map中的数据是按照key排序的,用for循环进行迭代器输出的顺序,就是按照key排序的顺序。但是按value排序就不可能了。方案:STL中的sort函数原型:#include using namespace std;template void sort ( RandomAccessIterator first, R原创 2012-05-04 22:25:09 · 22769 阅读 · 5 评论 -
sprintf 陷阱--Segmentation fault
有时为了构造特定的字符串,我们经常会使用sprintf函数。但是在linux中,该函数是不安全的。建议使用snprintf来指定写入的字节数。如下例所示:#include #include int main(int argc, char* argv[]){ char str[18]; int *pa = (int*)calloc(8, sizeof(int)); sprint原创 2012-04-24 11:02:14 · 5356 阅读 · 1 评论 -
calloc或new分配的数组只能在第一个元素上释放
前几天写了一个开链hash表,结构如下:*node1 -->next-->next->...*node2 -->next-->...*node3 -->...*node4 -->next-->next->next-->...即首先创建一个Node数组,该数组由calloc分配,然后每个node又在后面跟着一个长链表。这样在最后释放的时候就出现了问题:我用递归的方原创 2012-04-24 11:14:05 · 1351 阅读 · 0 评论