﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-在水一方</title><link>http://www.cnblogs.com/xlwei/</link><description>Seeing is believing</description><language>zh-cn</language><lastBuildDate>Sat, 26 Jul 2008 09:31:57 GMT</lastBuildDate><pubDate>Sat, 26 Jul 2008 09:31:57 GMT</pubDate><ttl>60</ttl><item><title>链表基本操作</title><link>http://www.cnblogs.com/xlwei/archive/2008/07/22/1248950.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Tue, 22 Jul 2008 10:52:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/07/22/1248950.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1248950.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/07/22/1248950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1248950.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1248950.html</trackback:ping><description><![CDATA[<p>&#160; 基本操作都写在头文件里：</p>
<p>&nbsp;</p>
<p>
<div class="cnblogs_code"><span style="color: #008000;">//</span><span style="color: #008000;">head.h</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdlib.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">conio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;OK&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;OVERFLOW&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;ERROR&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;NULL&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0</span><span style="color: #000000;"><br />
<br />
typedef&#160;</span><span style="color: #0000FF;">struct</span><span style="color: #000000;">&#160;LNode<br />
{<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;data;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">struct</span><span style="color: #000000;">&#160;LNode&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">next;<br />
}LNode,</span><span style="color: #000000;">*</span><span style="color: #000000;">LinkList;<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">顺序创建一个链表</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">LinkList&#160;CreateListOrdinal_L(</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;num)<br />
{<br />
&#160;&#160;&#160;&#160;LinkList&#160;h,head,end;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;counter;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">(h&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;head&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;(LinkList)malloc(</span><span style="color: #0000FF;">sizeof</span><span style="color: #000000;">(LNode))))<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;NULL;<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;h</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;head</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;NULL;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">for</span><span style="color: #000000;">(counter</span><span style="color: #000000;">=</span><span style="color: #800080;">0</span><span style="color: #000000;">;counter</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">num;counter</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(end&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;((LinkList)malloc(</span><span style="color: #0000FF;">sizeof</span><span style="color: #000000;">(LNode))))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;rand();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;h</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;h</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;end;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;h&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;end;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;head;<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">逆序创建一个链表</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">LinkList&#160;CreateList_L(</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;num)<br />
{<br />
&#160;&#160;&#160;&#160;LinkList&#160;head,end;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;counter;<br />
<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">(head</span><span style="color: #000000;">=</span><span style="color: #000000;">(LinkList)malloc(</span><span style="color: #0000FF;">sizeof</span><span style="color: #000000;">(LNode))))<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;NULL;<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;head</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;NULL;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">for</span><span style="color: #000000;">(counter</span><span style="color: #000000;">=</span><span style="color: #800080;">0</span><span style="color: #000000;">;counter</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">num;counter</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(end</span><span style="color: #000000;">=</span><span style="color: #000000;">(LinkList)malloc(</span><span style="color: #0000FF;">sizeof</span><span style="color: #000000;">(LNode)))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;rand();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;head</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;head</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;end;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;head;<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">获取某个指定结点的值</span><span style="color: #008000;"><br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;GetElement_L(LinkList&#160;list,</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;location)<br />
{<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;counter&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">0</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;LinkList&#160;point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">while</span><span style="color: #000000;">(point&#160;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&#160;counter</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">location)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;counter</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">point&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;counter&#160;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&#160;location)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;ERROR;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data;<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">插入元素</span><span style="color: #008000;"><br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;ListInsert_L(LinkList&#160;list,</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;location,</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;arg)<br />
{<br />
&#160;&#160;&#160;&#160;LinkList&#160;point</span><span style="color: #000000;">=</span><span style="color: #000000;">list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next,node;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;counter</span><span style="color: #000000;">=</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">while</span><span style="color: #000000;">(counter</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">location)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;counter</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">point&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;(counter&#160;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&#160;location))<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\nInsert&#160;operatoin&#160;failed</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;ERROR;<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;node&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;(LinkList)malloc(</span><span style="color: #0000FF;">sizeof</span><span style="color: #000000;">(LNode));<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">node)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;exit(OVERFLOW);<br />
&#160;&#160;&#160;&#160;node</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;arg;<br />
&#160;&#160;&#160;&#160;node</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;node;<br />
&#160;&#160;&#160;&#160;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;OK;<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">删除元素</span><span style="color: #008000;"><br />
</span><span style="color: #0000FF;">void</span><span style="color: #000000;">&#160;ListDelete_L(LinkList&#160;list,</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;location)<br />
{<br />
&#160;&#160;&#160;&#160;LinkList&#160;point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;counter&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">while</span><span style="color: #000000;">(counter&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;location)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;list&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;counter</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">point&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;(counter&#160;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&#160;location))<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\nDelete&#160;operation&#160;failed!\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;free(point);<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">快速排序</span><span style="color: #008000;"><br />
</span><span style="color: #0000FF;">void</span><span style="color: #000000;">&#160;BubbleSort(LinkList&#160;list)<br />
{<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;temp;<br />
&#160;&#160;&#160;&#160;LinkList&#160;pa,pb;<br />
&#160;&#160;&#160;&#160;pa&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;pb&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">while</span><span style="color: #000000;">(pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data&#160;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&#160;pb</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;temp&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;pb</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pb</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;temp;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pb&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;pb</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">pb)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pa&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pb&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;}<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">获取链表元素个数</span><span style="color: #008000;"><br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;GetListLength_L(LinkList&#160;list)<br />
{<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;counter</span><span style="color: #000000;">=</span><span style="color: #800080;">0</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;LinkList&#160;point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">while</span><span style="color: #000000;">(point)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;counter</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;counter;<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">合并两个链表，并将操作结果保留在第一个链表中。此操作结束后就只剩一个链表了</span><span style="color: #008000;"><br />
</span><span style="color: #0000FF;">void</span><span style="color: #000000;">&#160;MergeList_L(LinkList&#160;listA,LinkList&#160;listB)<br />
{<br />
&#160;&#160;&#160;&#160;LinkList&#160;pa&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listA,pb&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listB;<br />
&#160;&#160;&#160;&#160;listA&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listA</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;listB&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listB</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">while</span><span style="color: #000000;">(listA&#160;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&#160;listB)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(listA</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;listB</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listA;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pa&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listA;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;listA&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listA</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">else</span><span style="color: #000000;"><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listB;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pa&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listB;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;listB&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listB</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;pa</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;listA</span><span style="color: #000000;">?</span><span style="color: #000000;">listA:listB;<br />
&#160;&#160;&#160;&#160;free(pb);<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">列出列表的所有元素</span><span style="color: #008000;"><br />
</span><span style="color: #0000FF;">void</span><span style="color: #000000;">&#160;DisplayAllElements(LinkList&#160;list)<br />
{<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;flag</span><span style="color: #000000;">=</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;LinkList&#160;point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">while</span><span style="color: #000000;">(point)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">%d\t</span><span style="color: #800000;">"</span><span style="color: #000000;">,point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">data);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;point</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(flag</span><span style="color: #000000;">++</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">5</span><span style="color: #000000;">)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
}</span></div>
&#160;&#160;</p>
<p>&#160; 主函数：</p>
<p>&#160;&#160;
<div class="cnblogs_code"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">#include&#160;</span><span style="color: #800000;">"</span><span style="color: #800000;">head.h</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000FF;">void</span><span style="color: #000000;">&#160;main()<br />
{<br />
&#160;&#160;&#160;&#160;LinkList&#160;listA,listB;<br />
&#160;&#160;&#160;&#160;<br />
&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">Create&#160;LinkList&#160;A<img src="http://www.cnblogs.com/Images/dot.gif"  alt="" />\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;listA&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;CreateListOrdinal_L(</span><span style="color: #800080;">4</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;ListInsert_L(listA,</span><span style="color: #800080;">4</span><span style="color: #000000;">,</span><span style="color: #800080;">123</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;ListDelete_L(listA,</span><span style="color: #800080;">3</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;BubbleSort(listA);<br />
&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">After&#160;sort,the&#160;elements&#160;of&#160;listA&#160;are:\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;DisplayAllElements(listA);<br />
&#160;&#160;&#160;&#160;<br />
&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">Create&#160;LinkList&#160;B<img src="http://www.cnblogs.com/Images/dot.gif"  alt="" />\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;listB&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;CreateList_L(</span><span style="color: #800080;">6</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;BubbleSort(listB);<br />
&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">After&#160;sort,the&#160;elements&#160;of&#160;listB&#160;are:\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;DisplayAllElements(listB);<br />
<br />
&#160;&#160;&#160;&#160;MergeList_L(listA,listB);<br />
&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\nAfter&#160;merge&#160;the&#160;two&#160;list&#160;together,the&#160;elements&#160;are:\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;DisplayAllElements(listA);<br />
<br />
&#160;&#160;&#160;&#160;printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\nThe&#160;length&#160;of&#160;elements&#160;of&#160;listA&#160;is:%d</span><span style="color: #800000;">"</span><span style="color: #000000;">,GetListLength_L(listA));<br />
<br />
&#160;&#160;&#160;&#160;getch();<br />
}</span></div>
</p>
<img src ="http://www.cnblogs.com/xlwei/aggbug/1248950.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41316/" target="_blank">[新闻]腾讯CEO马化腾:中国互联网业准备再过冬</a>]]></description></item><item><title>顺序表的插入删除操作</title><link>http://www.cnblogs.com/xlwei/archive/2008/07/15/1243069.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Tue, 15 Jul 2008 00:18:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/07/15/1243069.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1243069.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/07/15/1243069.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1243069.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1243069.html</trackback:ping><description><![CDATA[<p style>　心平气和的准备一个暑假，先找份好工作吧。
</p>
<p>　从数据结构开始。</p>
<p>
<div class="cnblogs_code"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdlib.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">conio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;TRUE&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;FALSE&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;OK&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;ERROR&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;OVERFLOW&#160;&#160;&#160;&#160;-2</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;LIST_INIT_SIZE&#160;&#160;&#160;&#160;20</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">#define</span><span style="color: #000000;">&#160;LISTINCREMENT&#160;&#160;&#160;&#160;10</span><span style="color: #000000;"><br />
<br />
typedef&#160;</span><span style="color: #0000FF;">struct</span><span style="color: #000000;">&#160;<br />
{<br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">elem;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">存储空间基址</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;length;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">当前长度</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;listsize;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">当前分配的存储容量</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">}SqList;<br />
<br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;InitList_Sq(SqList</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;list)<br />
{<br />
list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">elem&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;(</span><span style="color: #0000FF;">int</span><span style="color: #000000;">*</span><span style="color: #000000;">)malloc(LIST_INIT_SIZE</span><span style="color: #000000;">*</span><span style="color: #0000FF;">sizeof</span><span style="color: #000000;">(</span><span style="color: #0000FF;">int</span><span style="color: #000000;">));<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">elem)<br />
exit(OVERFLOW);<br />
list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">length&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">0</span><span style="color: #000000;">;<br />
list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">listsize&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;LIST_INIT_SIZE;<br />
printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\nInitialize&#160;sequence&#160;list&#160;completed!\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;OK;<br />
}<br />
<br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;ListInsert_Sq(SqList</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;list,</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;location,</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;argument)<br />
{<br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">newBase,</span><span style="color: #000000;">*</span><span style="color: #000000;">insertLocation,</span><span style="color: #000000;">*</span><span style="color: #000000;">point;<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">The&#160;location&#160;is&#160;to&#160;intsert&#160;the&#160;element&#160;is&#160;illegal</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(location&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">1</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;location&#160;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">length</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)<br />
</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;ERROR;<br />
<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">length&#160;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">listsize)<br />
{<br />
newBase&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;(</span><span style="color: #0000FF;">int</span><span style="color: #000000;">*</span><span style="color: #000000;">)realloc(list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">elem,(list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">listsize&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;LISTINCREMENT)</span><span style="color: #000000;">*</span><span style="color: #0000FF;">sizeof</span><span style="color: #000000;">(</span><span style="color: #0000FF;">int</span><span style="color: #000000;">));<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">newBase)<br />
exit(OVERFLOW);<br />
list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">elem&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;newBase;<br />
list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">listsize&#160;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&#160;LISTINCREMENT;<br />
}<br />
<br />
insertLocation&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;(list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">elem)&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;location&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
<br />
</span><span style="color: #0000FF;">for</span><span style="color: #000000;">(point</span><span style="color: #000000;">=</span><span style="color: #000000;">list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">elem&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">length&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">1</span><span style="color: #000000;">;point</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">insertLocation;</span><span style="color: #000000;">--</span><span style="color: #000000;">point)<br />
{<br />
</span><span style="color: #000000;">*</span><span style="color: #000000;">(point</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">point;<br />
}<br />
<br />
</span><span style="color: #000000;">*</span><span style="color: #000000;">insertLocation&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;argument;<br />
list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">length</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;OK;<br />
}<br />
<br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;ListDelete_Sq(SqList&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">list,</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;location)<br />
{<br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">point,</span><span style="color: #000000;">*</span><span style="color: #000000;">deleteLocation;<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(location&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">0</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;(location&#160;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">length&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">1</span><span style="color: #000000;">))<br />
</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;ERROR;<br />
<br />
deleteLocation&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">elem&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;location&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
point&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">elem&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">length&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
</span><span style="color: #0000FF;">for</span><span style="color: #000000;">(;deleteLocation&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;point;&#160;deleteLocation</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />
</span><span style="color: #000000;">*</span><span style="color: #000000;">deleteLocation&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">(deleteLocation</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">);<br />
<br />
list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">length</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br />
</span><span style="color: #0000FF;">return</span><span style="color: #000000;">&#160;OK;<br />
}<br />
<br />
</span><span style="color: #0000FF;">void</span><span style="color: #000000;">&#160;DisplayAllElement(SqList</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;list)<br />
{<br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;i;<br />
printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\nAfter&#160;all&#160;the&#160;operation,now&#160;the&#160;member&#160;of&#160;the&#160;list&#160;are&#160;as&#160;follows:\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #0000FF;">for</span><span style="color: #000000;">(i</span><span style="color: #000000;">=</span><span style="color: #800080;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">length;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />
{<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(i</span><span style="color: #000000;">==</span><span style="color: #800080;">5</span><span style="color: #000000;">)<br />
printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">%-5d</span><span style="color: #800000;">"</span><span style="color: #000000;">,list</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">elem[i]);<br />
}<br />
}<br />
<br />
</span><span style="color: #0000FF;">void</span><span style="color: #000000;">&#160;main()<br />
{<br />
</span><span style="color: #0000FF;">int</span><span style="color: #000000;">&#160;i;<br />
SqList&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">list&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;(SqList&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">)malloc(</span><span style="color: #0000FF;">sizeof</span><span style="color: #000000;">(SqList));<br />
InitList_Sq(list);<br />
</span><span style="color: #0000FF;">for</span><span style="color: #000000;">(i</span><span style="color: #000000;">=</span><span style="color: #800080;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #800080;">5</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />
{<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;">(OK&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;ListInsert_Sq(list,i</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">,</span><span style="color: #800080;">2</span><span style="color: #000000;">*</span><span style="color: #000000;">(i</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">))&#160;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&#160;i&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;</span><span style="color: #800080;">4</span><span style="color: #000000;">)<br />
printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">\nInsert&#160;operatoin&#160;finished!\n</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
}<br />
<br />
ListDelete_Sq(list,</span><span style="color: #800080;">2</span><span style="color: #000000;">);<br />
<br />
DisplayAllElement(list);<br />
getch();<br />
}<br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">注：１、因为struct属于结构体，所以要使进行插入删除操作后的情况保留下来，必须使用指针；<br />
２、注意插入删除的位置－－在计算机内存储的时候下标从０开始，但是进行操作的时候却不会对位置０进行操作（计算机思维和人思维的转换问题）；<br />
３、心平气和，不要骄躁；<br />
</span><span style="color: #008000;">*/</span></div>
<p>&nbsp;</p>
<img src ="http://www.cnblogs.com/xlwei/aggbug/1243069.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41315/" target="_blank">[新闻]F8 Keynote Speech[多图]</a>]]></description></item><item><title>改变一生的几个故事[转]</title><link>http://www.cnblogs.com/xlwei/archive/2008/07/06/1236901.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Sun, 06 Jul 2008 07:59:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/07/06/1236901.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1236901.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/07/06/1236901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1236901.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1236901.html</trackback:ping><description><![CDATA[<blockquote>
<p><strong><font color="#ff0000">一、钓鱼</font></strong></p>
<p><br />
&nbsp;&nbsp;&nbsp; 有一个博士生分到一家研究所，成为所里学历最高的人。<br />
&nbsp;&nbsp;&nbsp; 有一天他到单位后面的小池塘去钓鱼，正好正副所长在他的一左一右，也在钓鱼。<br />
&nbsp;&nbsp;&nbsp; 他只是微微点了点头，心想与两个本科生有啥好聊的呢？<br />
不一会儿，正所长放下渔竿，伸伸懒腰，蹭蹭蹭从水面上快步如飞的走到对面上厕所。博士眼睛瞪得都快要掉下来了。水上飘？不会吧？这可是一个池塘啊！正所长上完厕所回来的时候，同样也是蹭蹭蹭地从水面上飘回来了。怎么回事？博士生又不好意思去问，自己是博士生啊！过了一阵儿，副所长也站起身来，走几步，蹭蹭蹭的飘过水面上厕所。这下子博士更是差点昏倒：&#8220;不会吧，到了一个高手集中的地方？&#8221;<br />
&nbsp;&nbsp;&nbsp; 博士生也内急了。这个池塘两边有围墙，要到对面厕所非得绕10分钟的路，而回单位上厕所又太远，怎么办？博士生也不愿意去问两位所长，憋了半天后，也起身往水里跨：我就不信本科生能过的水面，我博士生就不能过。只听&#8220;咚&#8221;的一声，博士生栽到了水。<br />
&nbsp;&nbsp;&nbsp; 两位所长将他拉了出来，问他为什么要下水，他问：&#8220;为什么你们可以走过去呢？&#8221;<br />
&nbsp;&nbsp;&nbsp; 两所长相视一笑：&#8220;这池塘里有两排木桩子，由于这两天下雨涨水正好埋在水面下。我们都知道这木桩的位置，所以可以踩着桩子过去，你怎么不问一声呢？&#8221;</p>
<p><strong><em><u>启示：学历代表过去，只有学习能力代表将来。尊重经验的人才能少走弯路。一个好的团队，也应该是学习性的团队。</u></em></strong>
<p><strong><em><u></u></em></strong>&nbsp;
<p><strong><font color="#ff0000">二、选择</font></strong></p>
<p><strong><font color="#ff0000"></font></strong><br />
&nbsp;&nbsp;&nbsp; 有一个美国人、一个法国人和一个犹太人要被关进监狱3年。监狱长让他们3个一个人提一个要求。美国人爱抽雪茄，要了3箱雪茄。法国人最浪漫，要一个美丽的女子相伴。而犹太人说，他要一部能与外界沟通的电话。<br />
&nbsp;&nbsp;&nbsp; 3年过后。第一个冲出来的是美国人，嘴里鼻孔里塞满了雪茄，大喊道：&#8220;给我火，给我火！&#8221;原来他忘了要火了。接着出来的是法国人。只见他手里抱着一个小孩子，美丽女子手里牵着一个小孩子，肚子里还怀着第三个小孩子。最后出来的是犹太人，他紧紧握住监狱长的手说：&#8220;这3年我每天以外界联系，我的生意不但没有停顿，反而增长了200%。为了表示感谢，我要送你一辆劳斯莱斯！&#8221;<br />
<br />
<strong><em><u>启示：这个故事告诉我们，什么样的选择决定什么样的生活。今天的生活是由三年前我们的选择决定的，而今天我们的选择将决定我们三年后的生活。我们要选择最新的信息，了解最新的趋势，从而更好的创造自己的将来。</u></em></strong></p>
<p><strong><em><u></u></em></strong>&nbsp;</p>
<p><font color="#ff0000">三、赶考</font></p>
<p><font color="#ff0000"></font><br />
&nbsp;&nbsp;&nbsp; 有位秀才第三次进城赶考，住在一个经常住的旅店里。<br />
&nbsp;&nbsp;&nbsp; 考试前两天他做了2个梦：第一个梦是梦到自己在墙上种白菜；第二个梦是梦到下雨天，他带了斗笠还打伞。<br />
&nbsp;&nbsp;&nbsp; 这2个梦似乎有些深意，秀才第二天就赶紧去找算命的解梦。算命的一听。连拍大腿说：&#8220;你还是回家吧，你想想，高墙上种菜不是白费劲吗？戴斗笠打雨伞不是多此一举吗？&#8221;<br />
&nbsp;&nbsp;&nbsp; 秀才一听，心灰意冷，回旅店收拾包袱准备回家。店老板非常奇怪，问：&#8220;不是明天才考试吗？你怎么今天就要回乡了？&#8221;秀才如此这般说了一番。店老板乐了：&#8220;哟，我也会解梦的。我倒觉得，你这次一定要留下来，你想想，墙上种菜不是高种（中）吗？戴斗笠打伞不是说明你这次有备无患吗？&#8221;<br />
秀才一听，觉得此人说得更有道理。于是精神振奋的参加考试，居然中了个探花。<br />
<br />
<strong><em><u>启示：积极的人像太阳，照到哪里哪里亮；消极的人像月亮，初一十五不一样。想法决定我们的生活，有什么样的想法，就有什么样的未来。</u></em></strong></p>
</blockquote>
<img src ="http://www.cnblogs.com/xlwei/aggbug/1236901.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41314/" target="_blank">[新闻]奥运核心资源被分食 搜狐央视网谁忽悠谁？</a>]]></description></item><item><title>IHttpHandler实现验证控件</title><link>http://www.cnblogs.com/xlwei/archive/2008/07/05/1236755.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Sat, 05 Jul 2008 15:20:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/07/05/1236755.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1236755.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/07/05/1236755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1236755.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1236755.html</trackback:ping><description><![CDATA[摘要: 刚刚解决了一个问题 ,按捺不住心中的喜悦，呵呵，记下来啦。切入点：利用IHttpHandler接口，动态生成验证码。步骤一：新建一个类库 usingSystem;usingSystem.Web;usingSystem.Web.UI;usingSystem.Drawing;usingSystem.Text;usingSystem.Web.SessionState;namespaceControlLe&nbsp;&nbsp;<a href='http://www.cnblogs.com/xlwei/archive/2008/07/05/1236755.html'>阅读全文</a><img src ="http://www.cnblogs.com/xlwei/aggbug/1236755.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41313/" target="_blank">[新闻]微软推新型搜索技术"BrowseRank"挑战谷歌</a>]]></description></item><item><title>坚持总是会胜利的</title><link>http://www.cnblogs.com/xlwei/archive/2008/07/05/1236706.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Sat, 05 Jul 2008 13:02:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/07/05/1236706.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1236706.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/07/05/1236706.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1236706.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1236706.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;刚刚看关于马云先生的《对话》，听到了他说的特经典的话：<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red"><span style="font-size: 14pt"><span style="color: red">今天很残酷，明天更残酷，后天很美好，但绝大多数都死在了明天晚上;<br />
</span>&nbsp;&nbsp;&nbsp;我不知道怎么样定义成功，但我知道怎么样定义失败，那就是放弃。如何你放弃了，那你就失败了，如果你不放弃你的梦想，那么你永远有希望和机会。<br />
&nbsp;&nbsp;&nbsp;<span style="font-size: 12pt; color: #060000">看来坚持还是会胜利的！</span></span></span> 
<img src ="http://www.cnblogs.com/xlwei/aggbug/1236706.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41313/" target="_blank">[新闻]微软推新型搜索技术"BrowseRank"挑战谷歌</a>]]></description></item><item><title>深入剖析ASP.NET组件设计－－WebTimer组件</title><link>http://www.cnblogs.com/xlwei/archive/2008/07/03/1234846.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Thu, 03 Jul 2008 07:40:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/07/03/1234846.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1234846.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/07/03/1234846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1234846.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1234846.html</trackback:ping><description><![CDATA[<span style="color: red"><u><strong>一、思考组件需求<br />
</strong></u></span>&nbsp;&nbsp;&nbsp;&nbsp;在网页上编写一个Timer组件，首先得解决这个问题：如何让网页定时Post回Server端。 正常情况下这个动作是由用户按下某个按钮后触发的，但Timer组件的需求是自动在特定时间触发，例如设计者设定在每5秒产生一个Post动作，网页就得每5秒做出一个Post动作，这该如何完成呢？事实上，这可以通过Javascript提供的一个setTimeout函数来完成，只要运用此函数每5秒调用一次由ASP.NET产生的_doPostBack函数即可达到定时自动Post的需求，下面是setTimeout函数的原型。<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<div class="cnblogs_code"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">setTimeout(</span><span style="color: #000000">&lt;</span><span style="color: #000000">function</span><span style="color: #000000">&gt;</span><span style="color: #000000">,</span><span style="color: #000000">&lt;</span><span style="color: #000000">interval</span><span style="color: #000000">&gt;</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
&nbsp;&nbsp;&nbsp;&nbsp;第一个参数是当Timeout时间到时所调用的函数，第二个是Timeout时间的长度，单位是毫秒（millisecond）。解决网页定时自动Post的问题后，接着就是Server端如何接收这个信息的问题，答案就是Post-Back机制，只要实现此机制，组件就能在网页自动Post后取得主控权，并引发用户所挂载的事件函数。<br />
<br />
<strong><u style="color: red">二、实现Post-Back与绘制JavaScript</u></strong>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;现在我们面临两个问题：第一是组件的基类选择。由于WebTimer属于不可视组件，并不需要任何外观睥属性，所以自然是继承自Control类；第二是WebTimer必须实现Post-Back接口，宋才能在网页自动Post取得主控权后触发用户所挂载的事件函数。 下面是WebTimer处理Post-Back机制的部分程序代码 <br />
<div class="cnblogs_code"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;WebTimer:Control,IPostBackEventHandler<br />
<img id="Codehighlighter1_52_224_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_52_224_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_52_224_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_52_224_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_52_224_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_52_224_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_52_224_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_52_224_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_52_224_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_52_224_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&#8230;&#8230;&#8230;&#8230;<br />
<img id="Codehighlighter1_61_216_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_61_216_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_61_216_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_61_216_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /><img id="Codehighlighter1_61_216_Open_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_61_216_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_61_216_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_61_216_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_61_216_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">IPostBackEventHandler&nbsp;implements</span><span id="Codehighlighter1_61_216_Open_Text" style="display: none"><span style="color: #0000ff">#region</span><span style="color: #000000">&nbsp;IPostBackEventHandler&nbsp;implements</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;IPostBackEventHandler.RaisePostBackEvent(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;eventArgument)<br />
<img id="Codehighlighter1_172_204_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_172_204_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_172_204_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_172_204_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_172_204_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_172_204_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_172_204_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_172_204_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_172_204_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_172_204_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnTimer(EventArgs.Empty);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">#endregion</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&#8230;&#8230;&#8230;&#8230;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;由程序易知，WebTimer继承自Control类，同时实现了IPostBackEventHandler接口。当组件实现了该接口之后，Post-Back发生时Page对象会一一调用已注册参与Post-Back运作组件的IPostBackEventHandler.RaisePostBackEvent函数，此处WebTimer组件调用了OnTimer函数将控制权转交给设计者所绑定的事件上，下面是OnTimer函数及事件处理部分的代码：<br />
<div class="cnblogs_code"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">readonly</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;EventTimer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">object</span><span style="color: #000000">();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&#8230;&#8230;&#8230;&#8230;<br />
<img id="Codehighlighter1_64_217_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_64_217_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_64_217_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_64_217_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><img id="Codehighlighter1_64_217_Open_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_64_217_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_64_217_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_64_217_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /></span><span id="Codehighlighter1_64_217_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Events</span><span id="Codehighlighter1_64_217_Open_Text" style="display: none"><span style="color: #0000ff">#region</span><span style="color: #000000">&nbsp;Events</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">event</span><span style="color: #000000">&nbsp;EventHandler&nbsp;Timer<br />
<img id="Codehighlighter1_111_206_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_111_206_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_111_206_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_111_206_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_111_206_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_111_206_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_111_206_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_111_206_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_111_206_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_111_206_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_117_155_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_117_155_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_117_155_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_117_155_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_117_155_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_117_155_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_117_155_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_117_155_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;add</span><span id="Codehighlighter1_117_155_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_117_155_Open_Text"><span style="color: #000000">{Events.AddHandler(EventTimer,value);}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_163_204_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_163_204_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_163_204_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_163_204_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_163_204_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_163_204_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_163_204_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_163_204_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;remove</span><span id="Codehighlighter1_163_204_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_163_204_Open_Text"><span style="color: #000000">{Events.RemoveHandler(EventTimer,value);}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #0000ff">#endregion</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_219_429_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_219_429_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_219_429_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_219_429_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><img id="Codehighlighter1_219_429_Open_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_219_429_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_219_429_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_219_429_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /></span><span id="Codehighlighter1_219_429_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">event&nbsp;handler&nbsp;functions</span><span id="Codehighlighter1_219_429_Open_Text" style="display: none"><span style="color: #0000ff">#region</span><span style="color: #000000">&nbsp;event&nbsp;handler&nbsp;functions&nbsp;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">virtual</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;OnTimer(EventArgs&nbsp;e)<br />
<img id="Codehighlighter1_296_418_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_296_418_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_296_418_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_296_418_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_296_418_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_296_418_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_296_418_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_296_418_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_296_418_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_296_418_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;EventHandler&nbsp;timerHandler&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(EventHandler)Events[EventTimer];<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;timerHandler)<br />
<img id="Codehighlighter1_388_416_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_388_416_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_388_416_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_388_416_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_388_416_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_388_416_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_388_416_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_388_416_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_388_416_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_388_416_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timerHandler(</span><span style="color: #0000ff">this</span><span style="color: #000000">,e);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #0000ff">#endregion</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;接下来要做的就是绘制JavaScript函数。在这之前，还有一件很重要的事，那就是绘制默认的_doPostBack函数。默认情况下Page对象为了节省带宽，并不是每次都绘制此函数。只有在某个组件明确调用Page.GetPostBackEventReference或Page.GetPostBackClientHyperlink其中的一个函数时，_doPostBack函数才会被绘制到网页中。因此，WebTimer组件必须得调用Page.GetPostBackEventReference或是Page.GetPostBackClientHyperlink函数，但是在哪里调用呢？Render函数？不行！此时Page对象已经进入绘制状态，在此时调用Page对象的任何函数都已经太迟了，所以最好的地方是调用OnPreRender函数，下面是相关代码： <br />
<div class="cnblogs_code"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;OnPreRender(EventArgs&nbsp;e)<br />
<img id="Codehighlighter1_49_203_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_49_203_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_49_203_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_49_203_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_49_203_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_49_203_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_49_203_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_49_203_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_49_203_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_49_203_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">base</span><span style="color: #000000">.OnPreRender(e);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">call&nbsp;this&nbsp;method&nbsp;to&nbsp;ensure&nbsp;that&nbsp;the&nbsp;_doPostBack&nbsp;method&nbsp;will&nbsp;be&nbsp;called&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Page.ClientScript.GetPostBackEventReference(</span><span style="color: #0000ff">this</span><span style="color: #000000">,</span><span style="color: #800000">""</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;接下来就是编写JavaScript函数并在Render函数中绘制相关动作： <br />
<div class="cnblogs_code"><img id="Codehighlighter1_0_367_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_0_367_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_0_367_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_0_367_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><img id="Codehighlighter1_0_367_Open_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_0_367_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_0_367_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_0_367_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><span id="Codehighlighter1_0_367_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Utility&nbsp;functions</span><span id="Codehighlighter1_0_367_Open_Text" style="display: none"><span style="color: #0000ff">#region</span><span style="color: #000000">&nbsp;Utility&nbsp;functions</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;BuildJavaScript()<br />
<img id="Codehighlighter1_59_356_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_59_356_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_59_356_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_59_356_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_59_356_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_59_356_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_59_356_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_59_356_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_59_356_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_59_356_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;sb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuilder();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;sb.Append(</span><span style="color: #800000">"</span><span style="color: #800000">\n&lt;script&nbsp;language=\</span><span style="color: #800000">"</span><span style="color: #000000">javascript\</span><span style="color: #800000">"</span><span style="color: #800000">&gt;\n&nbsp;&lt;!--&nbsp;</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_200_203_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_200_203_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_200_203_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_200_203_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_200_203_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_200_203_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_200_203_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_200_203_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;sb.AppendFormat(</span><span style="color: #800000">"</span><span style="color: #800000">\n&nbsp;setTimeout(\</span><span style="color: #800000">"</span><span id="Codehighlighter1_200_203_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_200_203_Open_Text"><span style="color: #000000">{</span><span style="color: #800080">0</span><span style="color: #000000">}</span></span><span style="color: #000000">\</span><span style="color: #800000">"</span><span style="color: #800000">,{1});</span><span style="color: #800000">"</span><span style="color: #000000">,<br />
<img id="Codehighlighter1_229_292_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_229_292_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_229_292_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_229_292_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_229_292_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_229_292_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_229_292_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_229_292_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">object</span><span style="color: #000000">[]</span><span id="Codehighlighter1_229_292_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_229_292_Open_Text"><span style="color: #000000">{</span><span style="color: #0000ff">this</span><span style="color: #000000">.Page.GetPostBackEventReference(</span><span style="color: #0000ff">this</span><span style="color: #000000">),interval.ToString()}</span></span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;sb.Append(</span><span style="color: #800000">"</span><span style="color: #800000">\n&nbsp;//--&gt;\n&lt;/script&gt;</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;sb.ToString();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #0000ff">#endregion</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Render(HtmlTextWriter&nbsp;writer)<br />
<img id="Codehighlighter1_423_693_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_423_693_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_423_693_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_423_693_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_423_693_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_423_693_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_423_693_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_423_693_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_423_693_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_423_693_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_426_583_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_426_583_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_426_583_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_426_583_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_426_583_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_426_583_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_426_583_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_426_583_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_426_583_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_426_583_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">to&nbsp;ensure&nbsp;that&nbsp;this&nbsp;component&nbsp;is&nbsp;in&nbsp;the&nbsp;"runat=server"&nbsp;HtmlForm,<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;there'll&nbsp;be&nbsp;no&nbsp;Post-Back&nbsp;event,as&nbsp;a&nbsp;result&nbsp;that&nbsp;this&nbsp;component&nbsp;will&nbsp;be&nbsp;of&nbsp;no&nbsp;avail<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;Page)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Page.VerifyRenderingInServerForm(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(enabled)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.Write(BuildJavaScript());<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;除了Render函数之外，程序中尚用到两个函数：Page.VerifyRenderingInServerForm函数用来确认组件位于标记为&#8221;runat=server&#8221;的HtmlForm控件中，假如组件并非位于此类的HtmlForm中，那么也就没有Post-Back带伤，WebTimer组件自然也就没有作用了。另外一个是BuildJavaScript，此函数将之前所讨论的JavaScript函数setTimeout配合用户所设定的时间绘出。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;有一点要指出来的是，在.net 2.0里面会有个警告提示System.Web.UI.Page.GetPostBackEventReference(System.Web.UI.Control)已过时，建议用ClientScript.GetPostBackEventReference来代替，新的函数重载了四次，但是没有一个参数的，现在还不知道怎么改，有知道的希望能指出来！<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="/Files/xlwei/WebTimer.rar">点击这里下载代码</a> 
<img src ="http://www.cnblogs.com/xlwei/aggbug/1234846.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41312/" target="_blank">[新闻]2008年7月26日IT博客精选</a>]]></description></item><item><title>NOD32破解方法</title><link>http://www.cnblogs.com/xlwei/archive/2008/06/12/1218152.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Thu, 12 Jun 2008 02:24:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/06/12/1218152.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1218152.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/06/12/1218152.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1218152.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1218152.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&#8220;裸奔&#8221;过一段时间，用过不少杀毒软件，也中过不少毒...<br />
曾经试过手动杀毒，中毒之后，杀毒也杀了，可是被病毒破坏的东西，如何修复？到最后还是落得重装系统的下场。<br />
还是装杀毒软件吧，加一层保护，戴着镣铐跳舞，痛并快乐着。<br />
NOD32破解如下（私服破解）：<br />
1、安装NOD32（不是PPLive上绑定的那个版本）<br />
2、将<a href="http://www.cnblogs.com/Files/xlwei/hosts.txt">这个</a>文件拷到C:\WINDOWS\System32\drivers\etc下，覆盖hosts文件（去掉扩展名更名为hosts）<br />
3、打开NOD32控制中心，点击&#8220;更新&#8221;，然后点击右边的&#8220;设定&#8221;，点击弹出窗口中的&#8220;服务器&#8221;,再点击&#8220;新增&#8221;，输入<a href="http://antivirus.hust.edu.cn/nod32">http://antivirus.hust.edu.cn/nod32</a>(教育网),电信的请用这个：<strong><font color="#ff0000"><a href="http://nod32.tibet-is-a-part-of-china.cn/">http://nod32.tibet-is-a-part-of-china.cn/</a>&nbsp;</font></strong><br />
然后选择此服务器。<br />
<img src ="http://www.cnblogs.com/xlwei/aggbug/1218152.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41311/" target="_blank">[新闻]微软每年向Apache捐10万美元支持开源软件</a>]]></description></item><item><title>JBuilder2006中生成jar文件</title><link>http://www.cnblogs.com/xlwei/archive/2008/06/03/1212705.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Tue, 03 Jun 2008 03:20:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/06/03/1212705.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1212705.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/06/03/1212705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1212705.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1212705.html</trackback:ping><description><![CDATA[<blockquote>
<p>&#160;&#160;&#160;&#160;&#160; <span style="font-size: 12pt">Java的课程设计做完了,要拿到机房去演示,可是机房没装JBuilder2006,想生成jar可执行文件,可是根据在网上查到的命令弄了半天也没弄出来(用google搜索"JBuilder生成jar"得到的搜索结果),实在没办法,换了个搜索引擎--百度一下,搜到了一篇提供操作指导文档的文章,按照上面的操作一下子就弄出来了...之前一直用google的,看来它和百度还是各有长处^_^.</span></p>
<span style="font-size: 12pt"> </span>
<p><span style="font-size: 12pt">&#160;&#160;&#160;&#160;&#160; JBuilder2006:</span></p>
<span style="font-size: 12pt"> </span>
<p><span style="font-size: 12pt">&#160;&#160;&#160;&#160;&#160; File--&gt;New--&gt;Archive--&gt;Application,然后根据提示往下做.</span></p>
<span style="font-size: 12pt"> </span>
<p><span style="font-size: 12pt">&#160;&#160;&#160;&#160;&#160; 在JBuilder2008和2009里面好像要好找一点(没有实践过,因为我电脑上没装@_@)</span></p>
<span style="font-size: 12pt"> </span>
<p><span style="font-size: 12pt">&#160;&#160;&#160;&#160; Wizards--&gt;Archive Builder</span></p>
<span style="font-size: 12pt"> </span>
<p><span style="font-size: 12pt">&#160; &#160;&#160; 附上操作指导文档,希望碰到同样问题的朋友能尽快解决.<a href="http://www.cnblogs.com/Files/xlwei/j2se_jar.doc" tabindex="-1">http://www.cnblogs.com/Files/xlwei/j2se_jar.doc</a></span></p>
</blockquote> 
<img src ="http://www.cnblogs.com/xlwei/aggbug/1212705.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41310/" target="_blank">[新闻]AOL将关闭3个网站以降低成本 集中发力广告</a>]]></description></item><item><title>后知后觉</title><link>http://www.cnblogs.com/xlwei/archive/2008/05/25/1206940.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Sun, 25 May 2008 08:20:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/05/25/1206940.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1206940.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/05/25/1206940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1206940.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1206940.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;前两天逛博客园的时候才发现有人推荐微软的<span style="font-weight: bold; color: black">MSDN Code Gallery</span>。<br />
&nbsp;&nbsp;&nbsp;&nbsp;刚开始学习.NET的时候学长还推荐了一个开源网站--codeplex(<a href="http://www.codeplex.com/">http://www.codeplex.com/</a>)。<br />
&nbsp;&nbsp;&nbsp;&nbsp;看书看的有点厌了，还是迫切的想能在项目中锻炼自己。<br />
&nbsp;&nbsp;&nbsp;&nbsp;找个持续更新的项目，跟着别人一起学习，希望这样能进步的更块。<br />
&nbsp;&nbsp;&nbsp;&nbsp;</p>
<img src ="http://www.cnblogs.com/xlwei/aggbug/1206940.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41309/" target="_blank">[新闻]谷歌网页索引数量突破1万亿个</a>]]></description></item><item><title>对象的散列码</title><link>http://www.cnblogs.com/xlwei/archive/2008/04/26/1172278.html</link><dc:creator>谢良威</dc:creator><author>谢良威</author><pubDate>Sat, 26 Apr 2008 08:42:00 GMT</pubDate><guid>http://www.cnblogs.com/xlwei/archive/2008/04/26/1172278.html</guid><wfw:comment>http://www.cnblogs.com/xlwei/comments/1172278.html</wfw:comment><comments>http://www.cnblogs.com/xlwei/archive/2008/04/26/1172278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xlwei/comments/commentRss/1172278.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xlwei/services/trackbacks/1172278.html</trackback:ping><description><![CDATA[<p>　　在前一篇读书笔记里已经提过，如果我们定义的一个类型只重写了Equals而没有重写GetHashCode方法时编译器会发出警告信息。<br />
<br />
　　一个类型为什么要同时重写Equals方法和GetHashCode方法？这是因为System.Collections.Hashtable类型的实现要求任何两个相等的对象都必须有相同的散列码值。即GetHashCode的行为依赖于Equals方法进行判断。所以，如果我们重写了Equals方法，也应该（必须）重写GetHashCode方法以确保用来判等的算法和用来计算对象散列码的算法一致。<br />
<br />
　　基本上来讲，当我们向一个Hashtable对象中添加一个&#8220;键/值对&#8221;时，其中&#8220;键对象&#8221;的散列码会首先被获取。该散列码指出了&#8220;键/值对&#8221;应该被存储在哪个&#8220;散列桶&#8221;中。当Hashtable对象需要查找某个&#8220;键&#8221;时，它会取得指定的&#8220;键对象&#8221;散列码。然后在该散列码所标识的那个&#8220;散列桶&#8221;中进一步查找和指定的&#8220;键对象&#8221;相等的&#8220;键对象&#8221;。使用这种存储和搜索的&#8220;键&#8221;算法意味着如果我们改变了Hashtable中的一个&#8220;键对象&#8221;，我们在Hashtable中将不能再找到该对象。如果我们改变一个散列表中的&#8220;键对象&#8221;，我们应该首先删除原来的&#8220;键/值对&#8221;，然后改变&#8220;键对象&#8221;，最后再将新的&#8220;键/值对&#8221;添加到散列表中。<br />
<br />
　　System.Object中实现的GetHashCode方法对于它的派生类型及其内的字段一无所知。出于这个原因，Object的GetHashCode方法返回的是一个在应用程序域范围内确保唯一的数值。该数值在整个生命周期中保证不会改变。但是，在对象被执行垃圾收集后，这个唯一的数值可以被重新利用作为一个新的对象的散列码。<br />
<br />
　　System.ValueType中实现的GetHashCode方法使用反射来返回定义在类型中第一个实例字段的散列码。这个简单的实现对于某些值类型来说可能已经够用，但是还是建议最好提供自己的实现。即使我们实现的算法同样返回一个实例字段的散列码，我们的实现也要比ValueType中实现的快一些（why?因为是直接调用的缘故？）下面是ValueType中实现的GetHashCode方法：<br />
&nbsp;&nbsp;&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ValueType<br />
<img id="Codehighlighter1_19_514_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_19_514_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_19_514_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_19_514_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_19_514_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_19_514_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_19_514_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_19_514_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_19_514_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_19_514_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;Int32&nbsp;GetHashCode()<br />
<img id="Codehighlighter1_72_509_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_72_509_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_72_509_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_72_509_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_72_509_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_72_509_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_72_509_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_72_509_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_72_509_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_72_509_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FieldInfo[]&nbsp;fields&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.GetType().GetFields(BindingFlags.Instance&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;BindingFlags.Public&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;BindingFlags.NonPublic);&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(fields.Length&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_234_425_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_234_425_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_234_425_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_234_425_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_234_425_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_234_425_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_234_425_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_234_425_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_234_425_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_234_425_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(Int32&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;fields.Length;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_291_418_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_291_418_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_291_418_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_291_418_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_291_418_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_291_418_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_291_418_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_291_418_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_291_418_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_291_418_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fields[i].GetValue(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;obj)<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;obj.GetHashCode();<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果没有非空字段，为其返回一个与类型相关的唯一值</span><span style="color: #008000"><br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;GetMethodTablePtrAsInt(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span></div>
<p>&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; &nbsp; 如果我们因为某种原因要实现自己的散列表集合，或者编写的任何代码中调用了GetHashCode方法，我们都不应该持久化(persist)散列码值。原因是散列码值可能会改变。例如，一个类型的下一个版本可能会使用不同的算法来计算对象的散列码。 <br />
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp; 选择计算类型实例的散列码算法时，我们应该尽力遵循以下原则： <br />
<p><br />
&nbsp;&nbsp; １、算法应该使所得的数值有一个良好的随机分布，这样散列表可以获得最佳的性能。<br />
<br />
&nbsp;&nbsp; ２、算法还可以调用基类型的GetHashCode方法，并将其返回值包含在我们的算法中。但在一般情况下，我们不应该调用Object或ValueType的GetHashCode方法，因为这两个类型的GetHashCode方法实现都不会获得高性能的　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 散列算法。<br />
<br />
&nbsp;&nbsp; ３、算法应该至少使用一个实例字段（以确保唯一性？）。<br />
<br />
&nbsp;&nbsp; ４、理想情况下，我们在算法中使用的字段都应该是恒定不变的；也就是说在构造对象时字段被初始化后，它们就不&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应该再在对象的生存周期内有任何改变。<br />
<br />
&nbsp;&nbsp; ５、算法应该执行的尽可能快。<br />
<br />
&nbsp;&nbsp; ６、有着相同值的对象应该返回相同的散列码。例如，两个有着相同文本的String对象应该返回相同的散列码值</p>
<img src ="http://www.cnblogs.com/xlwei/aggbug/1172278.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41308/" target="_blank">[新闻]预装 Ubuntu 8.04 的 Dell 笔记本发售</a>]]></description></item></channel></rss>