??xml version="1.0" encoding="utf-8" standalone="yes"?> 雅虎公司C#W试题,包括问答题和选择题两部分。试试看Q你能回{出多少题,可以通过雅虎的考试吗? Question 1. (单? 在计机|络?表征数据传输可靠性的指标?/p>
1. 传输?/p>
2. 误码?/p>
3. 信息定w 4. 频带利用?/p>
Question 2. (单? 以下关于铑ּ存储l构的叙qC哪一条是不正的? 1. l点除自w信息外q包括指针域,因此存储密度于序存储l构 2. 逻辑上相?c)l点物理上不必邻?/p>
3. 可以通过计算直接定Wi个结点的存储地址 4. 插入、删除运操作方?不必Udl点 Question 3. (单? 以下哪一个不是栈的基本运?/p>
1. 删除栈顶元素 2. 删除栈底元素 3. 判断栈是否ؓ(f)I?/p>
4. 栈|ؓ(f)I栈 Question 4. (单? 以下关于q义表的叙述?正确的是 1. q义表是0个或多个单元素或子表l成的有限序?/p>
2. q义表至有一个元素是子表 3. q义表不可以是自w的子表 4. q义表不能ؓ(f)I Question 5. (单? 如果一二叉树(wi)l点的前序序列是A、B、C,后序序列是C、B、A,则该二叉?wi)结点的对称序序?/p>
1. 必ؓ(f)A、B、C 2. 必ؓ(f)A、C、B 3. 必ؓ(f)B、C、A 4. 不能定 Question 6. (单? 在虚拟页式存储管理方案中,下面哪一部分完成页面调入内存的工作? 1. ~页中断处理 2. 面淘汰q程 3. 工作集模型应?/p>
4. 紧羃技术利?/p>
Question 7. (单? 在DOSpȝ?用于记录和管理磁盘数据区使用情况的数据结?/p>
1. 位图?/p>
2. I闲块表 3. 文g分配?/p>
4. 文g控制?/p>
Question 8. (单? 设有关系R(S,D,M),其函C赖集F={S→D,D→M}。则关系R臛_满 1. 1NF 2. 2NF 3. 3NF 4. BCNF Question 9. (单? 在数据库逻辑设计?当将E-R图{换ؓ(f)关系模式?下面的做法哪一个是不正的? 1. 一个实体类型{换ؓ(f)一个关pL?/p>
2. 一个联pȝ型{换ؓ(f)一个关pL?/p>
3. 由实体类型{换成的关pL式的主键是该实体cd的主?/p>
4. ppȝ型{换成的关pL式的属性是与该联系cd相关的诸实体cd的属性的全体 Question 10. (单? 计算机网l按照所覆盖的地理范围分c?可以分广域网、局域网?/p>
1. TCP/IP|?/p>
2. ATM|?/p>
3. ISDN 4. 城域|? Question 11. (单? 计算机网l拓扑结构主要取决于它的 1. 资源子网 2. FDDI|?/p>
3. 通信子网 4. 路由?/p>
Question 12. (单? |络协议的三个要素是语法、语义与 1. 工作原理 2. 时序 3. q程 4. 服务原语 Question 13. (单? TCP/IP参考模型中,?sh)子邮g协议SMTP依赖于传输层?/p>
1. UDP协议 2. IP协议 3. TCP协议 4. 802.2协议 Question 14. (单? IEEE802.2协议?0BASE-T标准规定在?cdl线?从网卡到集线器的最大距Mؓ(f) 1. 100m 2. 185m 3. 300m 4. 500m Question 15. (单? 100Mbps Fast Ethernet?0Mbps Ethernet 工作原理的相同之处主要在 1. 介质讉K控制Ҏ(gu) 2. 物理层协?/p>
3. |络?/p>
4. 发送时钟周?/p>
Question 16. (单? 在Client/Server计算模式?中间件middleware的作用是隔离应用?/p>
1. l构化查询语aSQL 2. 应用q程 3. |络 4. IP地址 Question 17. (单? 当用户向ISP甌Internet帐户?用户的E-mail帐户应包?/p>
1. IP地址 2. WWW地址 3. 用户密码(Password) 4. 用户?User Name)与用户密?Password) Question 18. (单? WWW的超链接中定位信息所在的位置使用的是 1. 文?hypertext)技?/p>
2. l一资源定位?URL, Uniform Resource Locators) 3. 媒?hypermedia技? 4. 文本标注语aHTML Question 19. (单? 计算机网l系l与分布式系l之间的区别主要?/p>
1. pȝ物理l构 2. pȝ高层软g 3. 传输介质cd 4. 服务器类?/p>
Question 20. (单? 帧中l系l设计的主要目标是用于互q多?/p>
1. q域|?/p>
2. ?sh)话|?/p>
3. 局域网 4. 0)ATIM|? Question 21. (单? ATM|络采用固定长厦的信元传送数据,信元长度?/p>
1. 1024B 2. 53B 3. 128B 4. 64B Question 22. (单? TCP/IP参考模型中的主?|络层对应于OSI RM中的 1. |络?/p>
2. 物理?/p>
3. 数据链\?/p>
4. 物理层与数据链\?/p>
Question 23. (单? 计算机网l最H出的优Ҏ(gu)Q?/p>
1. 计算_ֺ?/p>
2. 内存定w?/p>
3. q算速度?/p>
4. q网的计机能够怺׃n资源 Question 24. (单? 计算机网l分为局域网、城域网与广域网Q其划分的依据是Q?/p>
1. 数据传输所使用的介?/p>
2. |络的作用范?/p>
3. |络的控制方?/p>
4. |络的拓扑结?/p>
Question 25. (单? 用二分法查找一个长度ؓ(f)10的、排好序的线性表Q查找不成功Ӟ最多需要比较多次Q?/p>
1. 5 2. 2 3. 4 4. 1 Question 26. (单? 模块内聚度越高,说明模块内各成分彼此l合的程度越 1. 松散 2. 紧密 3. 无法判断 4. 相同 Question 27. (单? 软g需求分析阶D늚输出主要?/p>
1. 需求说明书 2. 开发计?/p>
3. 可行性报?/p>
4. 设计说明?/p>
Question 28. (单? 以下选项中不是项目经理的职责的是Q?/p>
1. 需求分?/p>
2. 计划 3. 计划跟踪 4. 质量理 Question 29. (单? 单元试一般在什么时候进行? 1. ~码完成?/p>
2. pȝ试?/p>
3. 试用例~写完成?/p>
4. 集成试?/p>
Question 30. (多? 配置理能vC下哪些作用? 1. 版本理 2. 变更理 3. 需求管?/p>
4. 试理 Question 31. (单? Ҏ(gu)U程安全的相关知识,分析以下代码Q当调用testҎ(gu)时i>10时是否会(x)引v死锁? public void test(int i) { lock(this) { if (i>10) { i--; test(i); } } } 1. ?x)锁?/p>
2. 不会(x)锁死 Question 32. (单? 以下描述错误的是Q) 1. 在C++中支持抽象类而在C#中不支持抽象cR?/p>
2. C++中可在头文g中声明类的成员而在CPP文g中定义类的成员,在C#中没有头文gq且在同一处声明和定义cȝ成员?/p>
3. 在C#中可使用 new 修饰W显式隐藏从基类l承的成员?/p>
4. 在C#中要在派生类中重新定义基cȝ虚函数必d前面加Override?/p>
Question 33. (单? int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是Q)?/p>
1. 9 2. 2 3. 6 4. 界 Question 34. (单? 在C#中利用Socketq行|络通信~程的一般步骤是Q徏立Socket侦听、( Q、利用Socket接收和发送数据?/p>
1. 建立Socketq接 2. 获得端口P 3. 获得IP地址Q?/p>
4. 获得L名; Question 35. (单? 如果设treeView1=new TreeView(),TreeNode node=new TreeNode("根结? )Q则treeView1.Nodes.Add(node)q回的是一?()cd的倹{?/p>
1. TreeNodeQ?/p>
2. intQ?/p>
3. stringQ?/p>
4. TreeViewQ?/p>
Question 36. (单? 声明一个委托public delegate int myCallBack(int x); 则用该委托生的回调Ҏ(gu)的原型应该是 1. void myCallBack(int x) 2. int receive(int num) 3. string receive(int x) 4. 不确定的 Question 37. (单? 关于ASP.NET中的代码隐藏文g的描q正的?/p>
1. WebH体늚E序的逻辑׃码组成,q些代码的创建用于与H体交互。编E逻辑唯一与用L(fng)面不同的文g中。该文gUC?#8220;代码隐藏”文gQ如果用CQ创建,该文?/p>
2. 目中所有WebH体늚代码隐藏文g都被~译?EXE文g 3. 目中所有的WebH体늚代码隐藏文g都被~译成项目动态链接库Q?dllQ文?/p>
4. 以上都不正确 Question 38. (单? What compiler switch creates an xml file from the xml comments in the files in an assembly? 1. /text 2. /doc 3. /xml 4. /help Question 39. (单? 下面的代码实C设计模式中的什么模?/p>
public class A { private A instance; private A() { } public static A Instance { get { if ( A == null ) A = new A(); return instance; } } } 1. Factory 2. Abstract Factory 3. Singleton 4. Builder Question 40. (单? class Class1 { public static int Count = 0; static Class1() { Count++; } public Class1() { Count++; } } Class1 o1 = new Class1(); Class1 o2 = new Class1(); 请问QClass1.Count的值是多少Q? ) 1. 1 2. 2 3. 3 4. 4 Question 41. (单? abstract class BaseClass { public virtual void MethodA() { Console.WriteLine("BaseClass"); } public virtual void MethodB() { } } class Class1: BaseClass { public void MethodA() { Console.WriteLine("Class1"); } public override void MethodB() { } } class Class2: Class1 { new public void MethodB() { } } class MainClass { public static void Main(string[] args) { Class2 o = new Class2(); o.MethodA(); } } 请问Q此E序输出l果? 1. BaseClass 2. BassClass Class1 3. Class1 4. Class1 BassClass Question 42. (单? public static void Main(string[] args) { int i = 2000; object o = i; i = 2001; int j =(int) o; Console.WriteLine("i={0},o={1}, j={2}",i,o,j); } 1. i=2001,o=2000,j=2000 2. i=2001,o=2001,,j=2001 3. i=2000,o=2001,,j=2000 4. i=2001,o=2000,j=2001 Question 43. (多? (zhn)要创徏ASP.NET应用E序用于q行AllWin公司内部的Web站点Q这个应用程序包含了50个页面。?zhn)惌配置q个应用E序以便当发生一个HTTP代码错误时它可以昄一个自定义的错误页面给用户。?zhn)惌花最的代h(hun)完成q些目标Q?zhn)应该怎么做?(多? 1. 在这个应用程序的Global.asax文g中创Z个Application_Errorq程d理ASP.NET代码错误?/p>
2. 在这个应用程序的Web.config文g中创Z个applicationError节去处理ASP.NET代码错误?/p>
3. 在这个应用程序的Global.asax文g中创Z个CustomErrors事gd理HTTP错误?/p>
4. 在这个应用程序的Web.config文g中创Z个CustomErrors节去处理HTTP错误?/p>
Question 44. (单? 如下E序的运行结果是Q?/p>
public abstract class A { public A() { Console.WriteLine(''A''); } public virtual void Fun() { Console.WriteLine("A.Fun()"); } } public class B: A { public B() { Console.WriteLine(''B''); } public new void Fun() { Console.WriteLine("B.Fun()"); } public static void Main() { A a = new B(); a.Fun(); } } 1. A B A.Fun() 2. A B B.Fun() 3. B A A.Fun() 4. B A B.Fun() Question 45. (单? Which of these string definitions will prevent escaping on backslashes in C#?* 1. string s = #”n Test string”; 2. string s = “’n Test string”; 3. string s = @”n Test string”; 4. string s = “n Test string”; Question 46. (单? Which of the following operations can you NOT perform on an ADO.NET DataSet? 1. A DataSet can be synchronised with a RecordSet. 2. A DataSet can be synchronised with the database. 3. A DataSet can be converted to XML. 4. You can infer the schema from a DataSet Question 47. (单? In Object Oriented Programming, how would you describe encapsulation? 1. The conversion of one type of object to another. 2. The runtime resolution of method calls. 3. The exposition of data. 4. The separation of interface and implementation. Question 48. (单? How does assembly versioning in .NET prevent DLL Hell? 1. The runtime checks to see that only one version of an assembly is on the machine at any one time. 2. .NET allows assemblies to specify the name AND the version of any assemblies they need to run. 3. The compiler offers compile time checking for backward compatibility. 4. It doesn’t. Question 49. (单? 三种常用的字W串判空串方法:(x) 1: bool isEmpty = (str.Length == 0); 2: bool isEmpty = (str == String.Empty); 3: bool isEmpty = (str == ""); 哪种Ҏ(gu)最快? 1. 1 2. 2 3. 3 Question 50. (单? public sealed class SampleSingleton1 { private int m_Counter = 0; private SampleSingleton1() { Console.WriteLine(""初始化SampleSingleton1?"); } public static readonly SampleSingleton1 Singleton = new SampleSingleton1(); public void Counter() { m_Counter ++; } } 以上代码实现了设计模式中的哪U模式? 1. 原型 2. 抽象工厂 3. 单键 4. 生成?br>雅虎公司C#W试?nbsp; (转自:http://www.chinacs.net/)
刚看完了q䆾试题,有些题是送分?有些又觉得偏书面知识?最重要的还是要看几轮面试啊!
]]>
q些天看h真的很忙,有忙不完的复?但自己好像心思却没有攑֜q上?
有时候觉得自己应该受一ơ重重的打击才好,q样也许可以改掉一些坏毛病.不会(x)再懒?不会(x)在被一些明知道虚无飘ؓ(f)的精彩所吸引!
如果自己现在是高中时?一定会(x)对现在这U生zL兴奋:很少的约?做自己想做的事情,把学?fn)凉在一?但现在这U毫无规律的生活要想完成自己q大的理?真是痴h说梦?
谁帮我让我好好清?像我一栯机U学技术的朋友们都快些清醒......!
W二U推论:(x)
1.如果?条病狗,W一天那条狗必死Q因为狗Mh没看到病狗,但病狗存在?br />
2.若ؓ(f)2条病狗,狗主Zؓ(f)a、b?a看到一条病狗,b也看C条病狗,但a看到b的病狗没L知狗C?Q而其他h没病狗,所以自q狗必为病狗,故开枪;而b的想法与a一P故也开枪。由此,?ӞW一天后2条狗必死?br />
3.若ؓ(f)3条病狗,狗主Zؓ(f)a、b、c?aW一天看?条病狗,若a设自q不是病狗Q由推理2Q第二天看时Q那2条狗没死Q故狗数肯定不是2Q而其他h没病狗,所以自q狗必为病狗,故开枪;而b和c的想法与a一P故也开枪。由此,?ӞW二天后3条狗必死?br />
4.余下即ؓ(f)递推了,由n-1推出n。答案:(x)n?。第四天看时Q狗已死了,但是在第三天ȝQ故{案?条?br />
企业回复Q这L(fng)问题考察人的思维严密性和思维z跃性。小朱同学的回答当时很让我们感到吃惊Q他能在q样的环境下保持冷静的头脑,实很难得?/p>
void test1()
{
char string[10];
char* str1 = "0123456789";
strcpy( string, str1 );
}
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{
str1[i] = 'a';
}
strcpy( string, str1 );
}
void test3(char* str1)
{
char string[10];
if( strlen( str1 ) <= 10 )
{
strcpy( string, str1 );
}
}
void strcpy( char *strDest, char *strSrc )
{
while( (*strDest++ = * strSrc++) != ‘\0?);
}
void strcpy( char *strDest, const char *strSrc )
//源字符串加constQ表明其入参敎ͼ??br />{
while( (*strDest++ = * strSrc++) != ‘\0?);
}
void strcpy(char *strDest, const char *strSrc)
{
//Ҏ(gu)地址和目的地址加非0断言Q加3?br /> assert( (strDest != NULL) && (strSrc != NULL) );
while( (*strDest++ = * strSrc++) != ‘\0?);
}
//Z实现铑ּ操作Q将目的地址q回Q加3分!
char * strcpy( char *strDest, const char *strSrc )
{
assert( (strDest != NULL) && (strSrc != NULL) );
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0?);
return address;
}
{
assert( strt != NULL ); //断言字符串地址?
int len;
while( (*str++) != '\0' )
{
len++;
}
return len;
}
void GetMemory( char *p )
{
p = (char *) malloc( 100 );
}
void Test( void )
{
char *str = NULL;
GetMemory( str );
strcpy( str, "hello world" );
printf( str );
}
char *GetMemory( void )
{
char p[] = "hello world";
return p;
}
void Test( void )
{
char *str = NULL;
str = GetMemory();
printf( str );
}
void GetMemory( char **p, int num )
{
*p = (char *) malloc( num );
}
void Test( void )
{
char *str = NULL;
GetMemory( &str, 100 );
strcpy( str, "hello" );
printf( str );
}
void Test( void )
{
char *str = (char *) malloc( 100 );
strcpy( str, "hello" );
free( str );
... //省略的其它语?br />}
char *str = NULL;
GetMemory( str );
char p[] = "hello world";
return p;
*p = (char *) malloc( num );
if ( *p == NULL )
{
...//q行甌内存p|处理
}
char *str = (char *) malloc(100);
str = NULL;
swap( int* p1,int* p2 )
{
int *p;
*p = *p1;
*p1 = *p2;
*p2 = *p;
}
swap( int* p1,int* p2 )
{
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}
世界通用的中国h
在全球化时代Q要更好的生存与发展Q必d备适应国际大舞台、融入国际大舞台的素质。因此,非国际化不可Q国际化的内涵很多,要具有国际化的语a、国际化的知识、国际化的思想、国际化的观c国际化的意识、国际化的精?/span>
要做国际化的人,首先要有极强的国际语a沟通能力?/span>
再有一U能力,是合作能力Q特别是多文化的团队合作能力?/span>
国际化的方式很多Q不仅可以出国,而且在国内也可进行国际化
―?/span>
学好pQ学好国外的先进U学技术和先进思想文化。通过译著Q通过互联|,通过国内的外企、合资企业等{,都可以培d际化的素质?/span>
时代既给我们提供了前所未有的机遇,又给我们前所未有的挑战?/span>
日本的教育目标是培养
?/span>
世界通用的日本h
?/span>
Q同P我们每一个h都应当成?/span>
?/span>
世界通用的中国h
?/span>
?/span>
MQ我们既应当真正成ؓ(f)一个合格的中国人,x族化的中国hQ又应当是国际化的中国h。既掌握了我们本民族的一切优U思想文化Q又掌握了全世界的整个先q思想文化。这是我们迎接时代的挑战Q成为新世纪所需要的高能人才的必׃路?/span>
通专和合
掌握
?/span>
狡兔三窟
?/span>
的应变本?/span>
随着时代的发展,U学来呈高度l合化的势Q再加上知识陈旧的加速,只专已经行不通了。今天的各个行业职业变换异常频繁Q每个行业都有它的成长期、成熟期、衰退期。一到衰退期,行业内大批h员都面(f)被淘汰的命运。据l计Q美国h以前一生^均得?/span>
2.5
个职业。每个h更不可能
?/span>
从一而终
?/span>
Q新时代需要有
?/span>
狡兔三窟
?/span>
的应变本领?/span>
通才的综合素质高Q能够轻村֜通达各个领域Q{换领域非常容易,能够很快适应新的行业、新的职务?/span>
通才Q不是精通一切,通晓一切,而是要具有通达一切的才能。换句话_(d)是在一切本领。才能中Q要特别重视那些能够
?/span>
一通百?/span>
?/span>
的本领和才能。哪些是一通百通的本领呢?主要是学?fn)能力、思维能力、创造能力。无Q无Z专攻何种领域Q都必须善于学习(fn)、善于思维、善于创造?/span>
“T?/b>
字型l构
胡适有一D늲辟的分析Q理想中的学者,既能博大Q又能精深。精q斚wQ是他的专门学问Q博大的斚w则是他的旁搜博览。做
?/span>
金字塔型l构
?/span>
的hQ做
“T
字型l构
?/span>
的hQ博大与_深和合Q通才与专才和合?/span>
鲁迅先生有句名言Q博识家的话多浅Q专门家的话多?zhn)?/span>
光是通,Ҏ(gu)薄Q不能精?/span>
;
光是专,Ҏ(gu)变得陕隘、局限,甚至发出令h可笑的?zhn)论?/span>
2.解决模式匚w问题的方?span lang="EN-US">:
A: 朴素的模式匹配算?span lang="EN-US">(思\?span lang="EN-US">,但不够简便时间长 有回?span lang="EN-US">) : 最单和最直接的做?span lang="EN-US">.?span lang="EN-US">P中的字符依次?span lang="EN-US">T中的字符q行比较 遇到不相{的字符,则可?span lang="EN-US">P右移一个字W?span lang="EN-US">,从新q行比较,直到某次匚w成功或者到?span lang="EN-US">P的最叛_W移?span lang="EN-US">T为止.
?span lang="EN-US">: ?span lang="EN-US">P="aaaba", T="aaabbaaaba", 则匹配过E如下图
T: a a a b b a a a b a
P: a a a b a
a a a b a
.....
a a a b a
从上不难分析,最坏的情况?span lang="EN-US">"每次比较都在最后一个字W出C{?span lang="EN-US">,每趟最多比?span lang="EN-US">M?span lang="EN-US">,最多比?span lang="EN-US">N-M+1?span lang="EN-US">,ȝ比较ơ数最多ؓ(f)M*(N-M+1)" ,旉复杂性ؓ(f)0(M*N). ?span lang="EN-US">P右移一位时,不管上一比较的中间l果是什?span lang="EN-US">,因此回溯是不可避免的(?span lang="EN-US">: ?span lang="EN-US">3?span lang="EN-US">aaa 不需要一位一位的U?span lang="EN-US"> ) .下面我来介绍无回溯的KMP法.
3.KMP法解决匚w中哪些主要问?span lang="EN-US">:
A.当字W串比较出现不等?span lang="EN-US">,定下一比较前 应该?span lang="EN-US">P右移多少个字W?span lang="EN-US">;
B. P右移?span lang="EN-US">,应该从哪个字W开始和T中刚才比较时不等的那个字Wl开始比?span lang="EN-US">.
我们通过朴素模式匚w的例子来引出问题. 在第一ơ比较过E中p|的是P的第4个字W?span lang="EN-US">b,q表?span lang="EN-US">P的前4个字W是成功?span lang="EN-US">.模式P的第3个字W?span lang="EN-US">b在它的前3个字W?span lang="EN-US">(aaa)中ƈ未出?span lang="EN-US">.因此,在下一ơ比较时?span lang="EN-US">,臛_要将P向后U?span lang="EN-US">4个字W?span lang="EN-US">; 再看P的第一个字W与最后一个字W是相同的因此将P右移4个字W后 再从W一个字W比?可定也是不等?span lang="EN-US">. lg所?span lang="EN-US">:应该?span lang="EN-US">P右移5个字W?再从P的第0个字W和T的第5个字W开始比?span lang="EN-US">!
KMP法核心: KMP法借助于一个辅助数l?span lang="EN-US">next来确定当匚wq程中出C{时,模式P右移的位|和开始比较的位置.next[i]的取值只与模?span lang="EN-US">P本n的前i+1Ҏ(gu)?span lang="EN-US">,而与目标T无关. 匚wq程中遇?span lang="EN-US">Pi不等?span lang="EN-US">Tj?span lang="EN-US">,?span lang="EN-US">next[i]>=0,则应?span lang="EN-US">P右移i-next[i]位个字符,?span lang="EN-US">P中的W?span lang="EN-US">next[i]个字W与Tj q行比较;?span lang="EN-US">:next[i]= -1,P中的M字符都不必再?span lang="EN-US">Tj比较,而应?span lang="EN-US">P右移i+1个字W?span lang="EN-US">,?span lang="EN-US">P0?span lang="EN-US">Tj+1从新开始下一轮比?span lang="EN-US">(可能不太好理?span lang="EN-US">,自己找个例子,对着话一句一句试试看)
因此只要计算Z模式P相关?span lang="EN-US">next数组,按上面的含义,可以很Ҏ(gu)地给Z的匹配算?span lang="EN-US">.(问题p栯{化了)
C.next的计?span lang="EN-US">: ?span lang="EN-US">P = " 01001010100001"Z.
i : 0 1 2 3 4 5 6 .....
P : 0 1 0 0 1 0 1 .....
j(next[i]) : -1 0 0 1 1 2 3 .....
修正(next[i]) : -1 0 -1 1 0 -1 3 .....
例子中的j(next[i])为未修正前的next数组(关于修正我会(x)在下ơ提?span lang="EN-US">).
?span lang="EN-US">1:我们要算next[2]的?span lang="EN-US">,有关的ؓ(f)P本n的前2个字W?span lang="EN-US">0,1. 在字W串01?span lang="EN-US">,L?span lang="EN-US"> "左右相同的最大字W串,此字W串所含字W的个数׃ؓ(f)next[i]的?span lang="EN-US">"?span lang="EN-US">0不等?span lang="EN-US">1,相同字符串不存在,所?span lang="EN-US">next[i] = 0;
?span lang="EN-US">2:我们要算next[6]的?span lang="EN-US">,有关的ؓ(f)P本n?span lang="EN-US">6个字W?span lang="EN-US">010010 此字W串?span lang="EN-US">010 = 010
左右相同的最大字W串?span lang="EN-US">010,个数?span lang="EN-US">3.所?span lang="EN-US">next[i]=3;
?span lang="EN-US">3:我们要算next[5]的?span lang="EN-US">,有关的ؓ(f)P本n?span lang="EN-US">5个字W?span lang="EN-US">01001 此字W串?span lang="EN-US"> 01=01 左右相同的最大字W串?span lang="EN-US">01,个数?.所?span lang="EN-US">next[i]=2;
通过上面的例子大家应该有所了解?span lang="EN-US">,有什么问题可以留al我.
KMP的算?span lang="EN-US"> VC++6.0
Cmystring::GenKMPNext(int *next, CMyString *s)
{ int i=0; j=-1;
next[0]=-1;
while(i<s->length)
{
while(j>=0&&s->str[i]!=s->str[j])
j=next[j];
i++;j++;
if(s->str[i]==s->str[j])
next[i]=next[j];
else next[i]=j;}
}
///////////////////
串类?span lang="EN-US">find()Ҏ(gu) KMP匚w法////////////////////////
int CMyString::find(const CMyString *S)
{
int i , j , *next = new int[s->length];
GenKMPNext(next, s);
for(i= 0,j=0;i< s->length&&j<length;)
{
if( s->str[i] = =str[j] ) { i++ , j++;}
else
if(next[i] >=0)
i = next[i];
else
{ i = 0; j++}
}
if(i>= s->length)
return j - s->length;
else
return -1;
}
#define CMyString
#define max_string_size 1024 //W一串的最大长度ؓ(f)1024
class CMyString
{
private:
int length; //字符串的实际长度
char str[max_string_size+1]; //包括最后的l束W?字符串的存处I间Q?br />public:
CMyString();
CMyString(const char * s); //构造一个字W指针所指的对象
~CMyString();
concatenate(const concatenate *s); //字W串S插入到本字符串之?br />
insert(const int pos, const CMyString *s); //字W串插入到本字符串POS所指的位置
delete(const int pos, const int len); //删除从POS位置L(fng)q箋len个字W?br />
CMyString substring(const int pos, cont int len); //从pos位置?提取一个长度ؓ(f)len的子?/p>
char *getstring(); //获取本字W串
int getstring(); / /获取字符串长?/p>
int find(const CMyString *s); //在字W串中查找S首次出现的位|,如不包含S 则返?Q?br />
};
#endif
//////////////////////////////串类的实?////////////////////////////////////////
#include<iostream.h>
#include"CMyString.h"
#include"memory.h"
#include"stdafx.h" //不懂 stdafx.h 是什么意?
CMyString::CMyString()
{
length=0;
str[0]=0;
}
//////////////////构?//////////
CMyString::CMyString(const char *s)
{
char *p1,*p2;
for(length=0,p1=str,p2=(char *)s; *p2; length++)
*p1++ = *p2++;
*p1=0;
}
/////////////////////析够//////////
CMyString::~CMyString()
{}
//////////////字W串S插入到本字符串之?/////////////
CMyString::concatenate(const concatenate *s)
{
if(length+s ->length <= max_string_size+1)
{
mencpy(str+length, s->str .s->length+1);
length += s->length;
}
else
{
cout<<"error"<<endl;
}
}
////////////删除从POS位置L(fng)q箋len个字W?//////
CMyString::delete(const int pos, const int len)
{
int rlen = len;
if(pos +rlen > length)]
rlen = length - pos;
length -= rlen;
memcpy( str +pos,str+pos+rlen, length - pos+1);
}
/////////////////在字W串中查找S首次出现的位|,如不包含S 则返?///////////////
int CMyString::find(const CMyString *s)
{
..
}
////////////////获取字符串长?////////
int CMyString::getlegth()
{
return length;
}
char *CMyString::getstring()
{
char *tmpstr = new char[length+1];
memcpy(tmpstr , str ,length +1);
return tmpstr;
}
////////////////字W串插入到本字符串POS所指的位置/////////
CMyString::insert(const int pos, const CMyString *s)
{
if(length + s -> length <= max_string_size)
{
memcpy(str + pos + s -> length, str+pos,length-pos+1);
memcpy(str+pos,s->str,s->length);
length +=s ->length;
}
else
{
cout<<"error"<<endl;
}
}
/////////////////从pos位置?提取一个长度ؓ(f)len的子?/////////
CMyString CMyString::substring(const int pos,const int len)
{
int rlen = len;
CMyString tmpstr("");
if(pos +len >length)
rlen = length - pos;
memcpy(tmpstr.str,str+pos,len);
tmpstr.length = rlen;
tmpstr.str[tmpstr.length] = 0;
return tmpstr;
}
作ؓ(f)全球最成功的企业之一Q微软公司在q去的二十多q里为全世界C亿计的用h供了无数杰出的Y件品,q以自己的实늻历揭CZ软g产业内蕴藏的旺盛生命力和巨大商业价倹{微软公司目前的市值是3100亿美元。在2005财政q度里,微Y公司的销售收入将辄400亿美元,实现利润165亿美元。去q派?span lang="EN-US">330亿美元的股息后,微Y公司仍拥?span lang="EN-US">350
亿美元的现金储备?span lang="EN-US">
技术:(x)微Y的希望之?span lang="EN-US">
Q?span lang="EN-US">1Q与时俱q、不断创?/span>
三四癑ֹ前,知识是在很长的时间里慢慢U篏h的。但自工业革命以来,U技的进步已l不再是靠历史的U篏Q而更重要的是靠不断的创新。信息革命后Q科技的成长呈现出指数增长的趋ѝ在信息技术方面,q去十年中hc获得的知识和经验毫无疑问已q远过了过M癑ֹ的积累?span lang="EN-US">
微Y公司深深地理解,在这L(fng)大环境中把握技术方向的重要性。当微Y公司在早期的Basic产品中获得成功后Q开始投?span lang="EN-US">DOS的研发?span lang="EN-US">DOS成功后,微Y立即资金和人力投入到新技术的研发中,q成功推ZOfficepd软g产品。随后,微Y又利?span lang="EN-US">Office{Y件获得的U篏Q开始了Windows NT?span lang="EN-US">Windows 2000?span lang="EN-US">Windows XP{新一代操作系l的研发。当Internet潮到来Ӟ微Y不失时机地跻w网l研发领域,q不断推出新的品。今天,微Y又把大量的资源投入到?/span>无缝计算?/span>的核心方向,在发?span lang="EN-US">MSN、移动Y件、数字电(sh)视?span lang="EN-US">XBOX、高可信度计、自然用L(fng)面等斚w不断创新?span lang="EN-US">
在技术浪潮的推动下,微Y公司L把技术研发摆在关键地位,q将技术看作公司惟一可长期gl的财富和优ѝ例如,微Y?span lang="EN-US">2005财政q在研发领域投入大约85亿美元,过其营业额的五分之一Q这个比例在?/span>世界财富500?span lang="EN-US">?/span>的企业中居首位?span lang="EN-US">
Q?span lang="EN-US">2Q运{帷q的?/span>首席架构?span lang="EN-US">?/span>
要重视技术,企业必要有一个最高的技术决{者。现在,微Y公司的这个决{者就是比?span lang="EN-US">?/span>盖茨Q微软的?/span>首席架构?span lang="EN-US">?/span>。设立这个特D职位是因ؓ(f)Q无论在微Yq是在其他公司,首席执行官根本没有时间管技术,而很多所谓的?/span>首席技术官?/span>却都是没有实权的U学Ӟ军_不了技术发展方向。但是,在一个技术主导的行业里,一个企业没有技术方向的最高决{者是不行的?span lang="EN-US">
作ؓ(f)首席架构师,比尔?/span>盖茨的工作是制定公司的长期技术\U图Qƈ认公司每一个行攉K门的U研计划是互补而不是重叠的。因此,他要求公司的每一个品和技术部门都向他做技术汇报,q些汇报大多?span lang="EN-US">?/span>头脑风暴?/span>式的讨论?x)议。做q样的汇报,除了可以得到比尔?/span>盖茨的回馈之外,每个目团队q可以在准备q程中受益匪。因为,目团队Z准备回答比尔可能问到的各U问题,必须在报告前d调研市场、技术、竞争对手等信息Q也因此避免了闭门造R的风险?span lang="EN-US">
另外Q比?span lang="EN-US">?/span>盖茨每年都会(x)抽两D|_(d)?span lang="EN-US">?/span>闭关?/span>的方式独自思考问题,q被UCؓ(f)比尔?/span>盖茨?span lang="EN-US">?/span>思考周?/span>。在?/span>思考周?/span>之前Q盖茨会(x)要求各部门精英在他们个h的专镉K域给他提供大量阅L料和技术徏议。在?/span>思考周?/span>里,盖茨通常的工作方式是埋头阅读l过{选的材料和技术徏议,C自己的想法,静静思考,最l做Z些对公司技术战略有较大影响的重要决定?span lang="EN-US">
Q?span lang="EN-US">3Q不断完善的研发机制
Z更快、更好地未来的技术变成现实中的Y件品,微Y公司不但在技术研发上投入了大量资源,而且建立了完善的技术管理制度。比?span lang="EN-US">?/span>盖茨成立?span lang="EN-US">?/span>卓越工程?/span>部门Q负责确认公司的研发机制是有zd的,开发过E是最有效率的Q开发出的Y件是安全可靠的,q免不同部门之间的重叠开发。这个部门具有管理公司工E流E的实权Q这h能带领整个公司走在Y件业的前端?span lang="EN-US">
微Y公司Ҏ(gu)术研发的投入是坚定不Uȝ。微软很早就创立了它著名的研I机构(例如微Y亚洲研究院)Qƈ充分认识刎ͼU学研究和品开发工作间存在着巨大的差异。研I工作鼓励冒险不惧怕失败,鼓励研究者拥有长q的目标和规划,做长期投资;而品开发工作则更多地考虑眼前的利益,其目的只有一个,是满客户的需求。研I机构发展科技Q生产部门制造品,研究人员通常都是?/span>思想?span lang="EN-US">?/span>Q而品开发h员更多的?span lang="EN-US">?/span>实践?span lang="EN-US">?/span>。这两类工作和两U技术h员之间的差别非常明显Q如果我们希望更好地促进研究成果向实际品的转移Q就必须在保持它们各自特色的基础上,为它们的协作创造良好的环境和条件?span lang="EN-US">
Z促进研究成果的{U,微Y鼓励研究人员充当新技术的推销者,向品部门推销U技成果Q同时也鼓励产品部门把用户需求和产业发展态势及时反馈l研I门。比?span lang="EN-US">?/span>盖茨最q在一ơ演讲中_(d)微Y公司要做两类事情Q一cL满用户现在的需求,另外一cL满用户未来的需求。这表明Q微软公司已l将U研和开发视作了公司发展的两条主Uѝ事实上Q微软既ZcM同的机构制定了共同的目标Q徏立了沟通渠道,也严格划清了二者的界限Qؓ(f)不同cd的机构制定了不同的考评制度。同Ӟ微Y也允许ƈ鼓励人才在两cL构间转移和流动。现在,微Y研究院每q都?x)向产品部门输出大量U研成果Q这些成果大多都被应用到了微软公司各cL功的软g产品上?span lang="EN-US">
Q?span lang="EN-US">4Q专注于最擅长的Y件业?/b>
微Y公司是一家专注于软g技术和软g产品研发的公司。虽然微软公怹投资?span lang="EN-US">MSN{内Ҏ(gu)务和XBOX{硬件品,q些产品的最l目的还是推qY件和软gq_。微软公司的M始终是YӞ微Yl大部分销售收入也是由软g创造的。微软公司对自己的定位是Q在信息产业的整个生态系l中Q专注于扮演Ua的Y件提供商的角Ԍ其他的角色由戴尔?span lang="EN-US">HP?span lang="EN-US">Accenture{公司扮演。只有这P微Y才能把自q专长做到最好,以保持在软g领域的领先地位?span lang="EN-US">
?/span>专注?/span>对公司很重要Q因Z个公司的成功也来源于理者或领导者的注意力。许多公司的领导者可能会(x)因ؓ(f)急于发展Q带领公司向多个不同的方向发展。比如,某些大型IT企业在积累了一定胦富后׃(x)把资金投入到g、服务,或甚xC、传媒等其他行业中。这么做分散了公司的注意力Q而公司的领导者也不见得有能力或激情来理q些新开创的企业。但微Y公司的领导层L把注意力攑֜七个基础的商业部门的软g业务。这七个部门都以开发Y件ؓ(f)׃QQ以软gq_为核心,以比?span lang="EN-US">?/span>盖茨为L构师。这P七个部门的领D才能有共同的语a、共同的理方式、共同的对Y件的专注与热情,不必分心于自׃擅长或没兴趣的事情,才能如鱼得水Q在微Y发挥个h的潜力?span lang="EN-US">
领导Q微软的成功之源
微Y公司的成功,在很大程度上得益于微软公司拥有两位杰出的领导人:(x)比尔?/span>盖茨和史蒂夫?/span>鲍尔默。在2000q之前,微Y惟一的领D是比尔?span lang="EN-US">2000q?span lang="EN-US">1月,Z更好地把握技术方向,比尔把首席执行官的工作交l了史蒂夫,自己?span lang="EN-US">?/span>董事长兼首席架构?span lang="EN-US">?/span>。后来,史蒂夫又把公司分Z大商业部门,每一个部门负责一pd的品和用户Q例如:(x)大企业部门负?span lang="EN-US">Windows?span lang="EN-US">SQL Server{服务器软g和工P家庭׃部门负责XBOX、电(sh)视Y件^台和游戏软g{)。从2000q以来,比尔和史蒂夫成ؓ(f)最x档,两h带领七个部门在经风暴中E_成长Q实为公司成功最大的原因之一?span lang="EN-US">
Q?span lang="EN-US">1Q首席架构师比尔?/span>盖茨
比尔?/span>盖茨是微软公司的技术带头h。他善于通过自己的远见卓识,在技术上把握公司的发展方向,不断为公司的C品研发制定战略目标。通过前面介绍?span lang="EN-US">?/span>思考周?/span>?span lang="EN-US">?/span>头脑风暴?x)?span lang="EN-US">?/span>{Ş式,比尔?/span>盖茨在全公司范围内集思广益,攉最新的信息Q以保证技术决{的正确性和前瞻性?span lang="EN-US">
比尔的另一工作是协调公司软g的投资,q免七大商业部门的重叠投资。他?x)深入了解每一w要技术,把开发Q务交l某一个部门,q要求该部门把另外六个部门当做重要客P同时也要求其他六个部门不要重叠投资。例如,虽然七个部门都需要语x术,但是比尔却该技术的开发Q务交l了我的部门。这L(fng)安排让我不用担心公司内部的竞争,而且Q我所在团队里的员工也?x)因q产品能媄响到其他各部门的产品而更有成感?span lang="EN-US">
比尔?/span>盖茨q要负责军_全公怸大商业部门在各个研发方向上的技术资源分配情c大多数公司可能?x)把最多的资源分配在最赚钱的部门里。但微Yq不是这样做的。例如,微Y公司负责Office产品研发的部门h数ƈ不很多,相反Q服务器和工具部门却拥有最多的技术员工。这主要是因为,微Y在后台服务领域面临着更加Ȁ烈的市场竞争Q需要投入更多的资源Q以快开发出领先?span lang="EN-US">IBM?span lang="EN-US">Sun {竞争对手的重量U品。微软公司在Ud产品部门投入大量资源Q也是因为比?span lang="EN-US">?/span>盖茨看好Ud通信领域的巨大市场前景。因为微软公司内的七大商业部门ƈ不是完全独立的,比尔?/span>盖茨可以根据自己对技术方向的判断Q把有限的资源调配给最h发展潜力或竞争最Ȁ烈的技术领域?span lang="EN-US">
Q?span lang="EN-US">2Q首席执行官史蒂?span lang="EN-US">?/span>鲍尔?/b>
史蒂?span lang="EN-US">?/span>鲍尔默是微Y公司的头号啦啦队ѝ他是一个非常有Ȁ情的人,说话声音很大Q非常有力量Q而且很感性,很有IK力。他是一个全能领D,既有商业头脑Q又有战略眼光,能鼓舞士气,q富有激情,_N技术。微软公司的人常_(d)史蒂夫给下做考评的时候,像?span lang="EN-US">?/span>奥数?span lang="EN-US">?/span>一P要求甚高而不允许犯错。当下把ȝ报告提交上去后,史蒂夫只看一|可以从中挑出几个乃臛_几个不恰当的地方。通过q样的考评Q下U员工可以收获到非常多的l验和知识,可以在以后的工作中做得更好?span lang="EN-US">
当微软把全公司整合成七大商业部门之后Q史蒂夫?/span>鲍尔默适时地由前台退C后台。他不再做具体的理者,而是转变成了七大部门ȝ的背后支持者。他不再做每件大事的最后决定hQ而是支持着七个部门ȝ的成ѝ他不再做一个最有煽动力的啦啦队长,而成Z个幕后的教练。史蒂夫支持七大部门的主放手施展自q理才华Q而他自己则把更多的时间花在了公司的h(hun)D和h才徏设上?span lang="EN-US">
Q?span lang="EN-US">3Q最x?/b>
比尔?/span>盖茨和史蒂夫?/span>鲍尔默是微Y公司最重要的两个h。在我所l历q的高科技公司里,员工L喜爱抱怨公司的最上层领导Q但是在微YQ几乎所有员工都Ҏ(gu)?dng)和史蒂夫无比钦佩。和他们׃多年Q我认ؓ(f)他们两个人都是非常有才华Q能够集谦虚、勇敢和毅力于一w,勇于从失败中吸取教训。他们二人最特别的三个优Ҏ(gu)Q?/span>
1.
勇于改变、适应力强Q?/span>
比尔和史蒂夫都是适应能力很强的hQ能够根据情늚变化及时调整自己的工作角色和工作方式。他们两个h都在不断地学?fn),不断改进自己的工作。例如,比尔在演讲失败后Q勇于拜师学?fn)演讲技巧;2000q时Qؓ(f)了企业更好地发展Q比?dng)将首席执行官一职交l史蒂夫Q设立七大商业部门后Q史蒂夫从啦啦队长{型成为幕后的教练…?/span>q些都是微Y员工z|乐道的例子?span lang="EN-US">
2. 对公司充满热爱和Ȁ情:(x)比尔和史蒂夫早已不是Z赚钱而工作,而是Z公司Qؓ(f)了用PZ享受Ȁ情和快乐而工作。他们很多年没有拿股和认股权,把上亿的财富让给了员工。正因ؓ(f)他们对公司的热情感染了所有的员工Q微软才能汇集全公司所有h的智慧,共同为公司创造最大的价倹{?span lang="EN-US">
3. 彼此信Q、相互支持:(x)对微软来说最隑־的是Q比?dng)和史蒂夫两人百分之癑֜彼此信QQ共同推动微软公司向前发展,共同完成?span lang="EN-US">2000q到今天完美的职位交接,共同负责创造公司的未来。他们之间从未发生权力斗争、政ȝU一cȝ问题。这在今天这个现实、自U的C会(x)中是最难能可贵的事Q也是微软公司成功\上的佌?/span>
虽然比尔和史蒂夫都还q轻Q精力旺盛,退休的旉q早Q但他们已经开始了接班人的培养工作。这P即他们退休之后,微Y公司也能延箋他们的管理风格和理理念Qƈ不断取得成功?span lang="EN-US">
人才Q微软的立业之本
微Y公司把重视h才的理理念视ؓ(f)公司的核心胦富。在信息时代里,人才的h(hun)值尤为重要。在工业时代里,一个优U技工和一个普通技工的效率差异可能?span lang="EN-US">30%Q但在信息时代里Q一个高U程序员和一个普通程序员的效率差异可能高?span lang="EN-US">10倍以上。例如,微Y公司有一位编E高手,一ơ,他对一位经理说Q你们的产品里还~少一U重要的功能。那位经理说Q我也想做这个功能,但至要50个h半年旉Q现在已l来不及了。编E高手什么也没说p了,W二个星期开?x)时Q他寚w位经理说Q你要的功能我已l帮你做完了。因样一位编E高手可能知道很多其他程序员所不知道的解决问题的捷径,他在一个星期里p做完50个h半年的工作。可见,q样的h才对公司来讲是有Ҏ(gu)意义的,公司必须善于q踪、挖掘、面试、聘诗评估、培充R重视和留住q样的h才,而且要把人才相关的工作视为公司最重要的Q务之一?span lang="EN-US">
Q?span lang="EN-US">1Q求贤若_(d)(x)q踪和挖掘h?/b>
重视人才的一个最直接的体现就是管理者要善于雇䄦高水q的人才Q而微软公司的各理者都非常善于发现和雇佣h才,无论Ҏ(gu)是大师的h才,q是应届大学毕业生或已离开公司的h?span lang="EN-US">
例如Q微软公司最重要的领导和大师 Jim Allchin目前在微软公司负责^C品研发。当q_(d)比尔?/span>盖茨惌他加入微软的时候,通过朋友多次联系他,Jim Allchin都置之不理。后来,l过比尔再三邀PJiml于{应来面试。结果,Jim一见到比尔q接了当地_(d)微Y的Y件是世界最烂的Q实在不懂比?dng)请他来做什么。比?span lang="EN-US">?/span>盖茨不但不介意,反而对他说Q正是因为微软的软g存在各种~陷Q微软才需要你q样的h才。比?span lang="EN-US">?/span>盖茨的虚怀若谷感动?span lang="EN-US">Jim AllchinQ终于把他请C微Y公司。再例如Q?span lang="EN-US">IBM著名的深蓝计机的设计者许峰雄博士此前也加盟了微Y公司。许峰雄博士是我的好朋友Q我q踪他至五q了。逢年q节Ӟ我M(x)l许峰雄博士打电(sh)话,聊一聊他的近况,探听一下他的想法。年复一q_(d)我终于打动了许峰雄博士,有幸邀请他到微软来工作。虽然他最后加入的不是我的团队Q但是我一样引以ؓ(f)豪。在微YQ许多h都像我一样主动从事发Ch才、跟th才和吸引人才的工作?span lang="EN-US">
除了努力挖掘、追t许峰雄?span lang="EN-US">Jim Allchinq样的大师之外,微Y也非常善于直接从学校雇䄦刚毕业的大学生。每q我都会(x)M三个大学亲自面试最优秀的应届毕业生。我们曾l做q一个统计,直接从学校雇佣的人才Q在M表现上要优于从社?x)雇佣的更有l验的h才。我们也发现Q今天微软大部分的副总裁都是在大学毕业后直接q入微Y公司的。直接从学校雇䄦和培Mh才有很多好处Qh才可塑性强Q对公司忠诚度更高,最愿意全力以ʎ地办事,不怕风险,愿意U篏多部门的l验?span lang="EN-US">
此外Q微软公怸直追t着d公司的优U员工。我们ƈ不认为员工蟩槽是一件坏事。对于离开公司的优U员工Q微软会(x)认真分析该员工离开公司的原因,以便q一步改q工作。同Ӟ微Y也会(x)对他们离职后的工作情况进行追t,准备在合适的旉再把他们请回微Y。这U鼓׃h才流动的机制可以更好地激发h才的U极性,可以真正得到员工的信d支持?span lang="EN-US">
Q?span lang="EN-US">2QQ人唯贤:(x)面试和聘请h?span lang="EN-US">
微Y的面试机制是众所周知的。微软对于面试采取了严}的态度Q采用精心设计的面试程。每一个申误的面试都有多位微Y员工参加Q每一位参加面试的员工都事先分配好面试时的d。除了确认专业知识和l验之外Q我们也?x)出很多题目来测试申误的独立思考能力及面对隑օ时的表现。我们不只要雇䄦那些技术上的专Ӟq应当雇佣聪明、学?fn)能力强、有团队_的h。所以,面试时对q些斚w也要深入地询问。每一ơ面试后Q面试者都?x)把他的意见和下面应该考核的问题交l后l的面试者。最后,只有得到l大多数参与面试者的同意Qƈ在明察暗访所得的l果令我们满意时Q微软才?x)聘用该甌者?span lang="EN-US">
Mh唯贤是微软公怸贯遵循的用h理念。我们深信两句话Q(1Q一的人雇佣一的人,二流的h雇䄦三流的h。因此,当一个队伍雇用第一个二的人的时候,是它走下坡路的时候。(2Q雇佣h才应以提高组l当前的整体素质为标准。我们必要求每一个新雇员的素质都过整个团队的^均水qI以此来提升团队的q_素质Q而不是降低团队的素质。所以,微Y公司的管理者L希望雇䄦到比自己强的人才。如果你雇䄦的h才最l能成ؓ(f)你的上司Q你不但不应当感到羞愧,而应该感到无比的自豪?span lang="EN-US">
Q?span lang="EN-US">3Qh其才:(x)评估和培Mh?/b>
雇用员工之后Q公怼(x)定期对h才状况进行评估和分析。每q_(d)史蒂?span lang="EN-US">?/span>鲍尔默都?x)要求七大商业部门的理者把本部门最杰出?span lang="EN-US">50?span lang="EN-US">150位h才的详细情况报告上来Q史蒂夫把dU?span lang="EN-US">600人的资料装订成一本独特的《h才报告》,然后׃整整两星期的旉来评估这些h才的发展前景Q每天还?x)邀误些h中的20位共q晚,以进一步了解这些h才。这L(fng)工作可以为高Uh才在公司内的发展设计最好的路径Q也可以在公司有I缺职位的时候迅速找到合适的人选。史蒂夫期望自己认识q?span lang="EN-US">600Z的每一位。他把这本书攑֜他床前,每晚睡前都会(x)认真地读几页q本书?span lang="EN-US">
微Y׃?/span>人尽其才?/span>Q所以设计了?/span>双轨?span lang="EN-US">?/span>机制Q既允许优秀员工在管理轨道上发展Q也允许他们Ҏ(gu)自己的意愿,在技术轨道上发展。在每个轨道上,微Y为员工提供的Z(x)是^{的Q员工ƈ不一定非要做理工作才能促进个h事业的发展。在微YQ一个最高别的工程师可能比副总裁q要资深。这L(fng)?/span>双轨?span lang="EN-US">?/span>政策从制度上保证了h才发展道路的多样性,有利于吸引h才和留住人才?span lang="EN-US">
微Y公司鼓励公司内部人才的流动和发展。各U管理者都遵@人尽其材的方式给每一个优U的h才发展的I间。各U管理者也深深理解?/span>最优秀的h不属于我Q而属于公?span lang="EN-US">?/span>Q他们不?x)把人才据?f)己有Q而是l最优秀的h才更好的发展Z(x)Q无个机?x)是不是p己所理的机构提供的。在q样的制度下Q优U的h才大多能扑ֈ适合自己的发展道路?span lang="EN-US">
除了培养优秀的h才之外,公司也必d现ƈ督促那些表现较差的员工,l他们机?x)改q,否则只有要求他们离开。ؓ(f)了达到这个目的,微Y公司建立了完善的分评估体系Qƈ定期对员工的工作表现q行考核。在每一q度的考核中,每一个副总裁必须把他部门所有的员工分成四个{Q(1Q超q期望,Q?span lang="EN-US">2Q达到期望,Q?span lang="EN-US">3Q达到大部分期望Q(4Q没有达到期望。每一个等U必L合理的比例,M(x)有相当一部分员工被评为第三或W四{。其中,拿到W四{(大约?span lang="EN-US">5%左右Q的员工{于是拿C?/span>不改q就得走?/span>的信息?span lang="EN-US">
史蒂?span lang="EN-US">?/span>鲍尔默深深地理解Q这L(fng)制度如果不是以n作则Q就无法得到员工的支持和信服。所以,即便在副总裁或ȝ理这一U,微Y公司也施行严格的淘汰制。有一ơ,史蒂夫召集了公司最资深?span lang="EN-US">100个h开?x),q告诉我们说Q?span lang="EN-US">?/span>我要求你们找出最差的5%的员工,不论他们资历如何Q都要给他们一个不改进得走的警告?span lang="EN-US">?/span>不论资历?/span>的意思是Q今天有你们q?span lang="EN-US">100位高U经理在q里开?x),而明q开?x)时Q就应该只有95个h了?span lang="EN-US">?/span>l果Q下一ơ开?x)时Q果真有不只5位高U经理已l离职?span lang="EN-US">
Q?span lang="EN-US">4Q才其用:(x)重视和留住h?/b>
很多为,留住人才的关键是待遇。的,每个人都应该得到适当的待遇,但对一个Y件从业h员来_(d)他更看重的是工作环境如何。与提高员工待遇相比Q微软更注重做到提供一个能够吸引h、留住h的环境,q包括:(x)
有众多的产品Q能让员工发挥才华和潜力Q做出最大的贡献Q?span lang="EN-US">
充分的资源支持,让每个h都没有后之忧;
Ø
Ø
最佳的队伍和开放、^{的环境Q让每个人都有彼此切、彼此学?fn)的Z(x)Q?span lang="EN-US">
吸引人的U研工作Q让每个人都热爱自己的工作;
Ø
Ø
领导者理解ƈ支持员工的研IӞ让每个h都能在紧随公司的大方向的同时Q仍有够的I间及自由去发展自己的才能,q求自己的梦惟?span lang="EN-US">
文化Q微软的l营之道
一个企业的文化和h(hun)D是它的精、思维方式和行为方式,是企业全体成员在生l营zdq程中Ş成的一U行范和价Dc?span lang="EN-US">
微Y公司的h(hun)D既是公司二十多年来在实际工作实践中,从发展过E里长期U篏的精胦富,也是公司Ҏ(gu)竞争环境的需要不断调整、不断完善的l果。微软公总天的价D主要包括Q诚实和守信Q公开交流Q尊重他人,与他人共同进步;勇于面对重大挑战Q对客户、合作伙伴和技术充满激情;信守对客戗投资h、合作伙伴和雇员的承诺,对结果负责;善于自我批评和自我改q、永不自满等?span lang="EN-US">
以上q些价D不仅仅是UR上的文字Q微软公司在日常工作中也时刻注意提醒员工遵守q些基本的工作准则,q要求员工把q些价D转换成可以付诸实늚具体目标。有了这些h(hun)D的帮助,微Y公司的员工可以进一步增强对微Y企业文化的认同,可以在工作中发挥更大的潜力?span lang="EN-US">
在微软的文化和h(hun)D中,我认Z下五点对微Y的成功最有帮助:(x)Q?span lang="EN-US">1Q充满激情、迎接挑战,Q?span lang="EN-US">2Q自由^{、以h人,Q?span lang="EN-US">3Q自我批评、追求卓,Q?span lang="EN-US">4Q责任至上、善始善l,Q?span lang="EN-US">5Q虚怀若谷、服务客戗?span lang="EN-US">
Q?span lang="EN-US">1Q充满激情、迎接挑?/b>
微Y公司的经营宗旨是随着时代的发展而不断变化的。同L(fng)道理Q微软的企业文化也在不断地完善和发展。但是最能体现微软企业文化精髓的Q还是比?span lang="EN-US">?/span>盖茨的一句话Q这句话多年后还是那么脓(chung)切:(x)?/span>每天清晨当你醒来Ӟ都会(x)为技术进步及其ؓ(f)人类生活带来的发展和改进而激动不巌Ӏ?span lang="EN-US">?br />
也就是这L(fng)雄心壮志让微软一ơ又一ơ地向最困难的目标发h战。当DOS刚取得成功时Q微软就果断地决定要取代自己的成功品,开始发?span lang="EN-US">Windows。当Windowsq远q没有成型时Q微软又军_花大量的资源?span lang="EN-US">Windows版本?span lang="EN-US">Word?span lang="EN-US">Excel。那ӞDOS版本?span lang="EN-US">Word ?span lang="EN-US">Excelq远落后于竞争对手,而微软却把更大的投资攑ֈWindows版本上,q等于是加倍了?span lang="EN-US">Windows上投入的赌注。回这L(fng)大手W、大挑战Q一位经理说Q?span lang="EN-US">?/span>如果Windowsp|了,没有微软这个公怺?span lang="EN-US">?/span>?span lang="EN-US">Windows 之后Q微软在Office?span lang="EN-US">Windows NT?span lang="EN-US">Internet?span lang="EN-US">.NET{机?x)来临时Q一ơ又一ơ地?/span>把公司当作赌?span lang="EN-US">?/span>Qƈ一ơ又一ơ地在重重挑战之下给公司带来了新的生命力?span lang="EN-US">
公司不畏挑战的精,可以从微软前景目标的演变中看出来?span lang="EN-US">28q前Q微软公司的前景目标?span lang="EN-US">?/span>让每张桌上都有一C人电(sh)?span lang="EN-US">?/span>。现在看来,q个目标q不E奇;但在28q前Q这是一件o人难以想象的事。在上述目标已经基本成ؓ(f)现实的今天,微Y公司又有了新的前景目标,那就?span lang="EN-US">?/span>通过优秀的YӞ在Q何时间、Q何地炏V通过M讑֤Q帮助h们发挥潜?span lang="EN-US">?/span>。微软公司认为,人的潜力需要借助有效的工h能淋漓尽致地发挥出来Q而代表现代社?x)信息化q程的电(sh)脑以及优U的Y件品就是这样可以帮助h们充分展C创造力和工作热情的工具?span lang="EN-US">
公司一ơ次地面临重大挑战,一ơ次地推出成功品,一ơ次改变了hcȝ生活。这一切都极大鼓舞了公司员工的士气Q带l他们高度的满感,让每一个员?span lang="EN-US">?/span>Zhcȝzd来的发展和改q?span lang="EN-US">?/span>?span lang="EN-US">?/span>为帮助h们发挥潜?span lang="EN-US">?/span>而激动不巌Ӏ?span lang="EN-US">
Q?span lang="EN-US">2Q自由^{、以h?/b>
微Y公司是我见过的公叔RQ最没有官僚作风的。公司放权给每一个hd自己的工作。公司没?span lang="EN-US">?/span>打卡?/span>的制度,每个Z下班的时间基本上p己决定?span lang="EN-US">
公司支持Zhq等Q资׃h员基本上没有?/span>Ҏ(gu)?/span>Q依然要自己回电(sh)子邮Ӟ自己倒咖啡,自己扑ց车位Q每个h的办公室基本上都一样大。有一ơ,一些从中国来访微Y的教授在{待?span lang="EN-US">Jim GrayQ发明数据库的著名科学家Q图灵奖的获得者,加州研究院的院长Q的演讲Ӟ看见一个满头华发的老头在C接电(sh)U,q以Z只是一名老工人。等他站hӞ大家却惊讶地发现Q他是演讲?span lang="EN-US">Jim Gray。这些教授都很震惊,没想到连Jimq样的h都亲自动手接U装?sh)脑。微软就是这样一个崇技术、h人^{的公司?span lang="EN-US">
公司d施行?/span>开门政{?span lang="EN-US">?/span>Q也是_(d)M人可以找MM话题Q当然Q何h也都可以发电(sh)子邮件给M人。一ơ,有一个新的员工开车上班时撞了比尔?/span>盖茨停着的新车。她吓得问老板怎么办,老板?span lang="EN-US">:?/span>你发一电(sh)子邮仉歉就是了?span lang="EN-US">?/span>她发出电(sh)子邮件后Q在一时之内Q比?dng)不但回信告诉她Q别担心Q只要没伤到人就好,q对她加入公司表C欢q?span lang="EN-US">
一个^{的公司可以降低公司内部的信息阻塞,增加所有员工的Mh精,q能更早地发现公司在发展中遇到的问题。^{的公司可以说是微Y发展的必备^台?span lang="EN-US">
Q?span lang="EN-US">3Q自我批评、追求卓?/b>
微Y文化的一大特色就是自我批评。在U技呈指数趋劉K跃发展的今天Q不愿意批评自己Q不承认自己的错误,不追求卓的公司面临灭亡?span lang="EN-US">
我认识一个刚加入微Y的市场经理,他代表我们的产品d加一个商品展。回来后Q他兴高采烈地发了一电(sh)子邮件给整个产品组。他_(d)(x)?/span>我很高兴地告诉大Ӟ我们在这个展览获得了令h振奋的成l。十大奖中我们囊括了九(ji)V让我们d吧Q?span lang="EN-US">?/span>但是Q他没想刎ͼ在一个小时内Q他收到了十多封回信。大安他:(x)?/span>没得到的是哪一个奖Qؓ(f)什么不告诉我们Qؓ(f)什么没得到那个奖?我们得到什么教训?明年怎么h能得到这W十个奖Q?span lang="EN-US">?/span>他告诉我Q在那一刻,他才理解了微软ؓ(f)什么会(x)成功?span lang="EN-US">
自我批评在公司早已被pȝ化。每一个品推出后Q会(x)有一D늉别时间空出来l品团队做“post-mortem?/span>Q也是pȝ化的?/span>自我批评?/span>。所有小l成员都?x)被询问Q什么地方可以做得更好,每一个动作和军_都会(x)被分析,l果在公司公布Q以帮助别的组避免同样的问题,让公司的目能越做越好?span lang="EN-US">
比尔?/span>盖茨鼓励员工畅所Ʋ言Q对公司的发展、存在的问题Q甚至上司的~点Q毫无保留地提出批评、徏议或提案。他_(d)(x)?/span>如果Zh都能提出Q就说明Zh都在兛_公司Q公司才?x)有前途?span lang="EN-US">?/span>微Y开发了满意度调查YӞ每年臛_做一ơ员工满意度调查Q让员工以匿名的方式对公司、领对{老板{各斚w作回馈。其中有选择题(例如Q?span lang="EN-US">?/span>我对我的副总裁有信心。以下选一 Q?非常同意、同意、无意见、不同意、非怸同意Q,也有问答题(例如Q你对公司战略有什么徏议?Q。每个经理都?x)得到多斚w的回馈和客观的打分。比?dng)、史蒂夫、其他高层领导和Z室都?x)仔l地研究每个l和l理的结果,计划如何改进?span lang="EN-US">
除了自我批评Q还要有能接受别人批评的胸怀Q和改变自己的魄力?span lang="EN-US">1995q_(d)当比?span lang="EN-US">?/span>盖茨宣布不涉?span lang="EN-US">Internet领域产品的时候,很多员工提出了反Ҏ(gu)见。其中,有几位员工直接发信给比尔_(d)你这是一个错误的军_。当比尔?/span>盖茨发现有许多他敬的h持反对的意见Ӟ又花了更多的旉与这些员工见面,最后写Z《互联网潮》这文章,承认了自qq错Q扭转了公司的发展方向。同Ӟ他把许多优秀的员工调?span lang="EN-US">Internet部门Qƈ取消或削减了许多产品Q以便把资源调入Internet部门。当Ӟ有些员工在某一天上班时Q老板?x)告诉他Q?span lang="EN-US">?/span>我们的品被取消了,因ؓ(f)公司需要我们做更重要的IE览器。明天vQ我们整个部门将加入Internet部门?span lang="EN-US">?/span>那些批评比尔?/span>盖茨的h不但没有受处分,而且得到重用Q今天都成了公司重要部门的领对{在软gq个市场变化q速的领域Q调整企业方向对微Y无比重要。从q个例子里我们看到的是:(x)q等的环境、直接的沟通、宽大的胸怀、宏大的力拯救了公司?span lang="EN-US">
Q?span lang="EN-US">4Q责任至上、善始善l?/b>
公司和领D有了关注的目标之后Q还要有_的责dQ才能把事情做好。微软公司要求每一个部门、每一个员工都要有自己明确的目标,同时Q这些目标必L“SMART?/span>的,也就是:(x)
?S ?Specific Q特定的、范围明的Q而不是宽泛的Q?span lang="EN-US">
?M ?Measurable Q可以度量的Q不是模p的Q?span lang="EN-US">
?A ?Attainable Q可实现的,不是理想化的Q?span lang="EN-US">
?R ?Result-based Q基于结果而非行ؓ(f)或过E)
?T ?Time-based Q有旉限制Q而不是遥遥无期的Q?span lang="EN-US">
只有每个人都拥有了明的目标Qƈ可以随时查自己是否达C预先讑֮的目标,公司员工才能在工作中体现出强烈的责Q感和工作热情?span lang="EN-US">
微Y公司要求部门和员工制定的目标必须是可分n的,卻I每个人都应当通过某种渠道Q如公司的内部网站等自q目标公布出来Q当Ӟ某些需要保密的工作目标除外Q。这P当某位员工对领导或其他员工的工作方式不理解的时候,可以去查看Ҏ(gu)的工作目标,以寻求最好的沟通和理解?span lang="EN-US">
除了针对目标、结果的负责Q公司更需要在决策斚w有负责的框架。微软的?/span>决策制定框架?/span>下,每一w要决{都有一定的制定程和h员角色划分。每一个决{流E的推动人很自然地就是决{的责Q人。对该决{有支持和认可权利的人是决策的审批者。对该决{进行核查、提出支持或反对意见的h是决{的复核者。在整个决策程中,虽然复核者可提出反对意见Q但审批者仍拥有决策的最l决定权。有了这L(fng)框架Q公司的决策程更加清晰Qh员责L加明,决策不会(x)被轻易拖延或推翻Q决{的效率也大大提高了?span lang="EN-US">
Q?span lang="EN-US">5Q虚怀若谷、服务客?/b>
微Y公司Ҏ(gu)术相当重视,对合作伙伴和客户也同样重视。作Y件^台公司,合作伙伴和客户都是公司的命脉。微软公司在价D中强调,所有员工都要信守对客户和合作伙伴的承诺Q而且在品研发过E中Q不仅要考虑C品的技术特性,q更要关注客户和合作伙伴最需要的功能?span lang="EN-US">
微Y的大企业产品部鼓励每一个员工在加入公司的前几个星期到技术支持中心工作,帮助客户解决问题。无Z位员工的资历有多深,公司都希望他l过最基层技术支持工作的ȝQ能理解客户的困难。在大企业品部的近一万名员工如果以前没有做过技术支持工作,在公司就没有晋升q某一U别的机?x)?span lang="EN-US">
除了要求员工(zhn)心聆听客户意见之外Q微软的软g也会(x)自动攉客户的反馈意见。多q前Q当Office开发者无法决定该把哪些功能放q常用工hӞOffice的程序员制作了一套特别的Office软g。这?span lang="EN-US">Office在用户允许的情况下,记录用户最常用的功能,传送到微Y。最后,借助q些l计数据Q开发者就可以军_什么样的用L(fng)面才?x)对大多数用h利。今天,微Y把这个技术做q了所有的产品。Q何微软的软g到问题Q如宕机Q时?x)搜集数据,q在用户的允怸l过|络把这些数据传到总部的服务器Q以帮助开发h员诊断和试软g。有了这L(fng)技术,Windows XP推出一个月后,微Y把用户到的一半问题都解决了,然后再通过|络自动帮助合所有法用户升软g。此cd作集中体C公司的创新精以及借助软g技术解决问题的目标Q当然也体现了公司?zhn)心聆听客h见的军_?span lang="EN-US">
寄语中国软g?span lang="EN-US">
本文谈到的内容,大都是我个h对微软成功经验的理解以及对Y件企业管理者的。微软公司是一家成功的企业Q其成功的背后隐藏着许许多多有h(hun)值的东西。虽然微软公司的企业文化和管理方式不一定适合其他企业Q但臛_是一个可供参考的优秀范例。下面是从本文中提炼出来的,我个人对中国高技术企业的Q?span lang="EN-US">
•?理斚wQ?/b>
o
U极为公叔Rq目标投资,(zhn)心地学?fn)研I、开发的机制。理解把握技术的重要性,而不是只注重眼前利益Q重复低U劳动。同时也要认识到Q市场和用户的需求决定技术和产品的开发,而不是反之?span lang="EN-US">
o 不做能力以外的工作,不ؓ(f)?span lang="EN-US">?/span>面子?/span>做没有用的研I。切实研I和扑ֈ在业h(hun)值链的最有利的位|,以增w长q商业实力和股东利益为根本出发点?span lang="EN-US">
o 作专注的公司Q不要急于发展而分散了理者的注意力。唯有够大的规模才能达到较高的效率Q?但规模ƈ不等于无协同性业务的单合q。中国的软g业公司太?span lang="EN-US"> (q万?span lang="EN-US">)Q需要整合。中国的软g公司的总裁需要放?span lang="EN-US">?/span>宁ؓ(f)鸡首?/span>的想法,U极合ƈ?span lang="EN-US">
o ?span lang="EN-US">SMART的目标来衡量每个责的工作Q把q些目标量化q公开出来。定下决{的框架和流E,每个人都要理解自己在一个决{过E中扮演的角艌Ӏ?span lang="EN-US">
o 要求产品的开发h员直接接触客P才能真正理解客户的困隑֒痛苦。用最新的技术进一步地理解客户的需求和满意度?/span>
•?
最高领导层斚wQ?/span>
o
理解领军人物的重要性。中国需要更多虚心的、勇于改变的、对公司充满热情的、彼此信ȝ、相互支持的领军人物?span lang="EN-US">
o ?span lang="EN-US">?/span>希望雇䄦到比自己强的人才?/span>的胸怀Q有?/span>最优秀的h属于公司,支持他们d自己的麾?span lang="EN-US">?/span>的无U作风?span lang="EN-US">
o 提倡以w作则的理方式Q不让领导拥?span lang="EN-US">?/span>Ҏ(gu)?/span>待遇Q不让领导游M公司的法规和措施之外?span lang="EN-US">
o 有够的自觉。如果公司的理工作出了自q能力范围Q要有让贤的胸怀?span lang="EN-US">
o 要认识到中国软g企业在管理上与跨国公司的巨大差距Q要大胆引进外人才和职业经理hQƈU极营造他们充分发挥作用的环境?/span>
•?
人才斚wQ?/span>
o
真正做到以h为本Q以三顾茅庐的精去挖掘人才Q用长远的眼光培Mh才。能够理?span lang="EN-US">?/span>一的人雇佣一的人,二流的h雇䄦三流的h?/span>的精髓?span lang="EN-US">
o 引入人才理、评估、培ȝ制度。追t、提拔最优秀的h才。积极提高h才对企业的忠诚度?span lang="EN-US">
o 引入职业理人才机制Q在公司战略Q营销{领域用受q正规企业管理培训的专业人才?span lang="EN-US">
o 真正重视技术h才。用?/span>双轨?span lang="EN-US">?/span>机制让技术h才受到重视和提升?span lang="EN-US">
o 提供良好的环境、支持和培训Q让优秀的h才没有后之忧?span lang="EN-US">
o 实施真正意义上的员工优胜劣汰机制?span lang="EN-US">
o 建立人才Ȁ励机制。利用股期权等机制员工与公司的长期利益联pd一赗?/span>
•?
文化和h(hun)D斚wQ?/span>
o
发展良好的文化与价DQƈ其灌输C业的每一部分Q要求员工用企业文化和h(hun)D来引导各工作?span lang="EN-US">
o 以o人振奋的前景目标和巨大挑战激发员工的热情和斗志。让每一个员工因q产品Zhcȝzd来的发展和改q而激动不巌Ӏ?span lang="EN-US">
o 杜绝官僚作风Q创立灵zR^{的文化。让公司的信息自由流通,让每一个员工都有主人翁责Q感?span lang="EN-US">
o 公司、领导和员工都自觉追d的文化Q有接受批评的胸怀、承认错误的勇气和扭转劣势的力?span lang="EN-US">
o 从上C?wi)立诚信至上的观念,对上市公司胦务报表做到诚实准?/span>
我希望国内的软g企业可以从微软公司的成功l验中݅取营养,q创造出真正属于自己的优U企业文化和管理模式,实现最大的商业价倹{?/span>
template <class t>
node<t> *linkedlist<t>::getnode(const t&item ,node<t> *ptr);
{
node<t> *newnode = new node<t>(item ptr);
if(!newnode)
{
cerr<<"faied"<<e<endl;
return null'
}
return newnode; // q回指向新生成接点的指针
}
template <class t>
void *linkedlist<t>::freenode(node<t> *ptr)
{
if(!ptr)
{
cerr<<"invalid node pointer!"<<endl;
return 0;
}
delete ptr;
}
template <class t> //构造函?建立一个空链表?br />linkedlist<t>::linkedlist<void>:front(null),rear(null),prevter(null),currptr(null),size(0),position(-1)
{}
template <class t>
linkedlist::~linkedlist()
{
clear();
}
template <class t> //重蝲赋D符的函?
linkedlist<t> &linkedlist<t>::operator = (const linkedlist<t> *orglist)
{
node<t> *p = orglist.front;
clear(); //q里清空链表是ؓ(f)了给复制做好准备么?
while(p) // q里想不明白Q大家帮我详l解释下Q?
{
insertafter(p->data);
p=p->nextnode();
} // ENDLQ?br />setposition(orglist.position); //q又是什么意思?要去复习(fn)重蝲了?br />return *this;
template <class t>
int linkedlist<t>::size(void) const
{
return size;
}
template <class t>
boolean linkedlist<t>::isempty(void) const
{
return size?false:ture;
}
template <class t>
int linkedlist<t>::nextnode(void)
{
if(position>=0 && position<size)
{
position++; //当前结点往后移了一位?br /> prevptr = currptr;
currptr = currptr->nextnode();
}
else
{
position = size; //否则此l点讄为最后结炏V?br /> return position;
}
}
template <class t> //链表中重|当前结点位|的函数?br />int linkedlist<t>::setpostion(int pos)
{
if(!size)
return -1;
if(pos<0||pos>size-1)
{
cerr<<"error position"<<endl;
return -1;
}
prevptr = null;
currptr = front;
position = 0;
for(int k=0;k<pos;k++)
{
position++;
prevptr = currptr;
currptr = currptr->nextnode();
}
return position;
}
template <class t>
int linkedlist::getposition(void)const
{
return position;
}
template <class t> //重要Q链表中在当前结点处插入新结点的函数Q?br />void linkedlist<t>::insertat(const t& item)
{
node<t> *newnode;
if(!size) //I中插入?br /> {
newnode = getnode(item, front);
front = rear = newnode;
position = 0;
}
else if(!prevptr) //在表头插入 ?
{
newnode = getnode(item , front);
front = newnode;
}
else //在链表中间插入插?br /> {
newnode = getnode(item , front);
prevptr = insertafter(newnode);
}
size++;
currptr = newnode; //新插入的l点为当前结?br />}
template <class t> //重要Q链表中在当前结点后插入新结点的函数Q?br />void linkedlist<t>::insertafter(const t& item)
{
node<t> *newnode;
if(!size) //I中插入?br /> {
newnode = getnode(item);
front = rear = newnode;
position = 0;
}
else if(currptr == rear||!currptr) //在链表尾插入
{
newnode = getnode(item);
rear->insertafter(newnode);
prevptr=newnode;
rear = newnode;
position = size;
}
else
{
newnode = getnode(item ,currptr->nextnode()); // 在表的中间插?br /> currptr->insertafter(newnode);
prevptr = currptr;
position++
}
size++;
currptr = newnode;
}
template <class t>
void linkedlist<t>::deleteat(void) //重要Q删除当前结点的函数
{
node<t> *oldnode;
if(!currptr) //若表为空或者已到表,则给出错误提Cƈq回
{
cerr<<"currptr position is invalid!"<<endl;
return;
}
if(!prevtr) //删除表头l点?br /> {
oldnode = front;
front = currptr->nextnode();
}
else
{
oldnode = prevptr->deleteafter(); //删除的是表中l点Q?br /> }
if(oldnode == rear)
{
rear = prevptr; //删除的是表尾l点Q则修改表尾指针和当前位|结点?br /> position--;
}
currptr = oldnode->nextnode(); //后箋l点作ؓ(f)新的当前l点
freenode(oldnode); //释放原当前结?br /> size--; //链表大小?Q?br />}
template <class t>
void linkedlist<t>::deleteafter(void)
{
node<t> *oldnode;
if(!currptr||currptr==rear)
{
cerr<<"current position is invalid!"<<endl;
return;
}
oldnode = currptr->deleteafter(); //保存被删除结点的指针q从链表中删除该l点?br /> if(oldnode == rear)
{
rear == currptr; //删除的是表尾l点?br /> }
freenode(oldnode);
size--;
}
template <class t> //获取当前l点的函?br />T linkedlist<t>::getdata(void) const
{
if(!size || !currptr) //若表为空或已l到达表之后,则出错?br /> {
cerr<<"currptr node not exit!"<<endl; //l出错误信息q出?br /> exit(1);
}
return currptr->data;
}
template <class t> //链表中修改当前结Ҏ(gu)据的函数
void linkedlist<t>::setdata(const T& item)
{
if(!size||!currptr)
{
cerr<<"data:current node not exit!"<<endl;
exit(1);
}
currptr->data = item;
}
template <class t>
void linkedlist<t>::clear(void)
{
node<t> *currptr=front,*nextnode;
while(currnode)
{
nextnode = currnode->nextnode();
freenode(currnode);
currnode = nextnode;
}
front = rear = prevptr = currptr = null; //修改I链表数?br /> size = 0;
position = -1;
}