摘要: 1、给定单链表,检测是否有环。使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步。如果p2到达链表尾部,说明无环,否则p1、p2必然会在某个时刻相遇(p1==p2),从而检测到链表中有环。2、如果单链表有环,找到环节点。第一步,先按照上一题让p1和p2相遇,则相遇的点必然在环里。假设链表起点到环节点距离为l,环节点到p1,p2相遇点的距离为a,则p1前进距离为:l+ap2前进距离为:2(l+a)2(l+a)-(l+a)= nc // p2比p1多跑的距离为n圈c为环的周长则 l+a = nc第二步,p1再从链表开始跑,p2从相遇点开始跑,当跑了l距离以后。p1所在位置则 阅读全文
posted @ 2012-07-18 22:57 MXi4oyu 阅读(310) 评论(0) 推荐(0)
摘要: 一,概述 定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为之。 优点:客户提出请求时,请求时沿链传递直至有一个ConcreteHandler对象负责处理它二,职责链基本代码#include <iostream> using namespace std; class Handler { protected: static Handler *successor; public: void SetSuccessor(Handler *successor... 阅读全文
posted @ 2012-07-18 22:43 MXi4oyu 阅读(176) 评论(0) 推荐(0)
摘要: 创建一个表Material用于测试CREATE TABLE material(pid INT PRIMARY KEY IDENTITY(1,1),name VARCHAR(100),color VARCHAR(50),num INT);插入些许测试值:INSERT INTO material(name,color,num)SELECT 'ball','red',12UNION ALLSELECT 'ball','red',24UNION ALLSELECT 'cat','yellow',13UNIO 阅读全文
posted @ 2012-07-18 10:38 MXi4oyu 阅读(356) 评论(0) 推荐(0)