<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>小黑米的生活</title>
	<atom:link href="http://edwardhey.webbeb.com/feed" rel="self" type="application/rss+xml" />
	<link>http://edwardhey.webbeb.com</link>
	<description>又一个 WordPress 博客</description>
	<lastBuildDate>Tue, 31 Aug 2010 04:16:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>链队列</title>
		<link>http://edwardhey.webbeb.com/themes/1127</link>
		<comments>http://edwardhey.webbeb.com/themes/1127#comments</comments>
		<pubDate>Tue, 31 Aug 2010 04:15:55 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[算法研究]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1127</guid>
		<description><![CDATA[额,今天的是链队列~ 命令行运行输出效果如下: 将10入队 将20入队 &#160; 打印此队列: 10-&#62;20-&#62;NULL &#160; 将30入队 &#160; 打印此队列: 10-&#62;20-&#62;30-&#62;NULL &#160; 弹出10 弹出20 &#160; 打印此队列: 30-&#62;NULL &#160; 弹出30 &#160; 打印此队列: NULL &#160; 将40入队 &#160; 打印此队列: 40-&#62;NULL 下面是源码 /** * 链队列 */ typedef int Elemtype; &#160; /** * 队列节点 */ typedef&#160;struct LQNode { &#160; &#160; Elemtype&#160;data; &#160; &#160; struct&#160;LQNode *next; }LQNode,*LinkedQNode; &#160; /** * [...]]]></description>
			<content:encoded><![CDATA[<p>额,今天的是链队列~</p>
<p>命令行运行输出效果如下:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">将10入队</li>
<li>将20入队</li>
<li>&nbsp;</li>
<li>打印此队列:</li>
<li>10-&gt;20-&gt;NULL</li>
<li>&nbsp;</li>
<li>将30入队</li>
<li>&nbsp;</li>
<li>打印此队列:</li>
<li>10-&gt;20-&gt;30-&gt;NULL</li>
<li>&nbsp;</li>
<li>弹出10</li>
<li>弹出20</li>
<li>&nbsp;</li>
<li>打印此队列:</li>
<li>30-&gt;NULL</li>
<li>&nbsp;</li>
<li>弹出30</li>
<li>&nbsp;</li>
<li>打印此队列:</li>
<li>NULL</li>
<li>&nbsp;</li>
<li>将40入队</li>
<li>&nbsp;</li>
<li>打印此队列:</li>
<li>40-&gt;NULL</li></ol></div>
<p>下面是源码</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 链队列</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-types">typedef</span><span style="color: Gray;"> </span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">Elemtype</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 队列节点</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-types">typedef</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">LQNode</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">Elemtype</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">struct</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">LQNode</span><span style="color: Gray;"> *</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Blue;">LQNode</span><span style="color: Gray;">,*</span><span style="color: Blue;">LinkedQNode</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 队列头和尾节点</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-types">typedef</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">struct</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">front</span><span style="color: Gray;">,</span><span style="color: Blue;">rear</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Blue;">LQueue</span><span style="color: Gray;">,*</span><span style="color: Blue;">LinkedQueue</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 链队初始化</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span style="color: Blue;">LinkedQueue</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">LinkedQueueInit</span><span style="color: Olive;">(</span><span class="hl-types">void</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueue</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Q</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">n</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">Q</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span style="color: Blue;">LinkedQueue</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">malloc</span><span style="color: Olive;">(</span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">LQueue</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">n</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span style="color: Blue;">LinkedQNode</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">malloc</span><span style="color: Olive;">(</span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">LQNode</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">n</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span class="hl-prepro">NULL</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">Q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;"> = </span><span style="color: Blue;">Q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Gray;"> = </span><span style="color: Blue;">n</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Q</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 打印整个队列</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">LinkedQueueDump</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkedQueue</span><span style="color: Gray;"> </span><span style="color: Blue;">q</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\</span><span style="color: Red;">n打印此队列:</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tmp</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">tmp</span><span style="color: Gray;"> = </span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">tmp</span><span style="color: Gray;">!=</span><span class="hl-prepro">NULL</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%d-&gt;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">tmp</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">tmp</span><span style="color: Gray;"> = </span><span style="color: Blue;">tmp</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">NULL</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 入队</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">LinkedQueueIn</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkedQueue</span><span style="color: Gray;"> </span><span style="color: Blue;">q</span><span style="color: Gray;">,</span><span style="color: Blue;">Elemtype</span><span style="color: Gray;"> </span><span style="color: Blue;">data</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tmp</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span style="color: Blue;">LinkedQNode</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">malloc</span><span style="color: Olive;">(</span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">LQNode</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">tmp</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Gray;"> = </span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">tmp</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span class="hl-prepro">NULL</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">tmp</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//原来的尾节点指向新节点</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Gray;"> = </span><span style="color: Blue;">tmp</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//指针指向刚加的节点</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">将%d入队</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">data</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 出队</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span style="color: Blue;">Elemtype</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">LinkedQueueOut</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkedQueue</span><span style="color: Gray;"> </span><span style="color: Blue;">q</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//判断队列不为空</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;">==</span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">err</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">队列为空了!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">Elemtype</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tmp</span><span style="color: Gray;"> = </span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">tmp</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">x</span><span style="color: Gray;"> = </span><span style="color: Blue;">tmp</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">free</span><span style="color: Olive;">(</span><span style="color: Blue;">tmp</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">==</span><span class="hl-prepro">NULL</span><span style="color: Olive;">){</span><span style="color: #ffa500;">//因为入队的时候,rear增加,所以最后一个出队的时候,头指针指向NULL,需要把尾指针和头指针指向同一地址</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Gray;"> = </span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">弹出%d</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">x</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">argc</span><span style="color: Gray;">, </span><span class="hl-types">char</span><span style="color: Gray;"> **</span><span style="color: Blue;">argv</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueue</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">q</span><span style="color: Gray;"> = </span><span style="color: Blue;">LinkedQueueInit</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueIn</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Gray;">,</span><span style="color: Maroon;">10</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueIn</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Gray;">,</span><span style="color: Maroon;">20</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueDump</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueIn</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Gray;">,</span><span style="color: Maroon;">30</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueDump</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueOut</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueOut</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueDump</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueOut</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueDump</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueIn</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Gray;">,</span><span style="color: Maroon;">40</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkedQueueDump</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1127/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>队列</title>
		<link>http://edwardhey.webbeb.com/themes/1124</link>
		<comments>http://edwardhey.webbeb.com/themes/1124#comments</comments>
		<pubDate>Mon, 30 Aug 2010 08:20:40 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[算法研究]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1124</guid>
		<description><![CDATA[此次是队列~ FIFO~ /** * 队列 */ &#160; #define&#160;MAXSIZE 100 #define MODCAL(x) x%100 &#160; &#160; typedef&#160;struct { &#160; &#160; int&#160;data[MAXSIZE]; &#160; &#160; int&#160;front,rear; }&#160;SeqQueue; &#160; &#160; SeqQueue&#160;SeqQueueInit(void){ &#160; &#160; SeqQueue&#160;Q; &#160; &#160; Q.rear=Q.front=0; &#160; &#160; return&#160;Q; } &#160; int&#160;SeqQueueFull(SeqQueue *p){ &#160; &#160; if(MODCAL(p-&#62;rear+1)==p-&#62;front)&#160;return 1; &#160; &#160; else&#160;return 0; } &#160; int&#160;SeqQueueEmpty(SeqQueue *p){ &#160; &#160; if(p-&#62;rear==p-&#62;front)&#160;return 1; [...]]]></description>
			<content:encoded><![CDATA[<p>此次是队列~ FIFO~</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 队列</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-prepro">#define</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">MAXSIZE</span><span style="color: Gray;"> </span><span style="color: Maroon;">100</span><span class="hl-prepro"></span></li>
<li><span class="hl-prepro">#define</span><span style="color: Gray;"> </span><span style="color: Blue;">MODCAL</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">x</span><span style="color: Gray;">%</span><span style="color: Maroon;">100</span><span class="hl-prepro"></span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">typedef</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">data</span><span style="color: Olive;">[</span><span style="color: Blue;">MAXSIZE</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">front</span><span style="color: Gray;">,</span><span style="color: Blue;">rear</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SeqQueue</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">SeqQueue</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SeqQueueInit</span><span style="color: Olive;">(</span><span class="hl-types">void</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">SeqQueue</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Q</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">Q</span><span style="color: Gray;">.</span><span style="color: Blue;">rear</span><span style="color: Gray;">=</span><span style="color: Blue;">Q</span><span style="color: Gray;">.</span><span style="color: Blue;">front</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Q</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SeqQueueFull</span><span style="color: Olive;">(</span><span style="color: Blue;">SeqQueue</span><span style="color: Gray;"> *</span><span style="color: Blue;">p</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">MODCAL</span><span style="color: Olive;">(</span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">==</span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SeqQueueEmpty</span><span style="color: Olive;">(</span><span style="color: Blue;">SeqQueue</span><span style="color: Gray;"> *</span><span style="color: Blue;">p</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Gray;">==</span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SeqQueueOut</span><span style="color: Olive;">(</span><span style="color: Blue;">SeqQueue</span><span style="color: Gray;"> *</span><span style="color: Blue;">p</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">SeqQueueEmpty</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">p</span><span style="color: Gray;"> </span><span style="color: Olive;">)){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">err</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">队列空了!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;"> = </span><span style="color: Blue;">MODCAL</span><span style="color: Olive;">(</span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">x</span><span style="color: Gray;"> = </span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Olive;">[</span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%d 出队了</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">x</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SeqQueueIn</span><span style="color: Olive;">(</span><span style="color: Blue;">SeqQueue</span><span style="color: Gray;"> *</span><span style="color: Blue;">q</span><span style="color: Gray;">,</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">data</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">SeqQueueFull</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Olive;">)){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">err</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">队列满了!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Gray;">=</span><span style="color: Blue;">MODCAL</span><span style="color: Olive;">(</span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Olive;">[</span><span style="color: Blue;">q</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Blue;">SeqQueue</span><span style="color: Gray;"> *</span><span style="color: Blue;">p</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">当前队列情况:</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tmp</span><span style="color: Gray;"> = </span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">rear</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">front</span><span style="color: Gray;">!=</span><span style="color: Blue;">tmp</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;-%d</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">p</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Olive;">[</span><span style="color: Blue;">tmp</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">tmp</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Blue;">tmp</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">%</span><span style="color: Blue;">MAXSIZE</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">argc</span><span style="color: Gray;">, </span><span class="hl-types">char</span><span style="color: Gray;"> **</span><span style="color: Blue;">argv</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">SeqQueue</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">q</span><span style="color: Gray;"> = </span><span style="color: Blue;">SeqQueueInit</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">SeqQueueIn</span><span style="color: Olive;">(</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">q</span><span style="color: Gray;">,</span><span style="color: Maroon;">10</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">SeqQueueIn</span><span style="color: Olive;">(</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">q</span><span style="color: Gray;">,</span><span style="color: Maroon;">20</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">SeqQueueOut</span><span style="color: Olive;">(</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">q</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>运行后输出以下信息</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">当前队列情况:</li>
<li>当前队列情况:&lt;-20&lt;-10</li>
<li>10 出队了</li>
<li>当前队列情况:&lt;-20</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1124/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>汉诺塔(栈,递归)</title>
		<link>http://edwardhey.webbeb.com/themes/1117</link>
		<comments>http://edwardhey.webbeb.com/themes/1117#comments</comments>
		<pubDate>Thu, 26 Aug 2010 07:58:25 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[算法研究]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1117</guid>
		<description><![CDATA[汉诺塔问题~ 想了想,根据算法书籍完成 使用栈以及递归完成 是使用数组作为栈的数据区还是使用链作为栈的数据区,我认为这个是根据数据的变动频率作为参考依据,如果变动很频繁或有移动的操作,我认为应该考虑使用链,因为链的节点移动对数据产生的波动比较小,以下盘子在x,y,z柱子之间移动511次全部都是指针的计算,效率还不错~ 当然要自己释放和管理内存了~ /** * 汉诺塔程序 */ #define LINKNODEINIT() (LinkNode) malloc(sizeof(Node)); #define PANZI 9 //盘子数量 &#160; typedef&#160;struct Node{ &#160; &#160; int&#160;data; &#160; &#160; struct&#160;Node *next; }Node, *LinkNode; &#160; int&#160;step = 0; &#160; /** * 初始化节点 */ LinkNode&#160;linkedStackInit(void){ &#160; &#160; LinkNode&#160;l=LINKNODEINIT(); &#160; &#160; if(l==NULL)&#160;err(&#34;malloc error!&#34;); &#160; &#160; l-&#62;next = NULL; &#160; &#160; return&#160;l; } [...]]]></description>
			<content:encoded><![CDATA[<p>汉诺塔问题~ 想了想,根据算法书籍完成<br />
使用栈以及递归完成</p>
<p>是使用数组作为栈的数据区还是使用链作为栈的数据区,我认为这个是根据数据的变动频率作为参考依据,如果变动很频繁或有移动的操作,我认为应该考虑使用链,因为链的节点移动对数据产生的波动比较小,以下盘子在x,y,z柱子之间移动511次全部都是指针的计算,效率还不错~ 当然要自己释放和管理内存了~ </p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 汉诺塔程序</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-prepro">#define</span><span style="color: Gray;"> </span><span style="color: Blue;">LINKNODEINIT</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">LinkNode</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">malloc</span><span style="color: Olive;">(</span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">Node</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span><span class="hl-prepro"></span></li>
<li><span class="hl-prepro">#define</span><span style="color: Gray;"> </span><span style="color: Blue;">PANZI</span><span style="color: Gray;"> </span><span style="color: Maroon;">9</span><span style="color: Gray;"> </span><span style="color: #ffa500;">//盘子数量</span><span class="hl-prepro"></span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">typedef</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">Node</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">struct</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Node</span><span style="color: Gray;"> *</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Blue;">Node</span><span style="color: Gray;">, *</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">step</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 初始化节点</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">linkedStackInit</span><span style="color: Olive;">(</span><span class="hl-types">void</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">l</span><span style="color: Gray;">=</span><span style="color: Blue;">LINKNODEINIT</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">l</span><span style="color: Gray;">==</span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">err</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">malloc error!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">l</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span class="hl-prepro">NULL</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">l</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 插入节点</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">linkedStackInsert</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">s</span><span style="color: Gray;">,</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">data</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">l</span><span style="color: Gray;"> = </span><span style="color: Blue;">LINKNODEINIT</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">l</span><span style="color: Gray;">==</span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">err</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">malloc error!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">l</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">l</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Gray;"> = </span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">l</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 把节点打印出来</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">s</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">!=</span><span class="hl-prepro">NULL</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;">=</span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Blue;">s</span><span style="color: Gray;">!=</span><span class="hl-prepro">NULL</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%d</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;">=</span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 把s柱的盘子移动到t柱上</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">hanoiMove</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">s</span><span style="color: Gray;">,</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">t</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//判断s柱是否为空</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">==</span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">err</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">被移动的柱子没有盘子!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tmpS</span><span style="color: Gray;">,</span><span style="color: Blue;">tmpT</span><span style="color: Gray;">,</span><span style="color: Blue;">tmpSS</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">tmpSS</span><span style="color: Gray;"> = </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">tmpS</span><span style="color: Gray;"> = </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">tmpT</span><span style="color: Gray;"> = </span><span style="color: Blue;">t</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">t</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">tmpS</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">tmpS</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">tmpT</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">tmpSS</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">step</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment"> * 核心算法:</span></li>
<li><span class="hl-mlcomment"> * 其实就是两个盘子在不停的移动,每次取两个盘子(大小),就有如下规则,先移动小盘,让其以y柱作为辅助,从x柱移动到z柱,然后移动大盘,从x柱移动到z柱子,再把小盘以x柱为辅助,从y柱移动到z柱上,这样小盘就在大盘上面了~</span></li>
<li><span class="hl-mlcomment"> *</span></li>
<li><span class="hl-mlcomment"> * 实现是使用链栈,然后移动节点完成</span></li>
<li><span class="hl-mlcomment"> *</span></li>
<li><span class="hl-mlcomment"> */</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">hanoi</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">n</span><span style="color: Gray;">,</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">x</span><span style="color: Gray;">,</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">y</span><span style="color: Gray;">,</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">z</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">n</span><span style="color: Gray;">==</span><span style="color: Maroon;">1</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">hanoiMove</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">,</span><span style="color: Blue;">z</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">hanoi</span><span style="color: Olive;">(</span><span style="color: Blue;">n</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Gray;">,</span><span style="color: Blue;">x</span><span style="color: Gray;">,</span><span style="color: Blue;">z</span><span style="color: Gray;">,</span><span style="color: Blue;">y</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">hanoiMove</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">,</span><span style="color: Blue;">z</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">hanoi</span><span style="color: Olive;">(</span><span style="color: Blue;">n</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Gray;">,</span><span style="color: Blue;">y</span><span style="color: Gray;">,</span><span style="color: Blue;">x</span><span style="color: Gray;">,</span><span style="color: Blue;">z</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">argc</span><span style="color: Gray;">, </span><span class="hl-types">char</span><span style="color: Gray;"> **</span><span style="color: Blue;">argv</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//初始化汉诺塔</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;"> = </span><span style="color: Blue;">linkedStackInit</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">y</span><span style="color: Gray;"> = </span><span style="color: Blue;">linkedStackInit</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">z</span><span style="color: Gray;"> = </span><span style="color: Blue;">linkedStackInit</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Blue;">PANZI</span><span style="color: Gray;">;</span><span style="color: Blue;">i</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span><span style="color: Blue;">i</span><span style="color: Gray;">--</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">linkedStackInsert</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">,</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">x的盘子:</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">hanoi</span><span style="color: Olive;">(</span><span style="color: Blue;">PANZI</span><span style="color: Gray;">,</span><span style="color: Blue;">x</span><span style="color: Gray;">,</span><span style="color: Blue;">y</span><span style="color: Gray;">,</span><span style="color: Blue;">z</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\</span><span style="color: Red;">n移动了%d次后</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">step</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">x的盘子:</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">z的盘子:</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Blue;">z</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>运行后结果如下:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">x的盘子:</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>&nbsp;</li>
<li>移动了511次后</li>
<li>&nbsp;</li>
<li>x的盘子:</li>
<li>z的盘子:</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1117/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>链栈</title>
		<link>http://edwardhey.webbeb.com/themes/1110</link>
		<comments>http://edwardhey.webbeb.com/themes/1110#comments</comments>
		<pubDate>Wed, 25 Aug 2010 04:58:22 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[算法研究]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1110</guid>
		<description><![CDATA[链栈其实就是单链表使用头插法~ 呵呵~ 记得四则运算法则不?原来可以通过栈来完成的~ 下面代码: typedef struct Node{ &#160; &#160; int&#160;data; &#160; &#160; struct&#160;Node *next; }Node, *LinkNode; &#160; #define&#160;LINKNODEINIT() (LinkNode) malloc(sizeof(Node)); &#160; LinkNode&#160;init(void){ &#160; &#160; LinkNode&#160;l=LINKNODEINIT(); &#160; &#160; if(l==NULL)&#160;err(&#34;malloc error!&#34;); &#160; &#160; l-&#62;next = NULL; &#160; &#160; return&#160;l; } &#160; void&#160;insert(LinkNode s,int data){ &#160; &#160; &#160; LinkNode&#160;l = LINKNODEINIT(); &#160; &#160; if(l==NULL)&#160;err(&#34;malloc error!&#34;); &#160; &#160; l-&#62;next [...]]]></description>
			<content:encoded><![CDATA[<p>链栈其实就是单链表使用头插法~ 呵呵~ </p>
<p>记得四则运算法则不?原来可以通过栈来完成的~</p>
<p>下面代码:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span class="hl-types">typedef</span><span style="color: Gray;"> </span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">Node</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">struct</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Node</span><span style="color: Gray;"> *</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Blue;">Node</span><span style="color: Gray;">, *</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-prepro">#define</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">LINKNODEINIT</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">LinkNode</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">malloc</span><span style="color: Olive;">(</span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">Node</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span><span class="hl-prepro"></span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">init</span><span style="color: Olive;">(</span><span class="hl-types">void</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">l</span><span style="color: Gray;">=</span><span style="color: Blue;">LINKNODEINIT</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">l</span><span style="color: Gray;">==</span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">err</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">malloc error!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">l</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span class="hl-prepro">NULL</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">l</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">insert</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">s</span><span style="color: Gray;">,</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">data</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">l</span><span style="color: Gray;"> = </span><span style="color: Blue;">LINKNODEINIT</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">l</span><span style="color: Gray;">==</span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">err</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">malloc error!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">l</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">l</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Gray;"> = </span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">l</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">top</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">s</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> == </span><span class="hl-prepro">NULL</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cal</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">x</span><span style="color: Gray;">,</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">y</span><span style="color: Gray;">,</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">op</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">switch</span><span style="color: Olive;">(</span><span style="color: Blue;">op</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;"> '+':</span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">+</span><span style="color: Blue;">y</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;"> '-':</span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">-</span><span style="color: Blue;">y</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;"> '*':</span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">*</span><span style="color: Blue;">y</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;"> '/':</span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">/</span><span style="color: Blue;">y</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">default</span><span style="color: Gray;">:</span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">pop</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">s</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">==</span><span class="hl-prepro">NULL</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">err</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">link stack empty!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">x</span><span style="color: Gray;"> = </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tmp</span><span style="color: Gray;"> = </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;"> = </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">free</span><span style="color: Olive;">(</span><span style="color: Blue;">tmp</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">tmp</span><span style="color: Gray;"> = </span><span class="hl-prepro">NULL</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Blue;">LinkNode</span><span style="color: Gray;"> </span><span style="color: Blue;">s</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;"> = </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Blue;">s</span><span style="color: Gray;">!=</span><span class="hl-prepro">NULL</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%d</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">data</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;"> = </span><span style="color: Blue;">s</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">next</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">precede</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">,</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">y</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">=='#'</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> '&lt;';</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">y</span><span style="color: Gray;">=='#'</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;"> '&gt;';</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">y</span><span style="color: Gray;">=='</span><span style="color: Olive;">(</span><span style="color: Gray;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;"> '&lt;';</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">=='</span><span style="color: Olive;">(</span><span style="color: Gray;">'&amp;&amp;</span><span style="color: Blue;">y</span><span style="color: Gray;">=='</span><span style="color: Olive;">)</span><span style="color: Gray;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;"> '=';</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">!='</span><span style="color: Olive;">(</span><span style="color: Gray;">'&amp;&amp;</span><span style="color: Blue;">y</span><span style="color: Gray;">=='</span><span style="color: Olive;">)</span><span style="color: Gray;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;"> '&gt;';</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">y</span><span style="color: Gray;">=='+'||</span><span style="color: Blue;">y</span><span style="color: Gray;">=='-'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">!='*'||</span><span style="color: Blue;">i</span><span style="color: Gray;">!='/'</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> '&lt;';</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> '&gt;';</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">y</span><span style="color: Gray;">=='*'||</span><span style="color: Blue;">y</span><span style="color: Gray;">=='/'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">!='*'||</span><span style="color: Blue;">i</span><span style="color: Gray;">!='/'</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> '&lt;';</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> '&gt;';</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">argc</span><span style="color: Gray;">, </span><span class="hl-types">char</span><span style="color: Gray;"> **</span><span style="color: Blue;">argv</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">optr</span><span style="color: Gray;"> = </span><span style="color: Blue;">init</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">insert</span><span style="color: Olive;">(</span><span style="color: Blue;">optr</span><span style="color: Gray;">,'#'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">LinkNode</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">opch</span><span style="color: Gray;"> = </span><span style="color: Blue;">init</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">s</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">2+3*(2+5*(6/1))#</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">((</span><span style="color: Blue;">s</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">!='#'</span><span style="color: Olive;">)</span><span style="color: Gray;">||</span><span style="color: Blue;">top</span><span style="color: Olive;">(</span><span style="color: Blue;">optr</span><span style="color: Olive;">)</span><span style="color: Gray;">!='#'</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">s</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">&gt;='</span><span style="color: Maroon;">0</span><span style="color: Gray;">' &amp;&amp; </span><span style="color: Blue;">s</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">&lt;='</span><span style="color: Maroon;">9</span><span style="color: Gray;">'</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">insert to opch:%d</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">-</span><span style="color: Maroon;">48</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">insert</span><span style="color: Olive;">(</span><span style="color: Blue;">opch</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">-</span><span style="color: Maroon;">48</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">i</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">switch</span><span style="color: Olive;">(</span><span style="color: Blue;">precede</span><span style="color: Olive;">(</span><span style="color: Blue;">top</span><span style="color: Olive;">(</span><span style="color: Blue;">optr</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;"> '&lt;':</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">insert</span><span style="color: Olive;">(</span><span style="color: Blue;">optr</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">insert to optr:%c</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">i</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;"> '=':</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">pop</span><span style="color: Olive;">(</span><span style="color: Blue;">optr</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">pop from optr:%c</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">i</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;"> '&gt;':</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">insert</span><span style="color: Olive;">(</span><span style="color: Blue;">opch</span><span style="color: Gray;">,</span><span style="color: Blue;">cal</span><span style="color: Olive;">(</span><span style="color: Blue;">pop</span><span style="color: Olive;">(</span><span style="color: Blue;">opch</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Blue;">pop</span><span style="color: Olive;">(</span><span style="color: Blue;">opch</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Blue;">pop</span><span style="color: Olive;">(</span><span style="color: Blue;">optr</span><span style="color: Olive;">)))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//optr 出栈,一直到optr栈顶为#为止</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dump</span><span style="color: Olive;">(</span><span style="color: Blue;">opch</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1110/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>终于开始了MAC编程</title>
		<link>http://edwardhey.webbeb.com/themes/1097</link>
		<comments>http://edwardhey.webbeb.com/themes/1097#comments</comments>
		<pubDate>Fri, 30 Jul 2010 01:12:26 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[object-c]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1097</guid>
		<description><![CDATA[RT,呵呵~ 经过几天的折磨后可以开始简单Object-c了~ 哈哈~ 和web编程完全不一样,要非常小心内存泄露问题~]]></description>
			<content:encoded><![CDATA[<p>RT,呵呵~ 经过几天的折磨后可以开始简单Object-c了~ 哈哈~</p>
<p><img src="http://farm5.static.flickr.com/4084/4842507926_5b71a1c961_b.jpg" alt=""   width="100%"/></p>
<p>和web编程完全不一样,要非常小心内存泄露问题~ </p>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1097/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>工作三年写过最长的一条SQL</title>
		<link>http://edwardhey.webbeb.com/themes/1082</link>
		<comments>http://edwardhey.webbeb.com/themes/1082#comments</comments>
		<pubDate>Fri, 16 Jul 2010 02:00:40 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1082</guid>
		<description><![CDATA[作用是推荐好友的~ 范围是好友的好友(即2度)合并谁订阅过我的人~ SELECT ma.uid,COUNT(1) AS p FROM match_ea ea LEFT JOIN match_ma ma ON ea.qid=ma.qid AND ea.aid=ma.aid&#160; INNER&#160;JOIN ( &#160; &#160; SELECT&#160;DISTINCT uid FROM ( &#160; &#160; SELECT&#160;DISTINCT uid FROM friend WHERE fuid IN (SELECT fuid FROM friend WHERE uid=121 AND STATUS=1) &#160; &#160; UNION&#160;SELECT uid FROM follow WHERE fuid=121 )&#160;b&#160; &#160; &#160; WHERE&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>作用是推荐好友的~ 范围是好友的好友(即2度)合并谁订阅过我的人~</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">SELECT</span><span style="color: Gray;"> </span><span style="color: Blue;">ma</span><span style="color: Gray;">.</span><span style="color: Blue;">uid</span><span style="color: Gray;">,</span><span style="color: #00008b;">COUNT</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">AS</span><span style="color: Gray;"> </span><span style="color: Blue;">p</span><span style="color: Gray;"> </span><span style="color: Green;">FROM</span><span style="color: Gray;"> </span><span style="color: Blue;">match_ea</span><span style="color: Gray;"> </span><span style="color: Blue;">ea</span><span style="color: Gray;"> </span><span style="color: Green;">LEFT</span><span style="color: Gray;"> </span><span style="color: Green;">JOIN</span><span style="color: Gray;"> </span><span style="color: Blue;">match_ma</span><span style="color: Gray;"> </span><span style="color: Blue;">ma</span><span style="color: Gray;"> </span><span style="color: Green;">ON</span><span style="color: Gray;"> </span><span style="color: Blue;">ea</span><span style="color: Gray;">.</span><span style="color: Blue;">qid</span><span style="color: Gray;">=</span><span style="color: Blue;">ma</span><span style="color: Gray;">.</span><span style="color: Blue;">qid</span><span style="color: Gray;"> </span><span style="color: Green;">AND</span><span style="color: Gray;"> </span><span style="color: Blue;">ea</span><span style="color: Gray;">.</span><span style="color: Blue;">aid</span><span style="color: Gray;">=</span><span style="color: Blue;">ma</span><span style="color: Gray;">.</span><span style="color: Blue;">aid</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">INNER</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">JOIN</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">SELECT</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">DISTINCT</span><span style="color: Gray;"> </span><span style="color: Blue;">uid</span><span style="color: Gray;"> </span><span style="color: Green;">FROM</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">SELECT</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">DISTINCT</span><span style="color: Gray;"> </span><span style="color: Blue;">uid</span><span style="color: Gray;"> </span><span style="color: Green;">FROM</span><span style="color: Gray;"> </span><span style="color: Blue;">friend</span><span style="color: Gray;"> </span><span style="color: Green;">WHERE</span><span style="color: Gray;"> </span><span style="color: Blue;">fuid</span><span style="color: Gray;"> </span><span style="color: Green;">IN</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">SELECT</span><span style="color: Gray;"> </span><span style="color: Blue;">fuid</span><span style="color: Gray;"> </span><span style="color: Green;">FROM</span><span style="color: Gray;"> </span><span style="color: Blue;">friend</span><span style="color: Gray;"> </span><span style="color: Green;">WHERE</span><span style="color: Gray;"> </span><span style="color: Blue;">uid</span><span style="color: Gray;">=</span><span style="color: Maroon;">121</span><span style="color: Gray;"> </span><span style="color: Green;">AND</span><span style="color: Gray;"> </span><span style="color: Blue;">STATUS</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">UNION</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">SELECT</span><span style="color: Gray;"> </span><span style="color: Blue;">uid</span><span style="color: Gray;"> </span><span style="color: Green;">FROM</span><span style="color: Gray;"> </span><span style="color: Blue;">follow</span><span style="color: Gray;"> </span><span style="color: Green;">WHERE</span><span style="color: Gray;"> </span><span style="color: Blue;">fuid</span><span style="color: Gray;">=</span><span style="color: Maroon;">121</span></li>
<li><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">b</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">WHERE</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">NOT</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">EXISTS</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">SELECT</span><span style="color: Gray;"> </span><span style="color: Green;">NULL</span><span style="color: Gray;"> </span><span style="color: Green;">FROM</span><span style="color: Gray;"> </span><span style="color: Blue;">friend</span><span style="color: Gray;"> </span><span style="color: Green;">WHERE</span><span style="color: Gray;"> </span><span style="color: Blue;">uid</span><span style="color: Gray;">=</span><span style="color: Maroon;">121</span><span style="color: Gray;"> </span><span style="color: Green;">AND</span><span style="color: Gray;"> </span><span style="color: Blue;">fuid</span><span style="color: Gray;">=</span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">uid</span><span style="color: Gray;"> </span><span style="color: Green;">AND</span><span style="color: Gray;"> </span><span style="color: Blue;">STATUS</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">c</span><span style="color: Gray;"> </span><span style="color: Green;">ON</span><span style="color: Gray;"> </span><span style="color: #00008b;">c</span><span style="color: Gray;">.</span><span style="color: Blue;">uid</span><span style="color: Gray;">=</span><span style="color: Blue;">ma</span><span style="color: Gray;">.</span><span style="color: Blue;">uid</span></li>
<li><span style="color: Green;">WHERE</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">ea</span><span style="color: Gray;">.</span><span style="color: Blue;">uid</span><span style="color: Gray;">=</span><span style="color: Maroon;">121</span></li>
<li><span style="color: Green;">GROUP</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">BY</span><span style="color: Gray;"> </span><span style="color: Blue;">uid</span><span style="color: Gray;"> </span><span style="color: Green;">ORDER</span><span style="color: Gray;"> </span><span style="color: Green;">BY</span><span style="color: Gray;"> </span><span style="color: Blue;">p</span><span style="color: Gray;"> </span><span style="color: Green;">DESC</span><span style="color: Gray;"> </span><span style="color: Green;">LIMIT</span><span style="color: Gray;"> </span><span style="color: Maroon;">10</span></li></ol></div>
<p>此SQL有性能问题,呵呵~ 好友人数太多或订阅我的人数太多就会出现问题的~ 慎用,目前自己项目的SNS已经更新了更高效的作法~ <img src='http://edwardhey.webbeb.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1082/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mango 性能没有我想象中的好~</title>
		<link>http://edwardhey.webbeb.com/themes/1070</link>
		<comments>http://edwardhey.webbeb.com/themes/1070#comments</comments>
		<pubDate>Wed, 23 Jun 2010 07:30:04 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[项目经验]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1070</guid>
		<description><![CDATA[最近在执行一个大型运算,数据库记录大约6000w, 使用其中200w对于mango进行测试, 但性能几乎让我大跌眼镜&#8230; 准备给mango填充数据 set_time_limit(0); $m = new&#160;Mongo('localhost:27017'); $collection = $m-&#62;selectDB('test')-&#62;selectCollection('match'); $collection-&#62;ensureIndex(array(&#34;uid&#34;=&#62;1),array(&#34;unique&#34;=&#62;true)); $person = NULL; $i=$j=1; $answer=array(); for($i=1;$i&#60;=1000000;$i++){ &#160; &#160; $answer=array(); &#160; &#160; for($j=1;$j&#60;=20;$j++){ &#160; &#160; &#160; &#160; $answer[]=mt_rand(1,5); &#160; &#160; } &#160; &#160; $person = array(&#34;uid&#34;=&#62;$i,&#34;answer&#34;=&#62;implode(&#34;&#34;,$answer)); &#160; &#160; $collection-&#62;insert($person); } 使用mango进行map/reduce进行运算 m = function () { &#160; &#160; var&#160;i = this.answer; &#160; &#160; var&#160;n [...]]]></description>
			<content:encoded><![CDATA[<p>最近在执行一个大型运算,数据库记录大约6000w, 使用其中200w对于mango进行测试, 但性能几乎让我大跌眼镜&#8230;</p>
<p>准备给mango填充数据</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">set_time_limit</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$m</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Mongo</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">localhost:27017</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$collection</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$m</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">selectDB</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">test</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">selectCollection</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">match</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$collection</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ensureIndex</span><span style="color: Olive;">(</span><span style="color: Green;">array</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">uid</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">=&gt;</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Green;">array</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">unique</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">=&gt;</span><span style="color: Green;">true</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$person</span><span style="color: Gray;"> = </span><span style="color: Green;">NULL</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$i</span><span style="color: Gray;">=</span><span style="color: #00008b;">$j</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$answer</span><span style="color: Gray;">=</span><span style="color: Green;">array</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: #00008b;">$i</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span><span style="color: #00008b;">$i</span><span style="color: Gray;">&lt;=</span><span style="color: Maroon;">1000000</span><span style="color: Gray;">;</span><span style="color: #00008b;">$i</span><span style="color: Gray;">++</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$answer</span><span style="color: Gray;">=</span><span style="color: Green;">array</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: #00008b;">$j</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span><span style="color: #00008b;">$j</span><span style="color: Gray;">&lt;=</span><span style="color: Maroon;">20</span><span style="color: Gray;">;</span><span style="color: #00008b;">$j</span><span style="color: Gray;">++</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$answer</span><span style="color: Olive;">[]</span><span style="color: Gray;">=</span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Gray;">,</span><span style="color: Maroon;">5</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$person</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">uid</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">=&gt;</span><span style="color: #00008b;">$i</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">answer</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">=&gt;</span><span style="color: Blue;">implode</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">,</span><span style="color: #00008b;">$answer</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$collection</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">insert</span><span style="color: Olive;">(</span><span style="color: #00008b;">$person</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
</ol></div>
<p>使用mango进行map/reduce进行运算</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">m</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">answer</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">n</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">s</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">n</span><span style="color: Gray;">; </span><span style="color: Blue;">n</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">i</span><span style="color: Gray;">; </span><span style="color: Blue;">n</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">answer</span><span style="color: Olive;">[</span><span style="color: Blue;">n</span><span style="color: Olive;">]</span><span style="color: Gray;"> == </span><span style="color: Blue;">matchs</span><span style="color: Olive;">[</span><span style="color: Blue;">n</span><span style="color: Olive;">])</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">emit</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">uid</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">r</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">k</span><span style="color: Gray;">,</span><span style="color: Blue;">vals</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">sum</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Blue;">vals</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">sum</span><span style="color: Gray;"> += </span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Blue;">vals</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">sum</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">res</span><span style="color: Gray;"> = </span><span style="color: Blue;">db</span><span style="color: Gray;">.</span><span style="color: Blue;">match</span><span style="color: Gray;">.</span><span style="color: Blue;">mapReduce</span><span style="color: Olive;">(</span><span style="color: Blue;">m</span><span style="color: Gray;">,</span><span style="color: Blue;">r</span><span style="color: Gray;">,</span><span style="color: Olive;">{</span><span style="color: Blue;">scope</span><span style="color: Gray;">:</span><span style="color: Olive;">{</span><span style="color: Blue;">matchs</span><span style="color: Gray;">:</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">21453214254123145213</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">}})</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//这里几乎卡死,1个CPU四核,其中1个核跑满,可见mango的map/reduce真的是单进程的...</span></li></ol></div>
<p>还是改用mysql靠谱,对数据进行分表后,同样使用map/reduce取数据,大约能在1s内准确完成计算,这里不给出mysql的解决方案了哈~ 就是感叹下mango没有那么牛X的性能&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1070/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>流量观察</title>
		<link>http://edwardhey.webbeb.com/themes/1055</link>
		<comments>http://edwardhey.webbeb.com/themes/1055#comments</comments>
		<pubDate>Thu, 03 Jun 2010 02:00:50 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[心路历程]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1055</guid>
		<description><![CDATA[最近通过观察引潜网的流量,发现一个很有规律的事情~ 就是周四的流量都较少,为啥会这么有趣呢? 想了想,可能大家周一到周三上班都没怎么效率,到周四发现工作还有很多没做完,就周四的工作效率非常高,到周五的时候因为快要放假心都不知道飞那里去了&#8230; 所以大家的周四的工作效率是最高的~ 要把握好周四哦~ 哈哈哈~]]></description>
			<content:encoded><![CDATA[<p>最近通过观察引潜网的流量,发现一个很有规律的事情~</p>
<p>就是周四的流量都较少,为啥会这么有趣呢?<br />
想了想,可能大家周一到周三上班都没怎么效率,到周四发现工作还有很多没做完,就周四的工作效率非常高,到周五的时候因为快要放假心都不知道飞那里去了&#8230;</p>
<p>所以大家的周四的工作效率是最高的~ 要把握好周四哦~ 哈哈哈~</p>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1055/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>向左旋转一个一维向量</title>
		<link>http://edwardhey.webbeb.com/themes/1046</link>
		<comments>http://edwardhey.webbeb.com/themes/1046#comments</comments>
		<pubDate>Fri, 21 May 2010 08:20:00 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[算法研究]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1046</guid>
		<description><![CDATA[先取模运算得出真实要旋转的次数,如果旋转次数比向量长度要大,会有边界问题~ 然后把向量分成两部分进行翻转 向量X分成两部分为 ab 旋转的意思就是要把 ab 变成 ba , 先把a翻转成 r(a) 再翻转b成为r(b) 在把整个进行翻转 r(r(a)r(b)) 就成为了ba #include &#60;stdio.h&#62; char str[9] = &#34;abcdefgh\0&#34;; void reverse(int act,int end){ &#160; &#160; int&#160;tmp; &#160; &#160; for&#160;(;act&#60;end;act++,end--){ &#160; &#160; &#160; &#160; tmp = str[act]; &#160; &#160; &#160; &#160; str[act]=str[end]; &#160; &#160; &#160; &#160; str[end]=tmp; &#160; &#160; } } &#160; int&#160;main(void){ &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>先取模运算得出真实要旋转的次数,如果旋转次数比向量长度要大,会有边界问题~<br />
然后把向量分成两部分进行翻转 向量X分成两部分为 ab 旋转的意思就是要把 ab 变成 ba , 先把a翻转成 r(a) 再翻转b成为r(b) 在把整个进行翻转 r(r(a)r(b)) 就成为了ba</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">stdio.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span></li>
<li><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">str</span><span style="color: Olive;">[</span><span style="color: Maroon;">9</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">abcdefgh</span><span style="color: Navy;">\</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">reverse</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">act</span><span style="color: Gray;">,</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">end</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tmp</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;">;</span><span style="color: Blue;">act</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">end</span><span style="color: Gray;">;</span><span style="color: Blue;">act</span><span style="color: Gray;">++,</span><span style="color: Blue;">end</span><span style="color: Gray;">--</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">tmp</span><span style="color: Gray;"> = </span><span style="color: Blue;">str</span><span style="color: Olive;">[</span><span style="color: Blue;">act</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">str</span><span style="color: Olive;">[</span><span style="color: Blue;">act</span><span style="color: Olive;">]</span><span style="color: Gray;">=</span><span style="color: Blue;">str</span><span style="color: Olive;">[</span><span style="color: Blue;">end</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">str</span><span style="color: Olive;">[</span><span style="color: Blue;">end</span><span style="color: Olive;">]</span><span style="color: Gray;">=</span><span style="color: Blue;">tmp</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span class="hl-types">void</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">3</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//左旋转次数</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">n</span><span style="color: Gray;"> = </span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//长度</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Blue;">i</span><span style="color: Gray;">%</span><span style="color: Blue;">n</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">reverse</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: Blue;">i</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">reverse</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">,</span><span style="color: Blue;">n</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">reverse</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: Blue;">n</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%s</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">str</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1046/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>exit()可能会关闭标准输出</title>
		<link>http://edwardhey.webbeb.com/themes/1042</link>
		<comments>http://edwardhey.webbeb.com/themes/1042#comments</comments>
		<pubDate>Sat, 01 May 2010 14:01:53 +0000</pubDate>
		<dc:creator>小黑</dc:creator>
				<category><![CDATA[c/c++]]></category>

		<guid isPermaLink="false">http://edwardhey.webbeb.com/?p=1042</guid>
		<description><![CDATA[在写多进程或多线程程序的时候要特别注意这个问题,如果调用exit可能会冲洗所有标准I/O流,并有可能关闭标准I/O流 下面是例子 int main(int argc, char **argv) { &#160; &#160; int&#160;var; &#160; &#160; pid_t&#160;pid; &#160; &#160; &#160; var=8; &#160; &#160; printf(&#34;before fork\n&#34;); &#160; &#160; &#160; if((pid=vfork())&#60;0){ &#160; &#160; &#160; &#160; err_sys(&#34;fork error!&#34;); &#160; &#160; }else&#160;if(pid==0){//子进程 &#160; &#160; &#160; &#160; glob++; &#160; &#160; &#160; &#160; var++; &#160; &#160; &#160; &#160; exit(0);//错误的使用 &#160; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>在写多进程或多线程程序的时候要特别注意这个问题,如果调用exit可能会冲洗所有标准I/O流,并有可能关闭标准I/O流</p>
<p>下面是例子</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">argc</span><span style="color: Gray;">, </span><span class="hl-types">char</span><span style="color: Gray;"> **</span><span style="color: Blue;">argv</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">var</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">pid_t</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">pid</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">var</span><span style="color: Gray;">=</span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">before fork</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">((</span><span style="color: Blue;">pid</span><span style="color: Gray;">=</span><span style="color: Blue;">vfork</span><span style="color: Olive;">())</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">0</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">err_sys</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">fork error!</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">pid</span><span style="color: Gray;">==</span><span style="color: Maroon;">0</span><span style="color: Olive;">){</span><span style="color: #ffa500;">//子进程</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">glob</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">var</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">exit</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//错误的使用</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_exit</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//应该这样调用</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">pid=%d ,glob=%d, var=%d</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">getpid</span><span style="color: Olive;">()</span><span style="color: Gray;">,</span><span style="color: Blue;">glob</span><span style="color: Gray;">,</span><span style="color: Blue;">var</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>在某些系统上面编译运行后会发现没有任何输出,而上面的程序我只是让子进程退出,但是父进程为什么也不见有输出呢?原来exit关闭了标准输出,这个时候printf的返回值是&#8221;-1&#8243;&#8230;就是输出不成功!现在大家明白了吧~ 正确的应该调用 _exit(0);</p>
]]></content:encoded>
			<wfw:commentRss>http://edwardhey.webbeb.com/themes/1042/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
