1.初始化要求:引用在创建之初就必须初始化,而指针却没有这个要求 2.可修改性:引用只能进行一次,不能同时引用两个对象,即在初始时候已经决定了引用的对象;指针可以变换指向的对象 3.不存在NULL引用,存在NULL指针 4.测试时候:指针需要经常测试是否为空指针,而引用不需要,故引用的代码效率比较高
|
||||||
|
1.初始化要求:引用在创建之初就必须初始化,而指针却没有这个要求 2.可修改性:引用只能进行一次,不能同时引用两个对象,即在初始时候已经决定了引用的对象;指针可以变换指向的对象 3.不存在NULL引用,存在NULL指针 4.测试时候:指针需要经常测试是否为空指针,而引用不需要,故引用的代码效率比较高 现在很多网站一说到cache就想到memcached,memcached确实是非常优秀的系统,但是在某些场合,特别在不是分布式应用的场合,或者某些数据不需要分布式的访问,那它就未必是最佳的选择。 下面比较3种cache方式,用测试结果说话 Map,严格的说不能算cache,它适合本机访问,没有过期时间,不适合大容量,不能预计长度的数据,可能会使内存耗尽。 ehcache,可设过期时间,当超过指定内存数量,可设置淘汰算法,可输出到磁盘,可适合本机访问,也适合用作分布式缓存,分布式缓存配置和原理稍复杂,没有memcached直观,本测试未使用ehHcache分布式支持。 Memcached, 适合分布式缓存,可设过期时间 一些regular的tips: 1 非贪婪flag >>> re.findall(r”a(\d+?)”, “a23b”) 注意比较这种情况: >>> re.findall(r”a(\d+)b”, “a23b”) 问题描述:有不同大小于价值的物品,现只有一个容积为M的背包来装物品。请找出一种最优组合是价值最大化。 递归实现: int knap(int cap)
总是找python的IDE,在网上看到这个比较全,就转来了。 Python程序员常用的IDE和其它工具 1. 概述 “工欲善其事,必先利其器”,如果说编程是程序员的手艺,那么IDE就是程序员的吃饭家伙了。 IDE的全称是Integration Development Environment(集成开发环境),一般以代码编辑器为核心,包括一系列周边组件和附属功能。一个优秀的IDE,最重要的就是在普通文本编辑之外,提供针对特定语言的各种快捷编辑功能,让程序员尽可能快捷、舒适、清晰的浏览、输入、修改代码。对于一个现代的IDE来说,语法着色、错误提示、代码折叠、代码完成、代码块定位、重构,与调试器、版本控制系统(VCS)的集成等等都是重要的功能。以插件、扩展系统为代表的可定制框架,是现代IDE的另一个流行趋势。
abs(x) >>> abs(1) all(iterable) 有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。 问题: 1、如何判断一个链表是不是这类链表? 解答: 一、判断链表是否存在环,办法为: 设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下: bool IsExitsLoop(slist *head) while ( fast && fast->next ) return !(fast == NULL || fast->next == NULL);
二、找到环的入口点 当fast若与slow相遇时,slow肯定没有走遍历完链表,而fast已经在环内循环了n圈(1<=n)。假设slow走了s步,则fast走了2s步(fast步数还等于s 加上在环上多转的n圈),设环长为r,则: 2s = s + nr 设整个链表长L,入口环与相遇点距离为x,起点到环入口点的距离为a。 (L – a – x)为相遇点到环入口点的距离,由此可知,从链表头到环入口点等于(n-1)循环内环+相遇点到环入口点,于是我们从链表头、与相遇点分别设一个指针,每次各走一步,两个指针必定相遇,且相遇第一点为环入口点。程序描述如下: slist* FindLoopPort(slist *head) while ( fast && fast->next ) if (fast == NULL || fast->next == NULL) slow = head; return slow;
扩展问题: 判断两个单链表是否相交,如果相交,给出相交的第一个点(两个链表都不存在环)。 比较好的方法有两个: 将其中一个链表首尾相连,检测另外一个链表是否存在环,如果存在,则两个链表相交,而检测出来的依赖环入口即为相交的第一个点。 如果两个链表相交,那个两个链表从相交点到链表结束都是相同的节点,我们可以先遍历一个链表,直到尾部,再遍历另外一个链表,如果也可以走到同样的结尾点,则两个链表相交。 要注意用extern “C” { } 括起来,不然容易出让你抓狂的问题或者你在c的头文件中定义 #ifdef __cplusplus /************************************************************************ #include “avl_tree.h” static avl_tree make_empty(avl_tree t){ if (t != NULL) { return NULL;
|
||||||
|
Copyright © 2010 代码工厂@Code Blocks Forge - All Rights Reserved
京ICP备06020298号 |
||||||