数据结构重读 - 循环链表与双向链表

1、循环链表:链表中最后一个结点的指针域指向头结点,整个链表形成一个环。
(1)一般要设置尾指针,方便操作。
(2)从表中任意一个结点出发均可以到达其他任意结点。
(3)两个链表合并为新链表是很方便,只需要把第一个尾指针和第二个的头指针连接起来就好了。

下面是循环链表的基本操作:

2、双向链表:在结点中有两个指针域,一个后继、一个前趋。
(1)特性:d->next->pre == d->pre->next == d
(2)插入、删除时都要操作两个指针[......]

继续阅读

发现一神级服务……页面存为PDF

今天一朋友问我怎么把一个客户端用Javascript渲染好的页面存成pdf。。然后发现了这么一个东西。

http://www.htmltopdf.de/english/html2pdf-with-javascript/

原理是:它提供了一个HTTP Service,你给他传递你要存为pdf的页面url,它去下载、本地渲染、截图、生成pdf,再传给客户端。

使用很简单:
function getPdf(inline,url){
if(!url) url=document.l[......]

继续阅读

软件工程中三种软件开发模型

1、瀑布开发模型(Waterfall Model)

将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个活动。一个阶段完成后再将其输出作为下一个阶段的输入,逐层开发。缺点是难以适应业务需求变化,风险管控不够。

2、快速原型模型(Rapid Prototype Model )

迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。优点是可以快速摸清客户需求且成本低风险低。缺[......]

继续阅读

一些很无聊的问题,关于const的位置。

1、const int a和int const a什么区别?

答:没区别,这个我是知道的。

2、const int*a和int const* a什么区别?

答:还是没区别,即*修饰离变量a最近,都是表示指针是常量,且所指向的对象也是常量?

3、const int* a和int* const a什么区别?

答:完全不同,前者见2,后者是a是常量不能改指向,但指向的对象可以更改的。

类似的把指针换成&引用,同理。[......]

继续阅读

转载:这到底是谁之错?

转载自CoolShell《这到底是谁之错?》

故事一:

背景介绍:RT是一个外包公司,ZWZX是项目承接公司,YD是甲方。

RT公司每天下班的时候都会接到ZWZX负责人的电话,询问一天的工作情况,然后布置任务要求晚上加班做完,RT公司的员工很无奈也很气愤因为每天都要加班,员工们就问项目经理:“为什么天天加班赶需求,今天才提一个需求,明天就要上线,还让不让人活了?” 项目经理无奈的说:“我有什么办法啊?这是人家ZWZX负责人说的啊,对方逼得紧。”

多次以后项目经理也忍不住了[......]

继续阅读