<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-小山日志</title><link>http://www.cppblog.com/nj-blog/</link><description>读书,学习与思考.</description><language>zh-cn</language><lastBuildDate>Sat, 10 Jan 2009 02:16:40 GMT</lastBuildDate><pubDate>Sat, 10 Jan 2009 02:16:40 GMT</pubDate><ttl>60</ttl><item><title>绘制牛顿法复杂边界分形图 &amp;&amp; 海皮扭耶！</title><link>http://www.cppblog.com/nj-blog/archive/2006/12/31/17108.html</link><dc:creator>小山日志</dc:creator><author>小山日志</author><pubDate>Sun, 31 Dec 2006 15:58:00 GMT</pubDate><guid>http://www.cppblog.com/nj-blog/archive/2006/12/31/17108.html</guid><wfw:comment>http://www.cppblog.com/nj-blog/comments/17108.html</wfw:comment><comments>http://www.cppblog.com/nj-blog/archive/2006/12/31/17108.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/nj-blog/comments/commentRss/17108.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/nj-blog/services/trackbacks/17108.html</trackback:ping><description><![CDATA[
		<p>
				<img src="http://www.cppblog.com/images/cppblog_com/nj-blog/2767/r_fenxing.PNG" />
				<br />谨以此图BS自己的懒惰行为！呵呵，3月份的想法到现在才完成。还好没有拖到07年去^_^。<br />先把图片和代码给出，明天再把文字补上。<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" />
				<img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" />
				<span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
				</span>
				<span id="Code_Open_Text" style="DISPLAY: none">
						<br />
						<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 在VC7.1和Dev C++下编译通过</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #000000">#include </span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">windows.h</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">cstring</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">complex</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">iostream</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">fstream</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">using</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">namespace</span>
						<span style="COLOR: #000000"> std;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">设置迭代次数。。。</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">const</span>
						<span style="COLOR: #000000"> unsigned </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> MAX </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">  </span>
						<span style="COLOR: #000000">100</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">设置图片像素，默认取图片大小为 800×600</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> setPixel(LPBYTE lpBits, unsigned </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> x, unsigned </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> y, BYTE r, BYTE g, BYTE b)<br /><img id="Codehighlighter1_298_389_Open_Image" onclick="this.style.display='none'; Codehighlighter1_298_389_Open_Text.style.display='none'; Codehighlighter1_298_389_Closed_Image.style.display='inline'; Codehighlighter1_298_389_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_298_389_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_298_389_Closed_Text.style.display='none'; Codehighlighter1_298_389_Open_Image.style.display='inline'; Codehighlighter1_298_389_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
						<span id="Codehighlighter1_298_389_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_298_389_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    lpBits </span>
								<span style="COLOR: #000000">+=</span>
								<span style="COLOR: #000000"> y</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">800</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">3</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> x</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">3</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">lpBits        </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> b;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">(lpBits</span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000">1</span>
								<span style="COLOR: #000000">) </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> g;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">(lpBits</span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000">2</span>
								<span style="COLOR: #000000">) </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> r;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">指定染色规则</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #000000">template</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">typename T</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_439_461_Open_Image" onclick="this.style.display='none'; Codehighlighter1_439_461_Open_Text.style.display='none'; Codehighlighter1_439_461_Closed_Image.style.display='inline'; Codehighlighter1_439_461_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
								<img id="Codehighlighter1_439_461_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_439_461_Closed_Text.style.display='none'; Codehighlighter1_439_461_Open_Image.style.display='inline'; Codehighlighter1_439_461_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />inline T fun(T k)</span>
						<span id="Codehighlighter1_439_461_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_439_461_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> (k</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">41</span>
								<span style="COLOR: #000000">)</span>
								<span style="COLOR: #000000">%</span>
								<span style="COLOR: #000000">255</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> main(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> argc, </span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000">argv[])<br /><img id="Codehighlighter1_497_2362_Open_Image" onclick="this.style.display='none'; Codehighlighter1_497_2362_Open_Text.style.display='none'; Codehighlighter1_497_2362_Closed_Image.style.display='inline'; Codehighlighter1_497_2362_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_497_2362_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_497_2362_Closed_Text.style.display='none'; Codehighlighter1_497_2362_Open_Image.style.display='inline'; Codehighlighter1_497_2362_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
						<span id="Codehighlighter1_497_2362_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_497_2362_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 测试complex<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">   complex&lt;double&gt; c1(4.3, 3.0);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">   complex&lt;double&gt; c2=c1;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">   <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">   for(int j=0; j&lt; 4800; j++){    <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">       for(int i=0; i&lt;100; i++){<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">           c2 = (c1*2.0+1.0/(c1*c1))/3.0;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">           if(c2==c1) break;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">           c1=c2;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">       }<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">          c1=complex&lt;double&gt;(4.3, 3.0);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">   }<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">      cout &lt;&lt; j &lt;&lt; endl;</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    BITMAPFILEHEADER  hdr;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    BITMAPINFOHEADER  bih;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    LPBYTE  lpBits;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ZeroMemory(</span>
								<span style="COLOR: #000000">&amp;</span>
								<span style="COLOR: #000000">hdr, </span>
								<span style="COLOR: #0000ff">sizeof</span>
								<span style="COLOR: #000000">(hdr));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ZeroMemory(</span>
								<span style="COLOR: #000000">&amp;</span>
								<span style="COLOR: #000000">bih, </span>
								<span style="COLOR: #0000ff">sizeof</span>
								<span style="COLOR: #000000">(bih));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    bih.biSize    </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">    </span>
								<span style="COLOR: #0000ff">sizeof</span>
								<span style="COLOR: #000000">(bih);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    bih.biWidth    </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">    </span>
								<span style="COLOR: #000000">800</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    bih.biHeight</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">    </span>
								<span style="COLOR: #000000">600</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    bih.biPlanes</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">   </span>
								<span style="COLOR: #000000">1</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    bih.biCompression </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> BI_RGB;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    bih.biBitCount    </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">24</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    bih.biSizeImage </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">; <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    hdr.bfType </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0x4d42</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    hdr.bfSize </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> (DWORD) (</span>
								<span style="COLOR: #0000ff">sizeof</span>
								<span style="COLOR: #000000">(BITMAPFILEHEADER) </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        bih.biSize </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">800</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">600</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">3</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    hdr.bfOffBits </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> (DWORD)(</span>
								<span style="COLOR: #0000ff">sizeof</span>
								<span style="COLOR: #000000">(BITMAPFILEHEADER) </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        bih.biSize);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    lpBits </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> unsigned </span>
								<span style="COLOR: #0000ff">char</span>
								<span style="COLOR: #000000">[</span>
								<span style="COLOR: #000000">800</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">600</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">3</span>
								<span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    memset(lpBits, </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">800</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">600</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">3</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">测试图片写入<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">for(int j=0; j&lt; 600/2; j++)<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">    for (int i=0; i&lt;800; i++)<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">    {<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">        setPixel(lpBits, i, j, 250, 0, 0);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">    }<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">}</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    complex</span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #0000ff">double</span>
								<span style="COLOR: #000000">&gt;</span>
								<span style="COLOR: #000000"> c2,c1;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">int</span>
								<span style="COLOR: #000000"> i,j, k;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">for</span>
								<span style="COLOR: #000000">(j</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">; j</span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #000000">600</span>
								<span style="COLOR: #000000">; j</span>
								<span style="COLOR: #000000">++</span>
								<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_1565_2042_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1565_2042_Open_Text.style.display='none'; Codehighlighter1_1565_2042_Closed_Image.style.display='inline'; Codehighlighter1_1565_2042_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1565_2042_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1565_2042_Closed_Text.style.display='none'; Codehighlighter1_1565_2042_Open_Image.style.display='inline'; Codehighlighter1_1565_2042_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
								<span id="Codehighlighter1_1565_2042_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.cppblog.com/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_1565_2042_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
										<span style="COLOR: #0000ff">for</span>
										<span style="COLOR: #000000">(i</span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000">0</span>
										<span style="COLOR: #000000">; i</span>
										<span style="COLOR: #000000">&lt;</span>
										<span style="COLOR: #000000">800</span>
										<span style="COLOR: #000000">; i</span>
										<span style="COLOR: #000000">++</span>
										<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_1592_2039_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1592_2039_Open_Text.style.display='none'; Codehighlighter1_1592_2039_Closed_Image.style.display='inline'; Codehighlighter1_1592_2039_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1592_2039_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1592_2039_Closed_Text.style.display='none'; Codehighlighter1_1592_2039_Open_Image.style.display='inline'; Codehighlighter1_1592_2039_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
										<span id="Codehighlighter1_1592_2039_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
												<img src="http://www.cppblog.com/images/dot.gif" />
										</span>
										<span id="Codehighlighter1_1592_2039_Open_Text">
												<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            c1 </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> complex</span>
												<span style="COLOR: #000000">&lt;</span>
												<span style="COLOR: #0000ff">double</span>
												<span style="COLOR: #000000">&gt;</span>
												<span style="COLOR: #000000">(i</span>
												<span style="COLOR: #000000">*</span>
												<span style="COLOR: #000000">0.01</span>
												<span style="COLOR: #000000">-</span>
												<span style="COLOR: #000000">4</span>
												<span style="COLOR: #000000">, j</span>
												<span style="COLOR: #000000">*</span>
												<span style="COLOR: #000000">0.01</span>
												<span style="COLOR: #000000">-</span>
												<span style="COLOR: #000000">3</span>
												<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
												<span style="COLOR: #008000">//</span>
												<span style="COLOR: #008000">迭代个点</span>
												<span style="COLOR: #008000">
														<br />
														<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
												</span>
												<span style="COLOR: #000000">            </span>
												<span style="COLOR: #0000ff">for</span>
												<span style="COLOR: #000000">(k</span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000">0</span>
												<span style="COLOR: #000000">; k</span>
												<span style="COLOR: #000000">&lt;</span>
												<span style="COLOR: #000000">MAX; k</span>
												<span style="COLOR: #000000">++</span>
												<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_1676_1749_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1676_1749_Open_Text.style.display='none'; Codehighlighter1_1676_1749_Closed_Image.style.display='inline'; Codehighlighter1_1676_1749_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1676_1749_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1676_1749_Closed_Text.style.display='none'; Codehighlighter1_1676_1749_Open_Image.style.display='inline'; Codehighlighter1_1676_1749_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
												<span id="Codehighlighter1_1676_1749_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.cppblog.com/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1676_1749_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                c2 </span>
														<span style="COLOR: #000000">=</span>
														<span style="COLOR: #000000"> (c1</span>
														<span style="COLOR: #000000">*</span>
														<span style="COLOR: #000000">2.0</span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000">1.0</span>
														<span style="COLOR: #000000">/</span>
														<span style="COLOR: #000000">(c1</span>
														<span style="COLOR: #000000">*</span>
														<span style="COLOR: #000000">c1))</span>
														<span style="COLOR: #000000">/</span>
														<span style="COLOR: #000000">3.0</span>
														<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
														<span style="COLOR: #0000ff">if</span>
														<span style="COLOR: #000000">(c2</span>
														<span style="COLOR: #000000">==</span>
														<span style="COLOR: #000000">c1) </span>
														<span style="COLOR: #0000ff">break</span>
														<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                c1</span>
														<span style="COLOR: #000000">=</span>
														<span style="COLOR: #000000">c2;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
												</span>
												<span style="COLOR: #000000">
														<br />
														<img id="Codehighlighter1_1764_1806_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1764_1806_Open_Text.style.display='none'; Codehighlighter1_1764_1806_Closed_Image.style.display='inline'; Codehighlighter1_1764_1806_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
														<img id="Codehighlighter1_1764_1806_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1764_1806_Closed_Text.style.display='none'; Codehighlighter1_1764_1806_Open_Image.style.display='inline'; Codehighlighter1_1764_1806_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
												<span style="COLOR: #0000ff">if</span>
												<span style="COLOR: #000000">(k</span>
												<span style="COLOR: #000000">==</span>
												<span style="COLOR: #000000">MAX)</span>
												<span id="Codehighlighter1_1764_1806_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.cppblog.com/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1764_1806_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                setPixel(lpBits, i, j, </span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">, </span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">, </span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">);<br /><img id="Codehighlighter1_1847_1894_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1847_1894_Open_Text.style.display='none'; Codehighlighter1_1847_1894_Closed_Image.style.display='inline'; Codehighlighter1_1847_1894_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1847_1894_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1847_1894_Closed_Text.style.display='none'; Codehighlighter1_1847_1894_Open_Image.style.display='inline'; Codehighlighter1_1847_1894_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span>
												</span>
												<span style="COLOR: #0000ff">else</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">if</span>
												<span style="COLOR: #000000">( c1.real() </span>
												<span style="COLOR: #000000">&lt;</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">0</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">&amp;&amp;</span>
												<span style="COLOR: #000000"> c1.imag() </span>
												<span style="COLOR: #000000">&gt;</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">0</span>
												<span style="COLOR: #000000">)</span>
												<span id="Codehighlighter1_1847_1894_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.cppblog.com/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1847_1894_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                setPixel(lpBits, i, j, fun(k), </span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">, </span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">);<br /><img id="Codehighlighter1_1935_1982_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1935_1982_Open_Text.style.display='none'; Codehighlighter1_1935_1982_Closed_Image.style.display='inline'; Codehighlighter1_1935_1982_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1935_1982_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1935_1982_Closed_Text.style.display='none'; Codehighlighter1_1935_1982_Open_Image.style.display='inline'; Codehighlighter1_1935_1982_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span>
												</span>
												<span style="COLOR: #0000ff">else</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">if</span>
												<span style="COLOR: #000000">( c1.real() </span>
												<span style="COLOR: #000000">&lt;</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">0</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">&amp;&amp;</span>
												<span style="COLOR: #000000"> c1.imag() </span>
												<span style="COLOR: #000000">&lt;</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">0</span>
												<span style="COLOR: #000000">)</span>
												<span id="Codehighlighter1_1935_1982_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.cppblog.com/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1935_1982_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                setPixel(lpBits, i, j, </span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">, fun(k), </span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">);<br /><img id="Codehighlighter1_1987_2034_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1987_2034_Open_Text.style.display='none'; Codehighlighter1_1987_2034_Closed_Image.style.display='inline'; Codehighlighter1_1987_2034_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1987_2034_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1987_2034_Closed_Text.style.display='none'; Codehighlighter1_1987_2034_Open_Image.style.display='inline'; Codehighlighter1_1987_2034_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span>
												</span>
												<span style="COLOR: #0000ff">else</span>
												<span id="Codehighlighter1_1987_2034_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.cppblog.com/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1987_2034_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                setPixel(lpBits, i, j, </span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">, </span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">, fun(k));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
												</span>
												<span style="COLOR: #000000">
														<br />
														<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
														<br />
														<img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
										</span>
										<span style="COLOR: #000000">
												<br />
												<img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
										<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">写入文件</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">    ofstream  file(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">fenxing.bmp</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">char</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000"> pTmp </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> reinterpret_cast</span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #0000ff">char</span>
								<span style="COLOR: #000000">*&gt;</span>
								<span style="COLOR: #000000">(</span>
								<span style="COLOR: #000000">&amp;</span>
								<span style="COLOR: #000000">hdr);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    file.write(pTmp, </span>
								<span style="COLOR: #0000ff">sizeof</span>
								<span style="COLOR: #000000">(BITMAPFILEHEADER));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    pTmp </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> reinterpret_cast</span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #0000ff">char</span>
								<span style="COLOR: #000000">*&gt;</span>
								<span style="COLOR: #000000">(</span>
								<span style="COLOR: #000000">&amp;</span>
								<span style="COLOR: #000000">bih);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    file.write(pTmp, </span>
								<span style="COLOR: #0000ff">sizeof</span>
								<span style="COLOR: #000000">(BITMAPINFOHEADER));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    file.write(reinterpret_cast</span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #0000ff">char</span>
								<span style="COLOR: #000000">*&gt;</span>
								<span style="COLOR: #000000">(lpBits), </span>
								<span style="COLOR: #000000">800</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">600</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000">3</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    delete []lpBits;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> EXIT_SUCCESS;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</span>
		</div>
		<p>
				<br />
		</p>
<img src ="http://www.cppblog.com/nj-blog/aggbug/17108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/nj-blog/" target="_blank">小山日志</a> 2006-12-31 23:58 <a href="http://www.cppblog.com/nj-blog/archive/2006/12/31/17108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纯C编写的矩阵工具包</title><link>http://www.cppblog.com/nj-blog/archive/2006/12/07/16099.html</link><dc:creator>小山日志</dc:creator><author>小山日志</author><pubDate>Thu, 07 Dec 2006 09:06:00 GMT</pubDate><guid>http://www.cppblog.com/nj-blog/archive/2006/12/07/16099.html</guid><wfw:comment>http://www.cppblog.com/nj-blog/comments/16099.html</wfw:comment><comments>http://www.cppblog.com/nj-blog/archive/2006/12/07/16099.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/nj-blog/comments/commentRss/16099.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/nj-blog/services/trackbacks/16099.html</trackback:ping><description><![CDATA[同学找我帮忙写的，要求：<br />矩阵相乘，纯C编写。<br />不能用C++这点让我十分郁闷啊^_^....<br />一共包含如下东西：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> _matrix2D matrix2D; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">一个结构体类型matrix2D</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />BOOL initMatrix(matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pm, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> h, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> w); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">初始化pm为h×w的零矩阵</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> delMatrix(matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pm);  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">矩阵的内部数据空间全部是动态分配的，所以退出之前一定要删除矩阵</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> getData(matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pm, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y);  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">返回矩阵pm，坐标为x、y的元素值</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setData(matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pm, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> data);   </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">将矩阵pm，坐标为x、y的元素值置为data</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setMatrix(matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> lhs, matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> rhs);  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">删除矩阵lhs原先的值，并深层拷贝为rhs</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">matrix2D addMatrix(matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> lhs, matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> rhs);  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">矩阵相加，返回一个新的矩阵</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">matrix2D mulMatrix(matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> lhs, matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> rhs);  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">矩阵相乘，返回一个新的矩阵</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> printMatrix(matrix2D</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pm);  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">格式化打印矩阵pm</span></div><br />这是一个测试程序，简单相乘两个矩阵：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">matrix2d.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main()<br /><img id="Codehighlighter1_34_664_Open_Image" onclick="this.style.display='none'; Codehighlighter1_34_664_Open_Text.style.display='none'; Codehighlighter1_34_664_Closed_Image.style.display='inline'; Codehighlighter1_34_664_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_34_664_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_34_664_Closed_Text.style.display='none'; Codehighlighter1_34_664_Open_Image.style.display='inline'; Codehighlighter1_34_664_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_34_664_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_34_664_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i,j;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    matrix2D  rhs;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    matrix2D  lhs;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    matrix2D  result;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    initMatrix(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">lhs, </span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    initMatrix(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">rhs, </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">lhs矩阵设置元素值</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_216_299_Open_Image" onclick="this.style.display='none'; Codehighlighter1_216_299_Open_Text.style.display='none'; Codehighlighter1_216_299_Closed_Image.style.display='inline'; Codehighlighter1_216_299_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_216_299_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_216_299_Closed_Text.style.display='none'; Codehighlighter1_216_299_Open_Image.style.display='inline'; Codehighlighter1_216_299_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_216_299_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_216_299_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_247_293_Open_Image" onclick="this.style.display='none'; Codehighlighter1_247_293_Open_Text.style.display='none'; Codehighlighter1_247_293_Closed_Image.style.display='inline'; Codehighlighter1_247_293_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_247_293_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_247_293_Closed_Text.style.display='none'; Codehighlighter1_247_293_Open_Image.style.display='inline'; Codehighlighter1_247_293_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; j</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">; j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_247_293_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_247_293_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            setData(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">lhs, i, j, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">rhs矩阵设置元素值</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_347_431_Open_Image" onclick="this.style.display='none'; Codehighlighter1_347_431_Open_Text.style.display='none'; Codehighlighter1_347_431_Closed_Image.style.display='inline'; Codehighlighter1_347_431_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_347_431_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_347_431_Closed_Text.style.display='none'; Codehighlighter1_347_431_Open_Image.style.display='inline'; Codehighlighter1_347_431_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_347_431_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_347_431_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_377_425_Open_Image" onclick="this.style.display='none'; Codehighlighter1_377_425_Open_Text.style.display='none'; Codehighlighter1_377_425_Closed_Image.style.display='inline'; Codehighlighter1_377_425_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_377_425_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_377_425_Closed_Text.style.display='none'; Codehighlighter1_377_425_Open_Image.style.display='inline'; Codehighlighter1_377_425_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; j</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">; j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_377_425_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_377_425_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            setData(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">rhs, i, j, i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">矩阵相乘</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    result </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mulMatrix(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">lhs, </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">rhs);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">打印三个矩阵</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    printMatrix(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">lhs);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    printMatrix(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">rhs);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    printMatrix(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">result);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">不用了，记得释放矩阵空间..</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    delMatrix(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">lhs);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    delMatrix(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">rhs);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    delMatrix(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">result);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />这里是显示结果：<br /><a class="" title="" href="/images/cppblog_com/nj-blog/2767/r_martin.JPG" target=""><img style="WIDTH: 73px; HEIGHT: 120px" height="120" src="http://www.cppblog.com/images/cppblog_com/nj-blog/2767/t_martin.JPG" width="188" /></a><br />点击<a class="" title="" href="/Files/nj-blog/matrix.rar" target="">这里</a>下载完整的源代码和运行程序。<br /><img src ="http://www.cppblog.com/nj-blog/aggbug/16099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/nj-blog/" target="_blank">小山日志</a> 2006-12-07 17:06 <a href="http://www.cppblog.com/nj-blog/archive/2006/12/07/16099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将逆波兰式转换成波兰式表达式</title><link>http://www.cppblog.com/nj-blog/archive/2006/12/05/16011.html</link><dc:creator>小山日志</dc:creator><author>小山日志</author><pubDate>Tue, 05 Dec 2006 06:45:00 GMT</pubDate><guid>http://www.cppblog.com/nj-blog/archive/2006/12/05/16011.html</guid><wfw:comment>http://www.cppblog.com/nj-blog/comments/16011.html</wfw:comment><comments>http://www.cppblog.com/nj-blog/archive/2006/12/05/16011.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/nj-blog/comments/commentRss/16011.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/nj-blog/services/trackbacks/16011.html</trackback:ping><description><![CDATA[    这是严蔚敏《数据结构》配套习题册上的题目：将逆波兰式转换成波兰式，并提示错误（作为简化，只处理"+-*/"和0~9的数字）。<br />    例如："123*-"转换成波兰式为"-1*23"<br />    逆波兰式"123*-"的表达式树如下：<br />    <img title="exp-tree" style="width: 206px; height: 166px;" src="http://docs.google.com/File?id=dddhs32p_4cztm4q" />所以这个转换过程就是：已知一个二叉树的后根遍历序列，求先根遍历序列。<br />    我的算法是根据后根遍历的序列构造一个表达式树，进而先根遍历此树获得波兰式表达式。<br />    定义了两个结构体：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 58.51%; height: 145px; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 0, 255);">struct</span><span style="color: rgb(0, 0, 0);"> Exp{<br />    </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);">  op;<br />    Item  lhs;<br />    Item  rhs;<br />    Exp(){};<br />    Exp(</span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> _op, Item _lhs, Item _rhs):op(_op), lhs(_lhs), rhs(_rhs){ }<br />    Exp(</span><span style="color: rgb(0, 0, 255);">const</span><span style="color: rgb(0, 0, 0);"> Exp</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);"> e):op(e.op), lhs(e.lhs), rhs(e.rhs) { }<br />};<br /></span></div><br />表示一个表达式，也是表达式树上的一个子树。<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 58.92%; height: 130px; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 0, 255);">struct</span><span style="color: rgb(0, 0, 0);"> Item{<br />    </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);">  number;<br />    shared_ptr</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Exp</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"> pExp;<br />    </span><span style="color: rgb(0, 0, 255);">bool</span><span style="color: rgb(0, 0, 0);"> isNumber;<br />    </span><span style="color: rgb(0, 0, 255);">explicit</span><span style="color: rgb(0, 0, 0);"> Item():isNumber(</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">), number(</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">), pExp(){    }<br />    Item(</span><span style="color: rgb(0, 0, 255);">const</span><span style="color: rgb(0, 0, 0);"> Item</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);"> i):number(i.number), pExp(i.pExp), isNumber(i.isNumber){ }<br />};<br /></span></div><p><br />表示一个节点，它可以是一个数字，或者一个表达式（pExp这里我使用的是<a href="http://www.boost.org/">boost库</a>的智能指针shared_ptr，所以编译的话，需要先安装boost库）。<br />运行的结果如图：<br /><img src="http://www.cppblog.com/images/cppblog_com/nj-blog/2767/r_print-porland.JPG" /><br />*输入时，以'e'表示输入结束。<br />完整的代码和可执行文件点击<a class="" title="" href="/Files/nj-blog/porland.rar" target="">这里</a>下载。权当抛砖引玉了，希望有更好算法的同学赐教。<br /></p><hr />
完整的代码：<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11" /><img id="Code_Open_Image" style="display: none;" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11" /><span id="Code_Closed_Text" style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255);"></span><span id="Code_Open_Text" style="display: none;"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0, 0, 0);">#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">stack</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">algorithm</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">iostream</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">boost</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">shared_ptr.hpp</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);"> std;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);"> boost::shared_ptr;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">struct</span><span style="color: rgb(0, 0, 0);"> Exp;<br /><img id="Codehighlighter1_178_376_Open_Image" onclick="this.style.display='none'; Codehighlighter1_178_376_Open_Text.style.display='none'; Codehighlighter1_178_376_Closed_Image.style.display='inline'; Codehighlighter1_178_376_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_178_376_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_178_376_Closed_Text.style.display='none'; Codehighlighter1_178_376_Open_Image.style.display='inline'; Codehighlighter1_178_376_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">struct</span><span style="color: rgb(0, 0, 0);"> Item</span><span id="Codehighlighter1_178_376_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_178_376_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);">  number;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    shared_ptr</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Exp</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"> pExp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">bool</span><span style="color: rgb(0, 0, 0);"> isNumber;<br /><img id="Codehighlighter1_295_297_Open_Image" onclick="this.style.display='none'; Codehighlighter1_295_297_Open_Text.style.display='none'; Codehighlighter1_295_297_Closed_Image.style.display='inline'; Codehighlighter1_295_297_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_295_297_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_295_297_Closed_Text.style.display='none'; Codehighlighter1_295_297_Open_Image.style.display='inline'; Codehighlighter1_295_297_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">explicit</span><span style="color: rgb(0, 0, 0);"> Item():isNumber(</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">), number(</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">), pExp()</span><span id="Codehighlighter1_295_297_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_295_297_Open_Text"><span style="color: rgb(0, 0, 0);">{    }</span></span><span style="color: rgb(0, 0, 0);"><br /><img id="Codehighlighter1_372_374_Open_Image" onclick="this.style.display='none'; Codehighlighter1_372_374_Open_Text.style.display='none'; Codehighlighter1_372_374_Closed_Image.style.display='inline'; Codehighlighter1_372_374_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_372_374_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_372_374_Closed_Text.style.display='none'; Codehighlighter1_372_374_Open_Image.style.display='inline'; Codehighlighter1_372_374_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    Item(</span><span style="color: rgb(0, 0, 255);">const</span><span style="color: rgb(0, 0, 0);"> Item</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);"> i):number(i.number), pExp(i.pExp), isNumber(i.isNumber)</span><span id="Codehighlighter1_372_374_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_372_374_Open_Text"><span style="color: rgb(0, 0, 0);">{ }</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_390_572_Open_Image" onclick="this.style.display='none'; Codehighlighter1_390_572_Open_Text.style.display='none'; Codehighlighter1_390_572_Closed_Image.style.display='inline'; Codehighlighter1_390_572_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_390_572_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_390_572_Closed_Text.style.display='none'; Codehighlighter1_390_572_Open_Image.style.display='inline'; Codehighlighter1_390_572_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">struct</span><span style="color: rgb(0, 0, 0);"> Exp</span><span id="Codehighlighter1_390_572_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_390_572_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);">  op;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    Item  lhs;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    Item  rhs;<br /><img id="Codehighlighter1_442_443_Open_Image" onclick="this.style.display='none'; Codehighlighter1_442_443_Open_Text.style.display='none'; Codehighlighter1_442_443_Closed_Image.style.display='inline'; Codehighlighter1_442_443_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_442_443_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_442_443_Closed_Text.style.display='none'; Codehighlighter1_442_443_Open_Image.style.display='inline'; Codehighlighter1_442_443_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    Exp()</span><span id="Codehighlighter1_442_443_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_442_443_Open_Text"><span style="color: rgb(0, 0, 0);">{}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img id="Codehighlighter1_512_514_Open_Image" onclick="this.style.display='none'; Codehighlighter1_512_514_Open_Text.style.display='none'; Codehighlighter1_512_514_Closed_Image.style.display='inline'; Codehighlighter1_512_514_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_512_514_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_512_514_Closed_Text.style.display='none'; Codehighlighter1_512_514_Open_Image.style.display='inline'; Codehighlighter1_512_514_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    Exp(</span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> _op, Item _lhs, Item _rhs):op(_op), lhs(_lhs), rhs(_rhs)</span><span id="Codehighlighter1_512_514_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_512_514_Open_Text"><span style="color: rgb(0, 0, 0);">{ }</span></span><span style="color: rgb(0, 0, 0);"><br /><img id="Codehighlighter1_568_570_Open_Image" onclick="this.style.display='none'; Codehighlighter1_568_570_Open_Text.style.display='none'; Codehighlighter1_568_570_Closed_Image.style.display='inline'; Codehighlighter1_568_570_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_568_570_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_568_570_Closed_Text.style.display='none'; Codehighlighter1_568_570_Open_Image.style.display='inline'; Codehighlighter1_568_570_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    Exp(</span><span style="color: rgb(0, 0, 255);">const</span><span style="color: rgb(0, 0, 0);"> Exp</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);"> e):op(e.op), lhs(e.lhs), rhs(e.rhs) </span><span id="Codehighlighter1_568_570_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_568_570_Open_Text"><span style="color: rgb(0, 0, 0);">{ }</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_587_712_Open_Image" onclick="this.style.display='none'; Codehighlighter1_587_712_Open_Text.style.display='none'; Codehighlighter1_587_712_Closed_Image.style.display='inline'; Codehighlighter1_587_712_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_587_712_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_587_712_Closed_Text.style.display='none'; Codehighlighter1_587_712_Open_Image.style.display='inline'; Codehighlighter1_587_712_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> Error</span><span id="Codehighlighter1_587_712_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_587_712_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> info;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">:<br /><img id="Codehighlighter1_649_651_Open_Image" onclick="this.style.display='none'; Codehighlighter1_649_651_Open_Text.style.display='none'; Codehighlighter1_649_651_Closed_Image.style.display='inline'; Codehighlighter1_649_651_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_649_651_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_649_651_Closed_Text.style.display='none'; Codehighlighter1_649_651_Open_Image.style.display='inline'; Codehighlighter1_649_651_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    Error(</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> _info):info(_info)</span><span id="Codehighlighter1_649_651_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_649_651_Open_Text"><span style="color: rgb(0, 0, 0);">{ }</span></span><span style="color: rgb(0, 0, 0);"><br /><img id="Codehighlighter1_673_675_Open_Image" onclick="this.style.display='none'; Codehighlighter1_673_675_Open_Text.style.display='none'; Codehighlighter1_673_675_Closed_Image.style.display='inline'; Codehighlighter1_673_675_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_673_675_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_673_675_Closed_Text.style.display='none'; Codehighlighter1_673_675_Open_Image.style.display='inline'; Codehighlighter1_673_675_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    Error():info(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)</span><span id="Codehighlighter1_673_675_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_673_675_Open_Text"><span style="color: rgb(0, 0, 0);">{ }</span></span><span style="color: rgb(0, 0, 0);"><br /><img id="Codehighlighter1_694_707_Open_Image" onclick="this.style.display='none'; Codehighlighter1_694_707_Open_Text.style.display='none'; Codehighlighter1_694_707_Closed_Image.style.display='inline'; Codehighlighter1_694_707_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_694_707_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_694_707_Closed_Text.style.display='none'; Codehighlighter1_694_707_Open_Image.style.display='inline'; Codehighlighter1_694_707_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> what()</span><span id="Codehighlighter1_694_707_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_694_707_Open_Text"><span style="color: rgb(0, 0, 0);">{</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> info;}</span></span><span style="color: rgb(0, 0, 0);">   <br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_743_936_Open_Image" onclick="this.style.display='none'; Codehighlighter1_743_936_Open_Text.style.display='none'; Codehighlighter1_743_936_Closed_Image.style.display='inline'; Codehighlighter1_743_936_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_743_936_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_743_936_Closed_Text.style.display='none'; Codehighlighter1_743_936_Open_Image.style.display='inline'; Codehighlighter1_743_936_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> printPorland(Exp</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);"> exp)</span><span id="Codehighlighter1_743_936_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_743_936_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    cout </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);"> exp.op ;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(exp.lhs.isNumber)  cout </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);"> exp.lhs.number;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> printPorland(</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">exp.lhs.pExp);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(exp.rhs.isNumber)  cout </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);"> exp.rhs.number;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> printPorland(</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">exp.rhs.pExp);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> main()<br /><img id="Codehighlighter1_950_2397_Open_Image" onclick="this.style.display='none'; Codehighlighter1_950_2397_Open_Text.style.display='none'; Codehighlighter1_950_2397_Closed_Image.style.display='inline'; Codehighlighter1_950_2397_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_950_2397_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_950_2397_Closed_Text.style.display='none'; Codehighlighter1_950_2397_Open_Image.style.display='inline'; Codehighlighter1_950_2397_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_950_2397_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_950_2397_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    stack</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Item</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">  ExpStack;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> tmpChar;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    Item tmpItem;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    Item tmpLhs;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    Item tmpRhs;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">  numbers </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">0123456789</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">  operators </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+-*/</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    cout</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Input the Express(输入 'e'标识结束):</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><img id="Codehighlighter1_1165_2336_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1165_2336_Open_Text.style.display='none'; Codehighlighter1_1165_2336_Closed_Image.style.display='inline'; Codehighlighter1_1165_2336_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1165_2336_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1165_2336_Closed_Text.style.display='none'; Codehighlighter1_1165_2336_Open_Image.style.display='inline'; Codehighlighter1_1165_2336_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">do</span><span id="Codehighlighter1_1165_2336_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_1165_2336_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img id="Codehighlighter1_1171_2183_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1171_2183_Open_Text.style.display='none'; Codehighlighter1_1171_2183_Closed_Image.style.display='inline'; Codehighlighter1_1171_2183_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1171_2183_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1171_2183_Closed_Text.style.display='none'; Codehighlighter1_1171_2183_Open_Image.style.display='inline'; Codehighlighter1_1171_2183_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">try</span><span id="Codehighlighter1_1171_2183_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_1171_2183_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img id="Codehighlighter1_1194_1966_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1194_1966_Open_Text.style.display='none'; Codehighlighter1_1194_1966_Closed_Image.style.display='inline'; Codehighlighter1_1194_1966_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1194_1966_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1194_1966_Closed_Text.style.display='none'; Codehighlighter1_1194_1966_Open_Image.style.display='inline'; Codehighlighter1_1194_1966_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(cin</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">tmpChar)</span><span id="Codehighlighter1_1194_1966_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_1194_1966_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(tmpChar </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">e</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 255);">break</span><span style="color: rgb(0, 0, 0);">;  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">e为结束符</span><span style="color: rgb(0, 128, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(find(numbers.begin(), numbers.end(),  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">是一个数字</span><span style="color: rgb(0, 128, 0);"><br /><img id="Codehighlighter1_1320_1421_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1320_1421_Open_Text.style.display='none'; Codehighlighter1_1320_1421_Closed_Image.style.display='inline'; Codehighlighter1_1320_1421_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1320_1421_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1320_1421_Closed_Text.style.display='none'; Codehighlighter1_1320_1421_Open_Image.style.display='inline'; Codehighlighter1_1320_1421_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">                    tmpChar)</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">numbers.end())</span><span id="Codehighlighter1_1320_1421_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_1320_1421_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                tmpItem.isNumber </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                tmpItem.number   </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> tmpChar;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                ExpStack.push(tmpItem);</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">数字入栈</span><span style="color: rgb(0, 128, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(find(operators.begin(), operators.end(), </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">是一个操作符</span><span style="color: rgb(0, 128, 0);"><br /><img id="Codehighlighter1_1511_1903_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1511_1903_Open_Text.style.display='none'; Codehighlighter1_1511_1903_Closed_Image.style.display='inline'; Codehighlighter1_1511_1903_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1511_1903_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1511_1903_Closed_Text.style.display='none'; Codehighlighter1_1511_1903_Open_Image.style.display='inline'; Codehighlighter1_1511_1903_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">                    tmpChar)</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">operators.end())</span><span id="Codehighlighter1_1511_1903_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_1511_1903_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">操作符每次要对应两个被操作数，否则语法错误</span><span style="color: rgb(0, 128, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">                </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(ExpStack.size()</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 255);">throw</span><span style="color: rgb(0, 0, 0);"> Error(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Syntactic Error!</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">); <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">操作符两边的元素出栈</span><span style="color: rgb(0, 128, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">                tmpRhs </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> ExpStack.top();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                ExpStack.pop();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                tmpLhs </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> ExpStack.top();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                ExpStack.pop();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                tmpItem.isNumber </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">;   </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">非数字，是一个表达式</span><span style="color: rgb(0, 128, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">                tmpItem.pExp </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> shared_ptr</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Exp</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Exp(tmpChar, tmpLhs, tmpRhs)); <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                ExpStack.push(tmpItem);     </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">表达式入栈</span><span style="color: rgb(0, 128, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">                           <br /><img id="Codehighlighter1_1909_1962_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1909_1962_Open_Text.style.display='none'; Codehighlighter1_1909_1962_Closed_Image.style.display='inline'; Codehighlighter1_1909_1962_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1909_1962_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1909_1962_Closed_Text.style.display='none'; Codehighlighter1_1909_1962_Open_Image.style.display='inline'; Codehighlighter1_1909_1962_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span></span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> </span><span id="Codehighlighter1_1909_1962_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_1909_1962_Open_Text"><span style="color: rgb(0, 0, 0);">{  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 未知字符</span><span style="color: rgb(0, 128, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">                </span><span style="color: rgb(0, 0, 255);">throw</span><span style="color: rgb(0, 0, 0);">  Error(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Unknow Character!</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(ExpStack.size()</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 255);">throw</span><span style="color: rgb(0, 0, 0);"> Error(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Syntactic Error!</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        tmpItem </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> ExpStack.top();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        ExpStack.pop();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(tmpItem.isNumber) cout </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);"> tmpItem.number </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">endl;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> printPorland(</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">tmpItem.pExp);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        cout </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);"> endl;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_2199_2277_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2199_2277_Open_Text.style.display='none'; Codehighlighter1_2199_2277_Closed_Image.style.display='inline'; Codehighlighter1_2199_2277_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2199_2277_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_2199_2277_Closed_Text.style.display='none'; Codehighlighter1_2199_2277_Open_Image.style.display='inline'; Codehighlighter1_2199_2277_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    }</span></span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);">(Error</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);"> e)</span><span id="Codehighlighter1_2199_2277_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_2199_2277_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        cout </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);"> e.what() </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);"> endl;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        getline(cin, </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">());        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">跳过错误的当前行</span><span style="color: rgb(0, 128, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">    }</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        cout </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Try again?(y/n)</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);"> endl;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        cin </span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);"> tmpChar;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(tmpChar </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">y</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);"> tmpChar </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">Y</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span></span></div><img src ="http://www.cppblog.com/nj-blog/aggbug/16011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/nj-blog/" target="_blank">小山日志</a> 2006-12-05 14:45 <a href="http://www.cppblog.com/nj-blog/archive/2006/12/05/16011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】乔布斯在斯坦福大学的演讲</title><link>http://www.cppblog.com/nj-blog/archive/2006/11/05/14704.html</link><dc:creator>小山日志</dc:creator><author>小山日志</author><pubDate>Sun, 05 Nov 2006 13:30:00 GMT</pubDate><guid>http://www.cppblog.com/nj-blog/archive/2006/11/05/14704.html</guid><wfw:comment>http://www.cppblog.com/nj-blog/comments/14704.html</wfw:comment><comments>http://www.cppblog.com/nj-blog/archive/2006/11/05/14704.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/nj-blog/comments/commentRss/14704.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/nj-blog/services/trackbacks/14704.html</trackback:ping><description><![CDATA[
		<p>转自<a class="" title="" href="http://www.zhuoqun.net/" target=""><font color="#0000ff">Dreamer's Blog</font><br /></a><br />      今天在网上无意中发现了苹果电脑之父乔布斯在斯坦福大学的演讲，他在演讲中说了三个关于自己的故事，我看了之后很有感触。今天把原文和译文都发上来，供大家参考。另外<a href="http://www.youtube.com/watch?v=D1R-jKKp3NA" target="_blank" tip="">这里有YouTube上的视频</a>观看。<a href="http://uschools.com:8000/Members/administrator/Uschools.com_Discussion_Forums/Member%20Discussion%20Forums/edu/301583579097/forum_topic" target="_blank" tip="">这里有演讲mp3下载。</a><br /><br />      Steve Jobs说，你得找出你爱的 (You've got to find what you love.)。 <br /><br />      以下是苹果计算机公司与Pixar动画制作室执行长Steve Jobs在2005年六月12日对全体史丹佛大学毕业生的演讲内容：<br /><br />      今天，有荣幸来到各位从世界上最好的学校之一毕业的毕业典礼上。我从来没从大学毕业。说实话，这是我离大学毕业最近的一刻。今天，我只说三个故事，不谈大道理，三个故事就好。 <br /><br />      第一个故事，是关于人生中的点点滴滴怎么串连在一起。 <br /><br />      我在里德学院（Reed college）待了六个月就办休学了。到我退学前，一共休学了十八个月。那么，我为什么休学？ <br /><br />      这得从我出生前讲起。我的亲生母亲当时是个研究生，年轻未婚妈妈，她决定让别人收养我。她强烈觉得应该让有大学毕业的人收养我，所以我出生时，她就准备让我被一对律师夫妇收养。但是这对夫妻到了最后一刻反悔了，他们想收养女孩。所以在等待收养名单上的一对夫妻，我的养父母，在一天半夜里接到一通电话，问他们「有一名意外出生的男孩，你们要认养他吗？」而他们的回答是「当然要」。后来，我的生母发现，我现在的妈妈从来没有大学毕业，我现在的爸爸则连高中毕业也没有。她拒绝在认养文件上做最后签字。直到几个月后，我的养父母同意将来一定会让我上大学，她才软化态度。 <br /><br />      十七年后，我上大学了。但是当时我无知选了一所学费几乎跟史丹佛一样贵的大学，我那工人阶级的父母所有积蓄都花在我的学费上。六个月后，我看不出念这个书的价值何在。那时候，我不知道这辈子要干什么，也不知道念大学能对我有什么帮助，而且我为了念这个书，花光了我父母这辈子的所有积蓄，所以我决定休学，相信船到桥头自然直。当时这个决定看来相当可怕，可是现在看来，那是我这辈子做过最好的决定之一。当我休学之后，我再也不用上我没兴趣的必修课，把时间拿去听那些我有兴趣的课。 <br /><br />      这一点也不浪漫。我没有宿舍，所以我睡在友人家里的地板上，靠着回收可乐空罐的五先令退费买吃的，每个星期天晚上得走七里的路绕过大半个镇去印度教的Hare Krishna神庙吃顿好料。我喜欢Hare Krishna神庙的好料。追寻我的好奇与直觉，我所驻足的大部分事物，后来看来都成了无价之宝。举例来说： <br /><br />      当时里德学院有着大概是全国最好的书法指导。在整个校园内的每一张海报上，每个抽屉的标签上，都是美丽的手写字。因为我休学了，可以不照正常选课程序来，所以我跑去学书法。我学了serif与san serif字体，学到在不同字母组合间变更字间距，学到活版印刷伟大的地方。书法的美好、历史感与艺术感是科学所无法捕捉的，我觉得那很迷人。 <br /><br />      我没预期过学的这些东西能在我生活中起些什么实际作用，不过十年后，当我在设计第一台麦金塔时，我想起了当时所学的东西，所以把这些东西都设计进了麦金塔里，这是第一台能印刷出漂亮东西的计算机。如果我没沉溺于那样一门课里，麦金塔可能就不会有多重字体跟变间距字体了。又因为Windows抄袭了麦金塔的使用方式，如果当年我没这样做，大概世界上所有的个人计算机都不会有这些东西，印不出现在我们看到的漂亮的字来了。当然，当我还在大学里时，不可能把这些点点滴滴预先串在一起，但是这在十年后回顾，就显得非常清楚。 <br /><br /><span style="COLOR: red">      我再说一次，你不能预先把点点滴滴串在一起；唯有未来回顾时，你才会明白那些点点滴滴是如何串在一起的。所以你得相信，你现在所体会的东西，将来多少会连接在一块。你得信任某个东西，直觉也好，命运也好，生命也好，或者业力。这种作法从来没让我失望，也让我的人生整个不同起来。 </span><br /><br />      我的第二个故事，有关爱与失去。 <br /><br />      我好运－年轻时就发现自己爱做什么事。我二十岁时，跟Steve Wozniak在我爸妈的车库里开始了苹果计算机的事业。我们拼命工作，苹果计算机在十年间从一间车库里的两个小伙子扩展成了一家员工超过四千人、市价二十亿美金的公司，在那之前一年推出了我们最棒的作品－麦金塔，而我才刚迈入人生的第三十个年头，然后被炒鱿鱼。要怎么让自己创办的公司炒自己鱿鱼？好吧，当苹果计算机成长后，我请了一个我以为他在经营公司上很有才干的家伙来，他在头几年也确实干得不错。可是我们对未来的愿景不同，最后只好分道扬镳，董事会站在他那边，炒了我鱿鱼，公开把我请了出去。曾经是我整个成年生活重心的东西不见了，令我不知所措。 <br /><br />      有几个月，我实在不知道要干什么好。我觉得我令企业界的前辈们失望－我把他们交给我的接力棒弄丢了。我见了创办HP的David Packard跟创办Intel的Bob Noyce，跟他们说我很抱歉把事情搞砸得很厉害了。我成了公众的非常负面示范，我甚至想要离开硅谷。但是渐渐的，我发现，我还是喜爱着我做过的事情，在苹果的日子经历的事件没有丝毫改变我爱做的事。我被否定了，可是我还是爱做那些事情，所以我决定从头来过。 <br /><br />      当时我没发现，但是现在看来，被苹果计算机开除，是我所经历过最好的事情。成功的沉重被从头来过的轻松所取代，每件事情都不那么确定，让我自由进入这辈子最有创意的年代。 <br /><br />      接下来五年，我开了一家叫做NeXT的公司，又开一家叫做Pixar的公司，也跟后来的老婆谈起了恋爱。Pixar接着制作了世界上第一部全计算机动画电影，玩具总动员，现在是世界上最成功的动画制作公司。然后，苹果计算机买下了NeXT，我回到了苹果，我们在NeXT发展的技术成了苹果计算机后来复兴的核心。我也有了个美妙的家庭。 <br /><br />      我很确定，如果当年苹果计算机没开除我，就不会发生这些事情。这帖药很苦口，可是我想苹果计算机这个病人需要这帖药。<span style="COLOR: red">有时候，人生会用砖头打你的头。不要丧失信心。我确信，我爱我所做的事情，这就是这些年来让我继续走下去的唯一理由。你得找出你爱的，工作上是如此，对情人也是如此。你的工作将填满你的一大块人生，唯一获得真正满足的方法就是做你相信是伟大的工作，而唯一做伟大工作的方法是爱你所做的事。如果你还没找到这些事，继续找，别停顿。尽你全心全力，你知道你一定会找到。而且，如同任何伟大的关系，事情只会随着时间愈来愈好。所以，在你找到之前，继续找，别停顿。 </span><br /><br /><br />      我的第三个故事，关于死亡。 <br /><br />      当我十七岁时，我读到一则格言，好像是「把每一天都当成生命中的最后一天，你就会轻松自在。」这对我影响深远，在过去33年里，我每天早上都会照镜子，自问：「如果今天是此生最后一日，我今天要干些什么？」每当我连续太多天都得到一个「没事做」的答案时，我就知道我必须有所变革了。 <br /><br />      提醒自己快死了，是我在人生中下重大决定时，所用过最重要的工具。因为几乎每件事－所有外界期望、所有名誉、所有对困