﻿<?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++博客-MR.OutMan的小窝-文章分类-随意写写一些小的问题</title><link>http://www.cppblog.com/cwh5635/category/15029.html</link><description>生活就是悲剧，有些人剧终了，有些人正开始。。。</description><language>zh-cn</language><lastBuildDate>Wed, 28 Dec 2011 12:55:10 GMT</lastBuildDate><pubDate>Wed, 28 Dec 2011 12:55:10 GMT</pubDate><ttl>60</ttl><item><title>wxwidget程序的啓動過程</title><link>http://www.cppblog.com/cwh5635/articles/161997.html</link><dc:creator>MR.OutMan</dc:creator><author>MR.OutMan</author><pubDate>Tue, 13 Dec 2011 00:17:00 GMT</pubDate><guid>http://www.cppblog.com/cwh5635/articles/161997.html</guid><wfw:comment>http://www.cppblog.com/cwh5635/comments/161997.html</wfw:comment><comments>http://www.cppblog.com/cwh5635/articles/161997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cwh5635/comments/commentRss/161997.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cwh5635/services/trackbacks/161997.html</trackback:ping><description><![CDATA[通過宏替換生成wxapp派生類的對象。main函數<br />wxentry-&gt;wxEntryReal-&gt;wxInitiazer對象-&gt;處理命令行-&gt;註冊事件驅動-〉wxTheApp-〉Run()<br />在run裏面處理所有的消息。<br />通過套來套去的全局變量，實現了啓動=。=<img src ="http://www.cppblog.com/cwh5635/aggbug/161997.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cwh5635/" target="_blank">MR.OutMan</a> 2011-12-13 08:17 <a href="http://www.cppblog.com/cwh5635/articles/161997.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>折腾了半天autoconf</title><link>http://www.cppblog.com/cwh5635/articles/161241.html</link><dc:creator>MR.OutMan</dc:creator><author>MR.OutMan</author><pubDate>Wed, 30 Nov 2011 10:10:00 GMT</pubDate><guid>http://www.cppblog.com/cwh5635/articles/161241.html</guid><wfw:comment>http://www.cppblog.com/cwh5635/comments/161241.html</wfw:comment><comments>http://www.cppblog.com/cwh5635/articles/161241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cwh5635/comments/commentRss/161241.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cwh5635/services/trackbacks/161241.html</trackback:ping><description><![CDATA[毕业设计开始了，虽然具体题目没定，老师也不鸟我的邮件。<br />但是兵马未动，粮草先行。先把我的环境折腾完再说。<br />想到今后要无穷无尽的命令行。也不想写makefile。<br />我先用该死的autoconf搭个自动生成的框架出来：<br />一开始误入歧途。看了很久的autoconf的手册，也慢慢的在搭，结果始终无法吧wxwidget加进去。然后google：wxwidget autoconf<br />结果官方的wiki华丽丽的出来了。<a href="http://baike.baidu.com/view/181979.htm" target="_blank"><em>囧</em></a><br />然后就是按照官方的wiki上写了撒<br />先autoscan生成autoconf.scan，改成autoconf.ac<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">-*-</span><span style="color: #000000; ">&nbsp;Autoconf&nbsp;</span><span style="color: #000000; ">-*-</span><span style="color: #000000; "><br />#&nbsp;Process&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">&nbsp;file&nbsp;with&nbsp;autoconf&nbsp;to&nbsp;produce&nbsp;a&nbsp;configure&nbsp;script.<br /><br />AC_PREREQ([</span><span style="color: #000000; ">2.68</span><span style="color: #000000; ">])<br />AC_INIT(xx,&nbsp;</span><span style="color: #000000; ">1.0</span><span style="color: #000000; ">,&nbsp;cwh5635@gmail.com)<br />AC_CONFIG_SRCDIR([xx.cpp])<br />AC_CONFIG_HEADERS([config.h])<br />AM_INIT_AUTOMAKE(xx,&nbsp;</span><span style="color: #000000; ">1.0</span><span style="color: #000000;">)#这里非常关键，如果没有这一行，aclocal就不会生成aclocal.m4<br />#&nbsp;Checks&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;programs.<br />AC_PROG_CXX<br /><br />#&nbsp;Checks&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;libraries.<br />AM_OPTIONS_WXCONFIG<br />reqwx</span><span style="color: #000000; ">=</span><span style="color: #000000; ">2.4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />AM_PATH_WXCONFIG($reqwx,&nbsp;wxWin</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br /></span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;test&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">$wxWin</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;AC_MSG_ERROR([<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxWidgets&nbsp;must&nbsp;be&nbsp;installed&nbsp;on&nbsp;your&nbsp;system.<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Please&nbsp;check&nbsp;that&nbsp;wx</span><span style="color: #000000; ">-</span><span style="color: #000000; ">config&nbsp;</span><span style="color: #0000FF; ">is</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;path,&nbsp;the&nbsp;directory<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;wxWidgets&nbsp;libraries&nbsp;are&nbsp;installed&nbsp;(returned&nbsp;by<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">wx-config&nbsp;--libs</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;or&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">wx-config&nbsp;--static&nbsp;--libs</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;command)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">is</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;LD_LIBRARY_PATH&nbsp;or&nbsp;equivalent&nbsp;variable&nbsp;and<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxWidgets&nbsp;version&nbsp;</span><span style="color: #0000FF; ">is</span><span style="color: #000000; ">&nbsp;$reqwx&nbsp;or&nbsp;above.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;])<br />fi<br />&nbsp;<br />CPPFLAGS</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">$CPPFLAGS&nbsp;$WX_CPPFLAGS</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />CXXFLAGS</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">$CXXFLAGS&nbsp;$WX_CXXFLAGS_ONLY</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />CFLAGS</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">$CFLAGS&nbsp;$WX_CFLAGS_ONLY</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />LIBS</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">$LIBS&nbsp;$WX_LIBS</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />#&nbsp;Checks&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;header&nbsp;files.<br /><br />#&nbsp;Checks&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;typedefs,&nbsp;structures,&nbsp;and&nbsp;compiler&nbsp;characteristics.<br /><br />#&nbsp;Checks&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;library&nbsp;functions.<br />AC_CONFIG_FILES([Makefile])<br />AC_OUTPUT</span></div>上面的变量定义于wxwin.m4.<span style="color: #000000; ">(WX_CPPFLAGS,WX_CXXFLAGS_ONLY</span>NEWS README AUTHORS ChangeLogNEWS README AUTHORS ChangeLog<br /><span style="color: #000000;">).automake第一次出错了，后来我吧wxwin.m4改名成aclocal.m4然后就成功了，如果你也出现找不到这2个东西，可以试试。<br />接下来是第二个重点。<div>touch NEWS README AUTHORS ChangeLog<br />不使用这个的话，不会生成makefile.in<br />然后就是autoheader automake autoconf一路下去<br />makefile.am:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#sample&nbsp;Makefile.am<br />#builds&nbsp;two&nbsp;wxWidgets&nbsp;programs&nbsp;and&nbsp;one&nbsp;standard&nbsp;(text)&nbsp;c</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;program<br /><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;three&nbsp;output&nbsp;files</span><span style="color: #000000; "><br />noinst_PROGRAMS&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;xx<br /><br />#wxpanel&nbsp;definitions<br />#wxpanel_SOURCES&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;mainwxpanel.cc&nbsp;statictext.cc&nbsp;statictext.h&nbsp;main.h<br />#wxpanel_LDADD&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;@LIBS@<br />#wxpanel_CXXFLAGS&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;@CXXFLAGS@<br />xx_SOURCES&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;xx.cpp<br />xx_LDADD&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;@LIBS@<br />xx_CXXFLAGS&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;@CXXFLAGS@<br />#togglebutton&nbsp;definitions<br />#togglebutton_SOURCES&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;togglebutton.cc&nbsp;main.cc&nbsp;statictext.h&nbsp;main.h&nbsp;togglebutton.h<br />#togglebutton_LDADD&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;@LIBS@<br />#toggelbutton_CXXFLAGS&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;@CXXFLAGS@<br /><br />#cpexample&nbsp;definitions&nbsp;(note,&nbsp;use&nbsp;defaults,&nbsp;no&nbsp;definition&nbsp;necessary)<br />#cpexample_SOURCES&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cpexample.cc<br /></span></div>然后./configure<br />make编译成功。over～</div></span><img src ="http://www.cppblog.com/cwh5635/aggbug/161241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cwh5635/" target="_blank">MR.OutMan</a> 2011-11-30 18:10 <a href="http://www.cppblog.com/cwh5635/articles/161241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wxwidget2.9.2 linux使用</title><link>http://www.cppblog.com/cwh5635/articles/161221.html</link><dc:creator>MR.OutMan</dc:creator><author>MR.OutMan</author><pubDate>Wed, 30 Nov 2011 03:23:00 GMT</pubDate><guid>http://www.cppblog.com/cwh5635/articles/161221.html</guid><wfw:comment>http://www.cppblog.com/cwh5635/comments/161221.html</wfw:comment><comments>http://www.cppblog.com/cwh5635/articles/161221.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cwh5635/comments/commentRss/161221.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cwh5635/services/trackbacks/161221.html</trackback:ping><description><![CDATA[国内没有什么资料。<br />环境是fedora16 gcc4.6.2<br />去sourceforge下载源码<br /><div>./configure --with-gtk --enable-unicode --disable-shared</div>make install<br />出现install finish就算成功了<br />这时候我先天真的cp -r $wxwidgetsource/include/wx /usr/include<br />g++ -o test test.cpp<br />出错。然后去stackoverflow上发贴<br />果断得到回答&nbsp;&nbsp; <br />我们可以通过wx-config获得环境具体去看wx-config --help<br />下面就是我获取环境的：<br />wx-config --cxxflags --libs<br />然后把输出加到前面的，成功<br />大概就是g++ -o test test.cpp 'wx-config --cxxflags --libs'<br />再注意点。<div>g++&nbsp; 'wx-config --cxxflags --libs' -o test test.cpp这样会出现链接库找不到，估计是bug<br /><div>http://ubuntuforums.org/showthread.php?p=11339484#post11339484</div>这个就是类似的问题，让我找到灵感解决这个最后的问题</div><img src ="http://www.cppblog.com/cwh5635/aggbug/161221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cwh5635/" target="_blank">MR.OutMan</a> 2011-11-30 11:23 <a href="http://www.cppblog.com/cwh5635/articles/161221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一個不錯的問題。</title><link>http://www.cppblog.com/cwh5635/articles/161200.html</link><dc:creator>MR.OutMan</dc:creator><author>MR.OutMan</author><pubDate>Tue, 29 Nov 2011 17:08:00 GMT</pubDate><guid>http://www.cppblog.com/cwh5635/articles/161200.html</guid><wfw:comment>http://www.cppblog.com/cwh5635/comments/161200.html</wfw:comment><comments>http://www.cppblog.com/cwh5635/articles/161200.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cwh5635/comments/commentRss/161200.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cwh5635/services/trackbacks/161200.html</trackback:ping><description><![CDATA[此問題摘自stackoverflow。<br />先回顧一下我們需要的知識。swap手法。用於編寫省事的代碼。核心當然就是使用std::swap了<br />如果有特殊需求，則編寫class：：swap。<br />我們來回顧下std::swap<br />swap(T&amp; a, T&amp; b大概就是這樣了。<br />下面看下問題<span class="Apple-style-span" style="background-color: #eeeeee; "><span style="color: #008080; ">&nbsp;<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">template</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">typename&nbsp;T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;buffer<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;create&nbsp;a&nbsp;buffer&nbsp;of&nbsp;length&nbsp;n</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;buffer(unsigned&nbsp;n)&nbsp;:&nbsp;rc(</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;unsigned(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">))),&nbsp;data(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;T[n])&nbsp;{&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;buffer(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;buffer</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">&nbsp;rhs)&nbsp;:&nbsp;rc(</span><span style="color: #000000; ">++</span><span style="color: #000000; ">rhs.rc),&nbsp;data(rhs.data)&nbsp;{&nbsp;}<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;buffer</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">operator</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(buffer</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;rhs)<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::swap(rc,&nbsp;rhs.rc);<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::swap(data,&nbsp;rhs.data);<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">buffer()<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">--</span><span style="color: #000000; ">rc&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;{<br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;data;<br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;(</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">rc);<br /></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;mutable&nbsp;unsigned&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">&nbsp;rc;<br /></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;data;<br /></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">};<br /></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()&nbsp;{<br /></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;buffer</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;numbers;<br /></span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;numbers&nbsp;n1(</span><span style="color: #000000; ">10</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;numbers&nbsp;n2(</span><span style="color: #000000; ">20</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;numbers&nbsp;n3(</span><span style="color: #000000; ">30</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;n1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;n2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;n3&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;n2;<br /></span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #000000; ">}<br />好的，問題出來咯。。。。你能看出來麽。。。。<br /></span></div></span></span>std::swap(rc, rhs.rc);這句<br />我們來看看真正的應該是怎麽樣呢rc是個mutable int&amp;，方便看我則假設typedef mutable int&amp; xx<br />我們看到，2重&amp;，實際上還是交換了裏面的值。<br />問題到了這裡，你看出來了嗎<br />&#8216;<img src="http://www.cppblog.com/images/cppblog_com/cwh5635/dyDoo.png" alt="" border="0" height="468" width="466" /><br /><img src="http://www.cppblog.com/images/cppblog_com/cwh5635/JaONz.png" alt="" border="0" height="464" width="466" /><br />簡單的說就是類似于上圖，你交換了refcount。但是你卻沒有改變引用。so。最後程序就會崩。<br />珍愛生命，遠離c++.........<br /><span class="Apple-style-span" style="background-color: #eeeeee; "><span style="color: #008080; "><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; "><br /></span></div></span></span><img src ="http://www.cppblog.com/cwh5635/aggbug/161200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cwh5635/" target="_blank">MR.OutMan</a> 2011-11-30 01:08 <a href="http://www.cppblog.com/cwh5635/articles/161200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>闲的蛋疼，刚好群里在讨论单链表的交叉检测，就实现了一下</title><link>http://www.cppblog.com/cwh5635/articles/127825.html</link><dc:creator>MR.OutMan</dc:creator><author>MR.OutMan</author><pubDate>Sun, 26 Sep 2010 19:45:00 GMT</pubDate><guid>http://www.cppblog.com/cwh5635/articles/127825.html</guid><wfw:comment>http://www.cppblog.com/cwh5635/comments/127825.html</wfw:comment><comments>http://www.cppblog.com/cwh5635/articles/127825.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cwh5635/comments/commentRss/127825.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cwh5635/services/trackbacks/127825.html</trackback:ping><description><![CDATA[<p>首先说下我的思路，链表交叉，也就是2个链表最后指向同一块内存区域，所以无论如何，只要交叉，最后一个元素的地址总是相等的...然后，还有一种情况：2个链表内部成环否，当然，只要相交就2个链表都成环了<br>成环好检测，就是设定2个指针，步长不同，遍历，当成环的时候，会出现2个相等的情况，而如果链表成环的话，相交部分必然包含环，不管从环中何点开始相交，a链表中环中元素必然存在于b链表中，基于这个，我开始写代码了。。。。<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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">typename&nbsp;pNodeName</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>BOOL&nbsp;ListIsRing(pNodeName&nbsp;Listhead,&nbsp;pNodeName</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;OutNodePointer)</span></div>
<p>我的构思是：如果成环，返回TRUE以及判定条件的那个指针，OutPutNodePointer就是这个指针，留作程序自用，并且假如不成环的话，程序将返回FALSE以及指向最后节点的指针以备自用。。。<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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">typename&nbsp;pNodeName</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>BOOL&nbsp;ListIsRing(pNodeName&nbsp;Listhead,&nbsp;pNodeName</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;OutNodePointer)<br><img id=Codehighlighter1_92_457_Open_Image onclick="this.style.display='none'; Codehighlighter1_92_457_Open_Text.style.display='none'; Codehighlighter1_92_457_Closed_Image.style.display='inline'; Codehighlighter1_92_457_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_92_457_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_92_457_Closed_Text.style.display='none'; Codehighlighter1_92_457_Open_Image.style.display='inline'; Codehighlighter1_92_457_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_92_457_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_92_457_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;NodeName&nbsp;p1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Listhead;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;NodeName&nbsp;p2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Listhead;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;assert(NULL&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;OutPutNodePointer&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">OutPutNodePointer);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(NULL&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;p1&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;&nbsp;p1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">next)<br><img id=Codehighlighter1_251_413_Open_Image onclick="this.style.display='none'; Codehighlighter1_251_413_Open_Text.style.display='none'; Codehighlighter1_251_413_Closed_Image.style.display='inline'; Codehighlighter1_251_413_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_251_413_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_251_413_Closed_Text.style.display='none'; Codehighlighter1_251_413_Open_Image.style.display='inline'; Codehighlighter1_251_413_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_251_413_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_251_413_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">next;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(NULL&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;p1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">next)<br><img id=Codehighlighter1_295_309_Open_Image onclick="this.style.display='none'; Codehighlighter1_295_309_Open_Text.style.display='none'; Codehighlighter1_295_309_Closed_Image.style.display='inline'; Codehighlighter1_295_309_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_295_309_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_295_309_Closed_Text.style.display='none'; Codehighlighter1_295_309_Open_Image.style.display='inline'; Codehighlighter1_295_309_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_295_309_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_295_309_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">next;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p2</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">next;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(p2&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;p1)<br><img id=Codehighlighter1_362_410_Open_Image onclick="this.style.display='none'; Codehighlighter1_362_410_Open_Text.style.display='none'; Codehighlighter1_362_410_Closed_Image.style.display='inline'; Codehighlighter1_362_410_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_362_410_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_362_410_Closed_Text.style.display='none'; Codehighlighter1_362_410_Open_Image.style.display='inline'; Codehighlighter1_362_410_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_362_410_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_362_410_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">OutPutNodePointer&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p1;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">OutPutNodePointer&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p1;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;FALSE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p><br>这时候我们就可以用这个函数来判断是否有环，并且能获得一个关键点<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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">typename&nbsp;pNodeName</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>BOOL&nbsp;IsIntersect(pNodeName&nbsp;Src1,&nbsp;pNodeName&nbsp;Src2)<br><img id=Codehighlighter1_78_611_Open_Image onclick="this.style.display='none'; Codehighlighter1_78_611_Open_Text.style.display='none'; Codehighlighter1_78_611_Closed_Image.style.display='inline'; Codehighlighter1_78_611_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_78_611_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_78_611_Closed_Text.style.display='none'; Codehighlighter1_78_611_Open_Image.style.display='inline'; Codehighlighter1_78_611_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_78_611_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_78_611_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;List1Status,&nbsp;List2Status,&nbsp;tempNode;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;pNodeName&nbsp;Node1,&nbsp;Node2;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;List1Status&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ListIsRing(Src1,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Node1);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;List2Status&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ListIsRing(Src2,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Node2);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(List1Status&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;List2Status)<br><img id=Codehighlighter1_279_305_Open_Image onclick="this.style.display='none'; Codehighlighter1_279_305_Open_Text.style.display='none'; Codehighlighter1_279_305_Closed_Image.style.display='inline'; Codehighlighter1_279_305_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_279_305_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_279_305_Closed_Text.style.display='none'; Codehighlighter1_279_305_Open_Image.style.display='inline'; Codehighlighter1_279_305_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_279_305_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_279_305_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;FALSE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(Node1&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;Node2)<br><img id=Codehighlighter1_334_361_Open_Image onclick="this.style.display='none'; Codehighlighter1_334_361_Open_Text.style.display='none'; Codehighlighter1_334_361_Closed_Image.style.display='inline'; Codehighlighter1_334_361_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_334_361_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_334_361_Closed_Text.style.display='none'; Codehighlighter1_334_361_Open_Image.style.display='inline'; Codehighlighter1_334_361_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_334_361_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_334_361_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(List1Status)<br><img id=Codehighlighter1_387_589_Open_Image onclick="this.style.display='none'; Codehighlighter1_387_589_Open_Text.style.display='none'; Codehighlighter1_387_589_Closed_Image.style.display='inline'; Codehighlighter1_387_589_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_387_589_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_387_589_Closed_Text.style.display='none'; Codehighlighter1_387_589_Open_Image.style.display='inline'; Codehighlighter1_387_589_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_387_589_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_387_589_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempNode&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Node1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">next;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(tempNode&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;Node1)<br><img id=Codehighlighter1_455_582_Open_Image onclick="this.style.display='none'; Codehighlighter1_455_582_Open_Text.style.display='none'; Codehighlighter1_455_582_Closed_Image.style.display='inline'; Codehighlighter1_455_582_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_455_582_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_455_582_Closed_Text.style.display='none'; Codehighlighter1_455_582_Open_Image.style.display='inline'; Codehighlighter1_455_582_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_455_582_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_455_582_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tempNode&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;Node2)<br><img id=Codehighlighter1_497_536_Open_Image onclick="this.style.display='none'; Codehighlighter1_497_536_Open_Text.style.display='none'; Codehighlighter1_497_536_Closed_Image.style.display='inline'; Codehighlighter1_497_536_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_497_536_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_497_536_Closed_Text.style.display='none'; Codehighlighter1_497_536_Open_Image.style.display='inline'; Codehighlighter1_497_536_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_497_536_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_536_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempNode&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tempNode</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">next;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;FALSE;&nbsp;<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></div>
<p>这时候，当我认为这个题目算是pass掉之后，题目难度加大：找出链表交叉的首点.....经过思考，我大概的认为，思路是，通过上述这个函数IsIntersect，应该再传出来一个指针，也就是代码已经确定相交的点，然后通过这个点，把这个点之前的所有元素的地址复制到一个数组中，然后从数组尾开始往前遍历，任意一个数组到首或者有不相等的情况则跳出。<br><span class=short_text><span title="" style="COLOR: #000; BACKGROUND-COLOR: #e6ecf9" ze="Intersect" ye="相交" closure_uid_c9cvvp="109">这个时候，这个函数的形参应该再加上一个Out元素，以供别的函数使用，具体代码我就不写了....欢迎指点我更好的方法。<br></span></span></p>
<img src ="http://www.cppblog.com/cwh5635/aggbug/127825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cwh5635/" target="_blank">MR.OutMan</a> 2010-09-27 03:45 <a href="http://www.cppblog.com/cwh5635/articles/127825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>