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

<channel>
	<title>CP24 Planet</title>
	<atom:link href="http://planet.cp-24.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://planet.cp-24.com</link>
	<description>Keep updated on CP24 friends news!</description>
	<pubDate>Tue, 24 Apr 2012 23:48:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>RDC 2012</title>
		<link>http://www.nattee.net/?q=node/2171</link>
		<comments>http://www.nattee.net/?q=node/2171#comments</comments>
		<pubDate>Tue, 24 Apr 2012 23:48:39 +0000</pubDate>
		<dc:creator>dae</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">2171 at http://www.nattee.net</guid>
		<description><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><h1>Programming iRobot Create</h1>

<ul>
<li>download [MS Visual Studio 2008 Express]() ให้เลือก Visual C++ 2008 Express Edition with SP1 และเลือกภาษา English แล้วกด Download (ต้องใช้ version 2008 เท่านั้น)</li>
<li>download iRobot Create package [v1](<a href="http://www.nattee.net/files-dae/RDC2012_AutoBot_V1.rar">http://www.nattee.net/files-dae/RDC2012_AutoBot_V1.rar</a>)</li>
<li>download State Machine Demo [v2](<a href="http://www.nattee.net/files-dae/AutoRDC2012_V2_2.rar">http://www.nattee.net/files-dae/AutoRDC2012_V2_2.rar</a>)</li>
<li>download Timing Demo [v3](<a href="http://www.nattee.net/files-dae/AutoRDC2012_V3.rar">http://www.nattee.net/files-dae/AutoRDC2012_V3.rar</a>)</li>
<li>Slide สำหรับ state machine (<a href="http://www.nattee.net/files-dae/State_Machine.pptx">http://www.nattee.net/files-dae/State_Machine.pptx</a>)</li>
<li>Slide สำหรับเนื้อหาในวันที่ 25 [download ที่นี่](<a href="http://www.nattee.net/files-dae/iRobot%20Create.pdf">http://www.nattee.net/files-dae/iRobot%20Create.pdf</a>)</li>
<li>[Driver](<a href="http://www.nattee.net/files-dae/Hl-340.exe">http://www.nattee.net/files-dae/Hl-340.exe</a>) ของ USB to Serial อันที่แจกให้ </li>

<div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #339900;">#include &#60;stdio.h&#62;</span>
<span style="color: #339900;">#include &#60;iostream&#62;</span>
&#160;
<span style="color: #339900;">#include &#34;RobotConnector.h&#34;</span>
&#160;
<span style="color: #339900;">#include &#34;cv.h&#34;</span>
<span style="color: #339900;">#include &#34;highgui.h&#34;</span>
&#160;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&#160;
<span style="color: #339900;">#define Create_Comport &#34;COM4&#34;</span>
&#160;
<span style="color: #0000ff;">bool</span> isRecord <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
&#160;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	CreateData	robotData<span style="color: #008080;">;</span>
	RobotConnector	robot<span style="color: #008080;">;</span>
&#160;
	ofstream	record<span style="color: #008080;">;</span>
	record.<span style="color: #007788;">open</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;../data/robot.txt&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
	<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> <span style="color: #000040;">!</span>robot.<span style="color: #007788;">Connect</span><span style="color: #008000;">&#40;</span>Create_Comport<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&#60;&#60;</span> <span style="color: #FF0000;">&#34;Error : Can't connect to robot @&#34;</span> <span style="color: #000080;">&#60;&#60;</span> Create_Comport <span style="color: #000080;">&#60;&#60;</span> endl<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
&#160;
	robot.<span style="color: #007788;">DriveDirect</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	cvNamedWindow<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;Robot&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
&#160;
	<span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">true</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		cvWaitKey<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">30</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">double</span> vx, vz<span style="color: #008080;">;</span>
		vx <span style="color: #000080;">=</span> vz <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
&#160;
&#160;
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>robotData.<span style="color: #007788;">bumper</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&#60;&#60;</span> <span style="color: #FF0000;">&#34;bump left&#34;</span> <span style="color: #000080;">&#60;&#60;</span> endl<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>robotData.<span style="color: #007788;">bumper</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&#60;&#60;</span> <span style="color: #FF0000;">&#34;bump right&#34;</span> <span style="color: #000080;">&#60;&#60;</span> endl<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&#160;
&#160;
		<span style="color: #0000ff;">double</span> vl <span style="color: #000080;">=</span> vx <span style="color: #000040;">-</span> vz<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">double</span> vr <span style="color: #000080;">=</span> vx <span style="color: #000040;">+</span> vz<span style="color: #008080;">;</span>
&#160;
		<span style="color: #0000ff;">int</span> velL <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>vl<span style="color: #000040;">*</span>Create_MaxVel<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">int</span> velR <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>vr<span style="color: #000040;">*</span>Create_MaxVel<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
		<span style="color: #0000ff;">int</span> color <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">abs</span><span style="color: #008000;">&#40;</span>velL<span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">abs</span><span style="color: #008000;">&#40;</span>velR<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">4</span><span style="color: #008080;">;</span>
		color <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>color <span style="color: #000080;">&#60;</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #008080;">?</span> <span style="color: #0000dd;">0</span> <span style="color: #008080;">:</span> <span style="color: #008000;">&#40;</span>color <span style="color: #000080;">&#62;</span> <span style="color: #0000dd;">255</span><span style="color: #008000;">&#41;</span> <span style="color: #008080;">?</span> <span style="color: #0000dd;">255</span> <span style="color: #008080;">:</span> color<span style="color: #008080;">;</span>
&#160;
		<span style="color: #0000ff;">int</span> inten <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>robotData.<span style="color: #007788;">cliffSignal</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> robotData.<span style="color: #007788;">cliffSignal</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">8</span> <span style="color: #000040;">-</span> <span style="color: #0000dd;">63</span><span style="color: #008080;">;</span>
		inten <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>inten <span style="color: #000080;">&#60;</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #008080;">?</span> <span style="color: #0000dd;">0</span> <span style="color: #008080;">:</span> <span style="color: #008000;">&#40;</span>inten <span style="color: #000080;">&#62;</span> <span style="color: #0000dd;">255</span><span style="color: #008000;">&#41;</span> <span style="color: #008080;">?</span> <span style="color: #0000dd;">255</span> <span style="color: #008080;">:</span> inten<span style="color: #008080;">;</span>
&#160;
		<span style="color: #666666;">//cout &#60;&#60; color &#60;&#60; &#34; &#34; &#60;&#60; inten &#60;&#60; &#34; &#34; &#60;&#60; robotData.cliffSignal[1] &#60;&#60; &#34; &#34; &#60;&#60; robotData.cliffSignal[2] &#60;&#60; endl;</span>
&#160;
		robot.<span style="color: #007788;">LEDs</span><span style="color: #008000;">&#40;</span>velL <span style="color: #000080;">&#62;</span> <span style="color: #0000dd;">0</span>, velR <span style="color: #000080;">&#62;</span> <span style="color: #0000dd;">0</span>, color, inten<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> <span style="color: #000040;">!</span>robot.<span style="color: #007788;">DriveDirect</span><span style="color: #008000;">&#40;</span>velL, velR<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
			<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&#60;&#60;</span> <span style="color: #FF0000;">&#34;SetControl Fail&#34;</span> <span style="color: #000080;">&#60;&#60;</span> endl<span style="color: #008080;">;</span>
&#160;
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> <span style="color: #000040;">!</span>robot.<span style="color: #007788;">ReadData</span><span style="color: #008000;">&#40;</span>robotData<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
			<span style="color: #666666;">//cout &#60;&#60; &#34;ReadData Fail&#34; &#60;&#60; endl;</span>
		<span style="color: #008000;">&#125;</span>
&#160;
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> isRecord <span style="color: #008000;">&#41;</span>
			record <span style="color: #000080;">&#60;&#60;</span> robotData.<span style="color: #007788;">cliffSignal</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">&#60;&#60;</span> <span style="color: #FF0000;">&#34;<span style="color: #000099; font-weight: bold;">\t</span>&#34;</span> <span style="color: #000080;">&#60;&#60;</span> robotData.<span style="color: #007788;">cliffSignal</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">&#60;&#60;</span> <span style="color: #FF0000;">&#34;<span style="color: #000099; font-weight: bold;">\t</span>&#34;</span> <span style="color: #000080;">&#60;&#60;</span> robotData.<span style="color: #007788;">cliffSignal</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">&#60;&#60;</span> <span style="color: #FF0000;">&#34;<span style="color: #000099; font-weight: bold;">\t</span>&#34;</span> <span style="color: #000080;">&#60;&#60;</span> robotData.<span style="color: #007788;">cliffSignal</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">&#60;&#60;</span> endl<span style="color: #008080;">;</span>
&#160;
		<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&#60;&#60;</span> <span style="color: #FF0000;">&#34;Robot &#34;</span> <span style="color: #000080;">&#60;&#60;</span> robotData.<span style="color: #007788;">cliffSignal</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">&#60;&#60;</span> endl<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
&#160;
	robot.<span style="color: #007788;">Disconnect</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
 <thead><tr><th>Attachment</th><th>Size</th> </tr></thead>
<tbody>
 <tr class="odd"><td><span class="file"><img class="file-icon" alt="" src="/modules/file/icons/application-pdf.png" /> <a href="http://www.nattee.net/files-dae/iRobot%20Create.pdf">iRobot Create.pdf</a></span></td><td>3 MB</td> </tr>
 <tr class="even"><td><span class="file"><img class="file-icon" alt="" src="/modules/file/icons/application-octet-stream.png" /> <a href="http://www.nattee.net/files-dae/Hl-340.exe">Hl-340.exe</a></span></td><td>219.32 KB</td> </tr>
 <tr class="odd"><td><span class="file"><img class="file-icon" alt="" src="/modules/file/icons/application-octet-stream.png" /> <a href="http://www.nattee.net/files-dae/AutoRDC2012_V2_2.rar">AutoRDC2012_V2.rar</a></span></td><td>423.15 KB</td> </tr>
 <tr class="even"><td><span class="file"><img class="file-icon" alt="" src="/modules/file/icons/x-office-presentation.png" /> <a href="http://www.nattee.net/files-dae/State_Machine.pptx">State_Machine.pptx</a></span></td><td>63.06 KB</td> </tr>
 <tr class="odd"><td><span class="file"><img class="file-icon" alt="" src="/modules/file/icons/application-octet-stream.png" /> <a href="http://www.nattee.net/files-dae/AutoRDC2012_V3.rar">AutoRDC2012_V3.rar</a></span></td><td>422.18 KB</td> </tr>
</tbody>
</table>
</div></div></div>]]></description>
			<content:encoded><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<h1>Programming iRobot Create</h1>
<ul>
<li>download [MS Visual Studio 2008 Express]() ให้เลือก Visual C++ 2008 Express Edition with SP1 และเลือกภาษา English แล้วกด Download (ต้องใช้ version 2008 เท่านั้น)</li>
<li>download iRobot Create package [v1](<a href="http://www.nattee.net/files-dae/RDC2012_AutoBot_V1.rar">http://www.nattee.net/files-dae/RDC2012_AutoBot_V1.rar</a>)</li>
<li>download State Machine Demo [v2](<a href="http://www.nattee.net/files-dae/AutoRDC2012_V2_2.rar">http://www.nattee.net/files-dae/AutoRDC2012_V2_2.rar</a>)</li>
<li>download Timing Demo [v3](<a href="http://www.nattee.net/files-dae/AutoRDC2012_V3.rar">http://www.nattee.net/files-dae/AutoRDC2012_V3.rar</a>)</li>
<li>Slide สำหรับ state machine (<a href="http://www.nattee.net/files-dae/State_Machine.pptx">http://www.nattee.net/files-dae/State_Machine.pptx</a>)</li>
<li>Slide สำหรับเนื้อหาในวันที่ 25 [download ที่นี่](<a href="http://www.nattee.net/files-dae/iRobot%20Create.pdf">http://www.nattee.net/files-dae/iRobot%20Create.pdf</a>)</li>
<li>[Driver](<a href="http://www.nattee.net/files-dae/Hl-340.exe">http://www.nattee.net/files-dae/Hl-340.exe</a>) ของ USB to Serial อันที่แจกให้ </li>
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >#include &lt;stdio.h&gt;</span>
<span >#include &lt;iostream&gt;</span>
&nbsp;
<span >#include &quot;RobotConnector.h&quot;</span>
&nbsp;
<span >#include &quot;cv.h&quot;</span>
<span >#include &quot;highgui.h&quot;</span>
&nbsp;
<span >using</span> <span >namespace</span> std<span >;</span>
&nbsp;
<span >#define Create_Comport &quot;COM4&quot;</span>
&nbsp;
<span >bool</span> isRecord <span >=</span> <span >false</span><span >;</span>
&nbsp;
<span >int</span> main<span >&#40;</span><span >&#41;</span>
<span >&#123;</span>
	CreateData	robotData<span >;</span>
	RobotConnector	robot<span >;</span>
&nbsp;
	ofstream	record<span >;</span>
	record.<span >open</span><span >&#40;</span><span >&quot;../data/robot.txt&quot;</span><span >&#41;</span><span >;</span>
&nbsp;
	<span >if</span><span >&#40;</span> <span >!</span>robot.<span >Connect</span><span >&#40;</span>Create_Comport<span >&#41;</span> <span >&#41;</span>
	<span >&#123;</span>
		<span >cout</span> <span >&lt;&lt;</span> <span >&quot;Error : Can't connect to robot @&quot;</span> <span >&lt;&lt;</span> Create_Comport <span >&lt;&lt;</span> endl<span >;</span>
		<span >return</span> <span >-</span><span >1</span><span >;</span>
	<span >&#125;</span>
&nbsp;
	robot.<span >DriveDirect</span><span >&#40;</span><span >0</span>, <span >0</span><span >&#41;</span><span >;</span>
	cvNamedWindow<span >&#40;</span><span >&quot;Robot&quot;</span><span >&#41;</span><span >;</span>
&nbsp;
&nbsp;
	<span >while</span><span >&#40;</span><span >true</span><span >&#41;</span>
	<span >&#123;</span>
		cvWaitKey<span >&#40;</span><span >30</span><span >&#41;</span><span >;</span>
		<span >double</span> vx, vz<span >;</span>
		vx <span >=</span> vz <span >=</span> <span >0</span><span >;</span>
&nbsp;
&nbsp;
		<span >if</span> <span >&#40;</span>robotData.<span >bumper</span><span >&#91;</span><span >0</span><span >&#93;</span><span >&#41;</span> <span >&#123;</span>
			<span >cout</span> <span >&lt;&lt;</span> <span >&quot;bump left&quot;</span> <span >&lt;&lt;</span> endl<span >;</span>
		<span >&#125;</span>
		<span >if</span> <span >&#40;</span>robotData.<span >bumper</span><span >&#91;</span><span >1</span><span >&#93;</span><span >&#41;</span> <span >&#123;</span>
			<span >cout</span> <span >&lt;&lt;</span> <span >&quot;bump right&quot;</span> <span >&lt;&lt;</span> endl<span >;</span>
		<span >&#125;</span>
&nbsp;
&nbsp;
		<span >double</span> vl <span >=</span> vx <span >-</span> vz<span >;</span>
		<span >double</span> vr <span >=</span> vx <span >+</span> vz<span >;</span>
&nbsp;
		<span >int</span> velL <span >=</span> <span >&#40;</span><span >int</span><span >&#41;</span><span >&#40;</span>vl<span >*</span>Create_MaxVel<span >&#41;</span><span >;</span>
		<span >int</span> velR <span >=</span> <span >&#40;</span><span >int</span><span >&#41;</span><span >&#40;</span>vr<span >*</span>Create_MaxVel<span >&#41;</span><span >;</span>
&nbsp;
		<span >int</span> color <span >=</span> <span >&#40;</span><span >abs</span><span >&#40;</span>velL<span >&#41;</span><span >+</span><span >abs</span><span >&#40;</span>velR<span >&#41;</span><span >&#41;</span><span >/</span><span >4</span><span >;</span>
		color <span >=</span> <span >&#40;</span>color <span >&lt;</span> <span >0</span><span >&#41;</span> <span >?</span> <span >0</span> <span >:</span> <span >&#40;</span>color <span >&gt;</span> <span >255</span><span >&#41;</span> <span >?</span> <span >255</span> <span >:</span> color<span >;</span>
&nbsp;
		<span >int</span> inten <span >=</span> <span >&#40;</span>robotData.<span >cliffSignal</span><span >&#91;</span><span >1</span><span >&#93;</span> <span >+</span> robotData.<span >cliffSignal</span><span >&#91;</span><span >2</span><span >&#93;</span><span >&#41;</span><span >/</span><span >8</span> <span >-</span> <span >63</span><span >;</span>
		inten <span >=</span> <span >&#40;</span>inten <span >&lt;</span> <span >0</span><span >&#41;</span> <span >?</span> <span >0</span> <span >:</span> <span >&#40;</span>inten <span >&gt;</span> <span >255</span><span >&#41;</span> <span >?</span> <span >255</span> <span >:</span> inten<span >;</span>
&nbsp;
		<span >//cout &lt;&lt; color &lt;&lt; &quot; &quot; &lt;&lt; inten &lt;&lt; &quot; &quot; &lt;&lt; robotData.cliffSignal[1] &lt;&lt; &quot; &quot; &lt;&lt; robotData.cliffSignal[2] &lt;&lt; endl;</span>
&nbsp;
		robot.<span >LEDs</span><span >&#40;</span>velL <span >&gt;</span> <span >0</span>, velR <span >&gt;</span> <span >0</span>, color, inten<span >&#41;</span><span >;</span>
&nbsp;
		<span >if</span><span >&#40;</span> <span >!</span>robot.<span >DriveDirect</span><span >&#40;</span>velL, velR<span >&#41;</span> <span >&#41;</span>
			<span >cout</span> <span >&lt;&lt;</span> <span >&quot;SetControl Fail&quot;</span> <span >&lt;&lt;</span> endl<span >;</span>
&nbsp;
		<span >if</span><span >&#40;</span> <span >!</span>robot.<span >ReadData</span><span >&#40;</span>robotData<span >&#41;</span> <span >&#41;</span> <span >&#123;</span>
			<span >//cout &lt;&lt; &quot;ReadData Fail&quot; &lt;&lt; endl;</span>
		<span >&#125;</span>
&nbsp;
		<span >if</span><span >&#40;</span> isRecord <span >&#41;</span>
			record <span >&lt;&lt;</span> robotData.<span >cliffSignal</span><span >&#91;</span><span >0</span><span >&#93;</span> <span >&lt;&lt;</span> <span >&quot;<span >\t</span>&quot;</span> <span >&lt;&lt;</span> robotData.<span >cliffSignal</span><span >&#91;</span><span >1</span><span >&#93;</span> <span >&lt;&lt;</span> <span >&quot;<span >\t</span>&quot;</span> <span >&lt;&lt;</span> robotData.<span >cliffSignal</span><span >&#91;</span><span >2</span><span >&#93;</span> <span >&lt;&lt;</span> <span >&quot;<span >\t</span>&quot;</span> <span >&lt;&lt;</span> robotData.<span >cliffSignal</span><span >&#91;</span><span >3</span><span >&#93;</span> <span >&lt;&lt;</span> endl<span >;</span>
&nbsp;
		<span >cout</span> <span >&lt;&lt;</span> <span >&quot;Robot &quot;</span> <span >&lt;&lt;</span> robotData.<span >cliffSignal</span><span >&#91;</span><span >0</span><span >&#93;</span> <span >&lt;&lt;</span> endl<span >;</span>
	<span >&#125;</span>
&nbsp;
	robot.<span >Disconnect</span><span >&#40;</span><span >&#41;</span><span >;</span>
&nbsp;
	<span >return</span> <span >0</span><span >;</span>
<span >&#125;</span></pre>
</div>
</div>
</div>
</div>
<div class="field field-name-upload field-type-file field-label-hidden">
<div class="field-items">
<div class="field-item even">
<table class="sticky-enabled">
<thead>
<tr>
<th>Attachment</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><span class="file"><img class="file-icon" alt="" title="application/pdf" src="/modules/file/icons/application-pdf.png" /> <a href="http://www.nattee.net/files-dae/iRobot%20Create.pdf" type="application/pdf; length=3149606">iRobot Create.pdf</a></span></td>
<td>3 MB</td>
</tr>
<tr class="even">
<td><span class="file"><img class="file-icon" alt="" title="application/x-msdos-program" src="/modules/file/icons/application-octet-stream.png" /> <a href="http://www.nattee.net/files-dae/Hl-340.exe" type="application/x-msdos-program; length=224587">Hl-340.exe</a></span></td>
<td>219.32 KB</td>
</tr>
<tr class="odd">
<td><span class="file"><img class="file-icon" alt="" title="application/rar" src="/modules/file/icons/application-octet-stream.png" /> <a href="http://www.nattee.net/files-dae/AutoRDC2012_V2_2.rar" type="application/rar; length=433305">AutoRDC2012_V2.rar</a></span></td>
<td>423.15 KB</td>
</tr>
<tr class="even">
<td><span class="file"><img class="file-icon" alt="" title="application/vnd.openxmlformats-officedocument.presentationml.presentation" src="/modules/file/icons/x-office-presentation.png" /> <a href="http://www.nattee.net/files-dae/State_Machine.pptx" type="application/vnd.openxmlformats-officedocument.presentationml.presentation; length=64577">State_Machine.pptx</a></span></td>
<td>63.06 KB</td>
</tr>
<tr class="odd">
<td><span class="file"><img class="file-icon" alt="" title="application/rar" src="/modules/file/icons/application-octet-stream.png" /> <a href="http://www.nattee.net/files-dae/AutoRDC2012_V3.rar" type="application/rar; length=432313">AutoRDC2012_V3.rar</a></span></td>
<td>422.18 KB</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nattee.net/?q=node/2171/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Drupal feed importer</title>
		<link>http://www.nattee.net/?q=node/2170</link>
		<comments>http://www.nattee.net/?q=node/2170#comments</comments>
		<pubDate>Sun, 25 Mar 2012 12:52:02 +0000</pubDate>
		<dc:creator>dae</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">2170 at http://www.nattee.net</guid>
		<description><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Recently, I have a chance to use drupal commerce with feed importer. Feed importer is very good because I can easily transfer data from MySQL to the website.</p>
<p>However, sometime the import process crash and I am stuck with importing page with xx% status and nothing can be done via <span class="caps">UI</span>.</p>
<p>To fix this, I have to manually edit the status of the import. Basically, all I have to do is to</p>
<blockquote><p>update feeds_source set state = ‘b:0;’;<br />
  update feeds_source set fetcher_result=’b:0;’;</p>
</blockquote>
<p>Check this<br />.</p></div></div></div>]]></description>
			<content:encoded><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<p>Recently, I have a chance to use drupal commerce with feed importer. Feed importer is very good because I can easily transfer data from MySQL to the website.</p>
<p>However, sometime the import process crash and I am stuck with importing page with xx% status and nothing can be done via <span class="caps">UI</span>.</p>
<p>To fix this, I have to manually edit the status of the import. Basically, all I have to do is to</p>
<blockquote><p>update feeds_source set state = ‘b:0;’;<br />
  update feeds_source set fetcher_result=’b:0;’;</p>
</blockquote>
<p>Check this<br />.</p>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nattee.net/?q=node/2170/feed/</wfw:commentRss>
		</item>
		<item>
		<title>07-huffmanTree.c</title>
		<link>http://www.nattee.net/?q=node/2166</link>
		<comments>http://www.nattee.net/?q=node/2166#comments</comments>
		<pubDate>Tue, 13 Mar 2012 17:59:08 +0000</pubDate>
		<dc:creator>dae</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">2166 at http://www.nattee.net</guid>
		<description><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #339900;">#include &#60;stdio.h&#62;</span>
<span style="color: #339900;">#include &#60;stdlib.h&#62;</span>
&#160;
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">struct</span> SHuffmanNode<span style="color: #008080;">;</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> SHuffmanNode <span style="color: #000040;">*</span>HuffmanNode<span style="color: #008080;">;</span>
&#160;
<span style="color: #0000ff;">typedef</span> HuffmanNode DType<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span>DType d1, DType d2<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>toString<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>buf, DType d<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">struct</span> SBHeap <span style="color: #008000;">&#123;</span>
    DType <span style="color: #000040;">*</span>data<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> length<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> size<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> SBHeap <span style="color: #000040;">*</span>BHeap<span style="color: #008080;">;</span>
<span style="color: #666666;">//---------------------------------------------</span>
BHeap newBHeap<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> length<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    BHeap h <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>BHeap<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">struct</span> SBHeap<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>DType <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>length <span style="color: #000040;">*</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>DType<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length <span style="color: #000080;">=</span> length<span style="color: #008080;">;</span>
    h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> h<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> freeBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>h<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">int</span> sizeOfBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> isEmptyBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> isFullBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">==</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">void</span> printBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;heap:[ &#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> buf<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#60;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%s &#34;</span>, toString<span style="color: #008000;">&#40;</span>buf, h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;]<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">void</span> addBHeap<span style="color: #008000;">&#40;</span>BHeap h, DType x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>isFullBHeap<span style="color: #008000;">&#40;</span>h<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;add : heap is full<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> k <span style="color: #000080;">=</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> k <span style="color: #000080;">&#62;</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">int</span> p <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>cmp<span style="color: #008000;">&#40;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,x<span style="color: #008000;">&#41;</span> <span style="color: #000080;">&#60;=</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>  <span style="color: #666666;">// min heap</span>
            h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            k <span style="color: #000080;">=</span> p<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> x<span style="color: #008080;">;</span>
        h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> _heapify<span style="color: #008000;">&#40;</span>BHeap h, <span style="color: #0000ff;">int</span> k<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> c<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> <span style="color: #008000;">&#40;</span>c <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&#60;</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span> <span style="color: #000080;">&#60;</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000040;">&#38;&#38;</span> cmp<span style="color: #008000;">&#40;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>c<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>, h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span> c <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&#60;</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> c<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
&#160;
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>cmp<span style="color: #008000;">&#40;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span> c <span style="color: #008000;">&#93;</span>,h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&#62;=</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        DType t <span style="color: #000080;">=</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span> c <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span> c <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
        k <span style="color: #000080;">=</span> c<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
DType removeMinBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>  <span style="color: #666666;">// min heap</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>isEmptyBHeap<span style="color: #008000;">&#40;</span>h<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;heap is empty !<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
        DType min <span style="color: #000080;">=</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        _heapify<span style="color: #008000;">&#40;</span>h, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">return</span> min<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">struct</span> SHuffmanNode  <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">char</span>    c<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span>     freq<span style="color: #008080;">;</span>
    HuffmanNode left<span style="color: #008080;">;</span>
    HuffmanNode right<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span>HuffmanNode n1, HuffmanNode n2<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>n1<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>freq <span style="color: #000080;">==</span> n2<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>freq<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>n1<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>freq <span style="color: #000080;">&#60;</span> n2<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>freq<span style="color: #008000;">&#41;</span> <span style="color: #008080;">?</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span> <span style="color: #008080;">:</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>toString<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>buf, HuffmanNode n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">sprintf</span><span style="color: #008000;">&#40;</span>buf, <span style="color: #FF0000;">&#34;[%c:%d]&#34;</span>, n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>c, n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>freq<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> buf<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
HuffmanNode newHuffmanNode<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c, <span style="color: #0000ff;">int</span> f, HuffmanNode left, HuffmanNode right<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    HuffmanNode n <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>HuffmanNode<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">struct</span> SHuffmanNode<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>c <span style="color: #000080;">=</span> c<span style="color: #008080;">;</span>
    n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>freq <span style="color: #000080;">=</span> f<span style="color: #008080;">;</span>
    n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>left <span style="color: #000080;">=</span> left<span style="color: #008080;">;</span>
    n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>right <span style="color: #000080;">=</span> right<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> n<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> freeHuffmanNode<span style="color: #008000;">&#40;</span>HuffmanNode n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
HuffmanNode buildHuffmanTree<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> f<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    BHeap h <span style="color: #000080;">=</span> newBHeap<span style="color: #008000;">&#40;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&#60;</span> n<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        addBHeap<span style="color: #008000;">&#40;</span>h, newHuffmanNode<span style="color: #008000;">&#40;</span>c<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>, f<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">NULL</span>, <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&#60;</span> n <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        HuffmanNode n1 <span style="color: #000080;">=</span> removeMinBHeap<span style="color: #008000;">&#40;</span>h<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        HuffmanNode n2 <span style="color: #000080;">=</span> removeMinBHeap<span style="color: #008000;">&#40;</span>h<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        addBHeap<span style="color: #008000;">&#40;</span>h, newHuffmanNode<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">'*'</span>, n1<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>freq <span style="color: #000040;">+</span> n2<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>freq, n2, n1<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> removeMinBHeap<span style="color: #008000;">&#40;</span>h<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&#160;
<span style="color: #0000ff;">void</span> printCodesR<span style="color: #008000;">&#40;</span>HuffmanNode r, <span style="color: #0000ff;">char</span> codes<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> k<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>left <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span> <span style="color: #000040;">&#38;&#38;</span> r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>right <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        codes<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;"></span>'</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%c : %s<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>, r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>c, codes<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
        codes<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span> printCodesR<span style="color: #008000;">&#40;</span>r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>left, codes, k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        codes<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #FF0000;">'1'</span><span style="color: #008080;">;</span> printCodesR<span style="color: #008000;">&#40;</span>r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>right, codes, k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> printCodes<span style="color: #008000;">&#40;</span>HuffmanNode r<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">char</span> codes<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">40</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    printCodesR<span style="color: #008000;">&#40;</span>r, codes, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------------</span>
<span style="color: #0000ff;">void</span> visit<span style="color: #008000;">&#40;</span>HuffmanNode r<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">char</span> buf<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%s &#34;</span>, toString<span style="color: #008000;">&#40;</span>buf, r<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> inorder<span style="color: #008000;">&#40;</span>HuffmanNode r<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>r <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    inorder<span style="color: #008000;">&#40;</span>r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>left<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    visit<span style="color: #008000;">&#40;</span>r<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    inorder<span style="color: #008000;">&#40;</span>r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> preorder<span style="color: #008000;">&#40;</span>HuffmanNode r<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>r <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    visit<span style="color: #008000;">&#40;</span>r<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    preorder<span style="color: #008000;">&#40;</span>r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>left<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    preorder<span style="color: #008000;">&#40;</span>r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> postorder<span style="color: #008000;">&#40;</span>HuffmanNode r<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>r <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    postorder<span style="color: #008000;">&#40;</span>r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>left<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    postorder<span style="color: #008000;">&#40;</span>r<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    visit<span style="color: #008000;">&#40;</span>r<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//-----------------------------------------------------</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n <span style="color: #000080;">=</span> <span style="color: #0000dd;">13</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//    char c[] = {'1', '2', '3', '4', '5', '6', '7',</span>
<span style="color: #666666;">//                '8', '9', 'A', 'B', 'C', 'D'};</span>
<span style="color: #666666;">//    int  f[] = {24, 16, 15, 11, 8, 4, 4, 4, 4, 4, 2, 2, 2};</span>
    <span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #FF0000;">'A'</span>, <span style="color: #FF0000;">'B'</span>, <span style="color: #FF0000;">'C'</span>, <span style="color: #FF0000;">'D'</span>, <span style="color: #FF0000;">'E'</span>, <span style="color: #FF0000;">'F'</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> f<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">40</span>, <span style="color: #0000dd;">21</span>, <span style="color: #0000dd;">15</span>, <span style="color: #0000dd;">14</span>, <span style="color: #0000dd;">8</span>, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    n <span style="color: #000080;">=</span> <span style="color: #0000dd;">6</span><span style="color: #008080;">;</span>
    HuffmanNode r <span style="color: #000080;">=</span> buildHuffmanTree<span style="color: #008000;">&#40;</span>c, f, n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;inorder   = &#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> inorder<span style="color: #008000;">&#40;</span>r<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;preorder  = &#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> preorder<span style="color: #008000;">&#40;</span>r<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;postorder = &#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> postorder<span style="color: #008000;">&#40;</span>r<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printCodes<span style="color: #008000;">&#40;</span>r<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div></div></div>]]></description>
			<content:encoded><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >#include &lt;stdio.h&gt;</span>
<span >#include &lt;stdlib.h&gt;</span>
&nbsp;
<span >//-------------------------------------------------------</span>
<span >struct</span> SHuffmanNode<span >;</span>
<span >typedef</span> <span >struct</span> SHuffmanNode <span >*</span>HuffmanNode<span >;</span>
&nbsp;
<span >typedef</span> HuffmanNode DType<span >;</span>
<span >int</span> cmp<span >&#40;</span>DType d1, DType d2<span >&#41;</span><span >;</span>
<span >char</span> <span >*</span>toString<span >&#40;</span><span >char</span> <span >*</span>buf, DType d<span >&#41;</span><span >;</span>
<span >//-------------------------------------------------------</span>
<span >struct</span> SBHeap <span >&#123;</span>
    DType <span >*</span>data<span >;</span>
    <span >int</span> length<span >;</span>
    <span >int</span> size<span >;</span>
<span >&#125;</span><span >;</span>
<span >typedef</span> <span >struct</span> SBHeap <span >*</span>BHeap<span >;</span>
<span >//---------------------------------------------</span>
BHeap newBHeap<span >&#40;</span><span >int</span> length<span >&#41;</span> <span >&#123;</span>
    BHeap h <span >=</span> <span >&#40;</span>BHeap<span >&#41;</span> <span >malloc</span><span >&#40;</span><span >sizeof</span><span >&#40;</span><span >struct</span> SBHeap<span >&#41;</span><span >&#41;</span><span >;</span>
    h<span >-</span><span >&gt;</span>data <span >=</span> <span >&#40;</span>DType <span >*</span><span >&#41;</span> <span >malloc</span><span >&#40;</span>length <span >*</span> <span >sizeof</span><span >&#40;</span>DType<span >&#41;</span><span >&#41;</span><span >;</span>
    h<span >-</span><span >&gt;</span>length <span >=</span> length<span >;</span>
    h<span >-</span><span >&gt;</span>size <span >=</span> <span >0</span><span >;</span>
    <span >return</span> h<span >;</span>
<span >&#125;</span>
<span >void</span> freeBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >free</span><span >&#40;</span>h<span >-</span><span >&gt;</span>data<span >&#41;</span><span >;</span>
    <span >free</span><span >&#40;</span>h<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >int</span> sizeOfBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >return</span> h<span >-</span><span >&gt;</span>size<span >;</span>
<span >&#125;</span>
<span >int</span> isEmptyBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >return</span> h<span >-</span><span >&gt;</span>size <span >==</span> <span >0</span><span >;</span>
<span >&#125;</span>
<span >int</span> isFullBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >return</span> h<span >-</span><span >&gt;</span>size <span >==</span> h<span >-</span><span >&gt;</span>length<span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >void</span> printBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >printf</span><span >&#40;</span><span >&quot;heap:[ &quot;</span><span >&#41;</span><span >;</span>
    <span >int</span> i<span >;</span>
    <span >char</span> buf<span >&#91;</span><span >100</span><span >&#93;</span><span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span><span >0</span><span >;</span> i<span >&lt;</span>h<span >-</span><span >&gt;</span>size<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;%s &quot;</span>, toString<span >&#40;</span>buf, h<span >-</span><span >&gt;</span>data<span >&#91;</span>i<span >&#93;</span><span >&#41;</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    <span >printf</span><span >&#40;</span><span >&quot;]<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >void</span> addBHeap<span >&#40;</span>BHeap h, DType x<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>isFullBHeap<span >&#40;</span>h<span >&#41;</span><span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;add : heap is full<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
        <span >exit</span><span >&#40;</span><span >1</span><span >&#41;</span><span >;</span>
    <span >&#125;</span> <span >else</span> <span >&#123;</span>
        <span >int</span> k <span >=</span> h<span >-</span><span >&gt;</span>size<span >;</span>
        <span >while</span><span >&#40;</span> k <span >&gt;</span> <span >0</span> <span >&#41;</span> <span >&#123;</span>
            <span >int</span> p <span >=</span> <span >&#40;</span>k<span >-</span><span >1</span><span >&#41;</span><span >/</span><span >2</span><span >;</span>
            <span >if</span> <span >&#40;</span>cmp<span >&#40;</span>h<span >-</span><span >&gt;</span>data<span >&#91;</span>p<span >&#93;</span>,x<span >&#41;</span> <span >&lt;=</span> <span >0</span><span >&#41;</span> <span >break</span><span >;</span>  <span >// min heap</span>
            h<span >-</span><span >&gt;</span>data<span >&#91;</span>k<span >&#93;</span> <span >=</span> h<span >-</span><span >&gt;</span>data<span >&#91;</span>p<span >&#93;</span><span >;</span>
            k <span >=</span> p<span >;</span>
        <span >&#125;</span>
        h<span >-</span><span >&gt;</span>data<span >&#91;</span>k<span >&#93;</span> <span >=</span> x<span >;</span>
        h<span >-</span><span >&gt;</span>size<span >++</span><span >;</span>
    <span >&#125;</span>
<span >&#125;</span>
<span >void</span> _heapify<span >&#40;</span>BHeap h, <span >int</span> k<span >&#41;</span> <span >&#123;</span>
    <span >int</span> c<span >;</span>
    <span >while</span> <span >&#40;</span> <span >&#40;</span>c <span >=</span> <span >2</span><span >*</span>k<span >+</span><span >1</span><span >&#41;</span> <span >&lt;</span> h<span >-</span><span >&gt;</span>size<span >&#41;</span> <span >&#123;</span>
        <span >if</span> <span >&#40;</span>c<span >+</span><span >1</span> <span >&lt;</span> h<span >-</span><span >&gt;</span>size <span >&amp;&amp;</span> cmp<span >&#40;</span>h<span >-</span><span >&gt;</span>data<span >&#91;</span>c<span >+</span><span >1</span><span >&#93;</span>, h<span >-</span><span >&gt;</span>data<span >&#91;</span> c <span >&#93;</span><span >&#41;</span> <span >&lt;</span> <span >0</span><span >&#41;</span> c<span >++</span><span >;</span>
&nbsp;
        <span >if</span> <span >&#40;</span>cmp<span >&#40;</span>h<span >-</span><span >&gt;</span>data<span >&#91;</span> c <span >&#93;</span>,h<span >-</span><span >&gt;</span>data<span >&#91;</span>k<span >&#93;</span><span >&#41;</span> <span >&gt;=</span> <span >0</span><span >&#41;</span> <span >break</span><span >;</span>
        DType t <span >=</span> h<span >-</span><span >&gt;</span>data<span >&#91;</span>k<span >&#93;</span><span >;</span>
        h<span >-</span><span >&gt;</span>data<span >&#91;</span>k<span >&#93;</span> <span >=</span> h<span >-</span><span >&gt;</span>data<span >&#91;</span> c <span >&#93;</span><span >;</span>
        h<span >-</span><span >&gt;</span>data<span >&#91;</span> c <span >&#93;</span> <span >=</span> t<span >;</span>
        k <span >=</span> c<span >;</span>
    <span >&#125;</span>
<span >&#125;</span>
DType removeMinBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>  <span >// min heap</span>
    <span >if</span> <span >&#40;</span>isEmptyBHeap<span >&#40;</span>h<span >&#41;</span><span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;heap is empty !<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
        <span >exit</span><span >&#40;</span><span >1</span><span >&#41;</span><span >;</span>
    <span >&#125;</span> <span >else</span> <span >&#123;</span>
        DType min <span >=</span> h<span >-</span><span >&gt;</span>data<span >&#91;</span><span >0</span><span >&#93;</span><span >;</span>
        h<span >-</span><span >&gt;</span>data<span >&#91;</span><span >0</span><span >&#93;</span> <span >=</span> h<span >-</span><span >&gt;</span>data<span >&#91;</span>h<span >-</span><span >&gt;</span>size<span >-</span><span >1</span><span >&#93;</span><span >;</span>
        _heapify<span >&#40;</span>h, <span >0</span><span >&#41;</span><span >;</span>
        h<span >-</span><span >&gt;</span>size<span >--</span><span >;</span>
        <span >return</span> min<span >;</span>
    <span >&#125;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >struct</span> SHuffmanNode  <span >&#123;</span>
    <span >char</span>    c<span >;</span>
    <span >int</span>     freq<span >;</span>
    HuffmanNode left<span >;</span>
    HuffmanNode right<span >;</span>
<span >&#125;</span><span >;</span>
<span >//-------------------------------------------------------</span>
<span >int</span> cmp<span >&#40;</span>HuffmanNode n1, HuffmanNode n2<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>n1<span >-</span><span >&gt;</span>freq <span >==</span> n2<span >-</span><span >&gt;</span>freq<span >&#41;</span> <span >return</span> <span >0</span><span >;</span>
    <span >return</span> <span >&#40;</span>n1<span >-</span><span >&gt;</span>freq <span >&lt;</span> n2<span >-</span><span >&gt;</span>freq<span >&#41;</span> <span >?</span> <span >-</span><span >1</span> <span >:</span> <span >1</span><span >;</span>
<span >&#125;</span>
<span >char</span> <span >*</span>toString<span >&#40;</span><span >char</span> <span >*</span>buf, HuffmanNode n<span >&#41;</span> <span >&#123;</span>
    <span >sprintf</span><span >&#40;</span>buf, <span >&quot;[%c:%d]&quot;</span>, n<span >-</span><span >&gt;</span>c, n<span >-</span><span >&gt;</span>freq<span >&#41;</span><span >;</span>
    <span >return</span> buf<span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
HuffmanNode newHuffmanNode<span >&#40;</span><span >char</span> c, <span >int</span> f, HuffmanNode left, HuffmanNode right<span >&#41;</span> <span >&#123;</span>
    HuffmanNode n <span >=</span> <span >&#40;</span>HuffmanNode<span >&#41;</span> <span >malloc</span><span >&#40;</span><span >sizeof</span><span >&#40;</span><span >struct</span> SHuffmanNode<span >&#41;</span><span >&#41;</span><span >;</span>
    n<span >-</span><span >&gt;</span>c <span >=</span> c<span >;</span>
    n<span >-</span><span >&gt;</span>freq <span >=</span> f<span >;</span>
    n<span >-</span><span >&gt;</span>left <span >=</span> left<span >;</span>
    n<span >-</span><span >&gt;</span>right <span >=</span> right<span >;</span>
    <span >return</span> n<span >;</span>
<span >&#125;</span>
<span >void</span> freeHuffmanNode<span >&#40;</span>HuffmanNode n<span >&#41;</span> <span >&#123;</span>
    <span >free</span><span >&#40;</span>n<span >&#41;</span><span >;</span>
<span >&#125;</span>
HuffmanNode buildHuffmanTree<span >&#40;</span><span >char</span> c<span >&#91;</span><span >&#93;</span>, <span >int</span> f<span >&#91;</span><span >&#93;</span>, <span >int</span> n<span >&#41;</span> <span >&#123;</span>
    BHeap h <span >=</span> newBHeap<span >&#40;</span>n<span >&#41;</span><span >;</span>
    <span >int</span> i<span >;</span>
    <span >for</span> <span >&#40;</span>i <span >=</span> <span >0</span><span >;</span> i <span >&lt;</span> n<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        addBHeap<span >&#40;</span>h, newHuffmanNode<span >&#40;</span>c<span >&#91;</span>i<span >&#93;</span>, f<span >&#91;</span>i<span >&#93;</span>, <span >NULL</span>, <span >NULL</span><span >&#41;</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    <span >for</span> <span >&#40;</span>i <span >=</span> <span >0</span><span >;</span> i <span >&lt;</span> n <span >-</span> <span >1</span><span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        HuffmanNode n1 <span >=</span> removeMinBHeap<span >&#40;</span>h<span >&#41;</span><span >;</span>
        HuffmanNode n2 <span >=</span> removeMinBHeap<span >&#40;</span>h<span >&#41;</span><span >;</span>
        addBHeap<span >&#40;</span>h, newHuffmanNode<span >&#40;</span><span >'*'</span>, n1<span >-</span><span >&gt;</span>freq <span >+</span> n2<span >-</span><span >&gt;</span>freq, n2, n1<span >&#41;</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    <span >return</span> removeMinBHeap<span >&#40;</span>h<span >&#41;</span><span >;</span>
<span >&#125;</span>
&nbsp;
<span >void</span> printCodesR<span >&#40;</span>HuffmanNode r, <span >char</span> codes<span >&#91;</span><span >&#93;</span>, <span >int</span> k<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>r<span >-</span><span >&gt;</span>left <span >==</span> <span >NULL</span> <span >&amp;&amp;</span> r<span >-</span><span >&gt;</span>right <span >==</span> <span >NULL</span><span >&#41;</span> <span >&#123;</span>
        codes<span >&#91;</span>k<span >&#93;</span> <span >=</span> <span >'<span >\0</span>'</span><span >;</span>
        <span >printf</span><span >&#40;</span><span >&quot;%c : %s<span >\n</span>&quot;</span>, r<span >-</span><span >&gt;</span>c, codes<span >&#41;</span><span >;</span>
    <span >&#125;</span> <span >else</span> <span >&#123;</span>
        codes<span >&#91;</span>k<span >&#93;</span> <span >=</span> <span >'0'</span><span >;</span> printCodesR<span >&#40;</span>r<span >-</span><span >&gt;</span>left, codes, k<span >+</span><span >1</span><span >&#41;</span><span >;</span>
        codes<span >&#91;</span>k<span >&#93;</span> <span >=</span> <span >'1'</span><span >;</span> printCodesR<span >&#40;</span>r<span >-</span><span >&gt;</span>right, codes, k<span >+</span><span >1</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
<span >&#125;</span>
<span >void</span> printCodes<span >&#40;</span>HuffmanNode r<span >&#41;</span> <span >&#123;</span>
    <span >char</span> codes<span >&#91;</span><span >40</span><span >&#93;</span><span >;</span>
    printCodesR<span >&#40;</span>r, codes, <span >0</span><span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------------</span>
<span >void</span> visit<span >&#40;</span>HuffmanNode r<span >&#41;</span> <span >&#123;</span>
    <span >char</span> buf<span >&#91;</span><span >100</span><span >&#93;</span><span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;%s &quot;</span>, toString<span >&#40;</span>buf, r<span >&#41;</span><span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >void</span> inorder<span >&#40;</span>HuffmanNode r<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>r <span >==</span> <span >NULL</span><span >&#41;</span> <span >return</span><span >;</span>
    inorder<span >&#40;</span>r<span >-</span><span >&gt;</span>left<span >&#41;</span><span >;</span>
    visit<span >&#40;</span>r<span >&#41;</span><span >;</span>
    inorder<span >&#40;</span>r<span >-</span><span >&gt;</span>right<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >void</span> preorder<span >&#40;</span>HuffmanNode r<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>r <span >==</span> <span >NULL</span><span >&#41;</span> <span >return</span><span >;</span>
    visit<span >&#40;</span>r<span >&#41;</span><span >;</span>
    preorder<span >&#40;</span>r<span >-</span><span >&gt;</span>left<span >&#41;</span><span >;</span>
    preorder<span >&#40;</span>r<span >-</span><span >&gt;</span>right<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >void</span> postorder<span >&#40;</span>HuffmanNode r<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>r <span >==</span> <span >NULL</span><span >&#41;</span> <span >return</span><span >;</span>
    postorder<span >&#40;</span>r<span >-</span><span >&gt;</span>left<span >&#41;</span><span >;</span>
    postorder<span >&#40;</span>r<span >-</span><span >&gt;</span>right<span >&#41;</span><span >;</span>
    visit<span >&#40;</span>r<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//-----------------------------------------------------</span>
<span >int</span> main<span >&#40;</span><span >int</span> argc, <span >char</span> <span >*</span>argv<span >&#91;</span><span >&#93;</span><span >&#41;</span> <span >&#123;</span>
    <span >int</span> n <span >=</span> <span >13</span><span >;</span>
<span >//    char c[] = {'1', '2', '3', '4', '5', '6', '7',</span>
<span >//                '8', '9', 'A', 'B', 'C', 'D'};</span>
<span >//    int  f[] = {24, 16, 15, 11, 8, 4, 4, 4, 4, 4, 2, 2, 2};</span>
    <span >char</span> c<span >&#91;</span><span >&#93;</span> <span >=</span> <span >&#123;</span><span >'A'</span>, <span >'B'</span>, <span >'C'</span>, <span >'D'</span>, <span >'E'</span>, <span >'F'</span><span >&#125;</span><span >;</span>
    <span >int</span> f<span >&#91;</span><span >&#93;</span> <span >=</span> <span >&#123;</span><span >40</span>, <span >21</span>, <span >15</span>, <span >14</span>, <span >8</span>, <span >2</span><span >&#125;</span><span >;</span>
    n <span >=</span> <span >6</span><span >;</span>
    HuffmanNode r <span >=</span> buildHuffmanTree<span >&#40;</span>c, f, n<span >&#41;</span><span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;inorder   = &quot;</span><span >&#41;</span><span >;</span> inorder<span >&#40;</span>r<span >&#41;</span><span >;</span> <span >printf</span><span >&#40;</span><span >&quot;<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;preorder  = &quot;</span><span >&#41;</span><span >;</span> preorder<span >&#40;</span>r<span >&#41;</span><span >;</span> <span >printf</span><span >&#40;</span><span >&quot;<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;postorder = &quot;</span><span >&#41;</span><span >;</span> postorder<span >&#40;</span>r<span >&#41;</span><span >;</span> <span >printf</span><span >&#40;</span><span >&quot;<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
    printCodes<span >&#40;</span>r<span >&#41;</span><span >;</span>
    <span >return</span> <span >0</span><span >;</span>
<span >&#125;</span></pre>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nattee.net/?q=node/2166/feed/</wfw:commentRss>
		</item>
		<item>
		<title>05-linkedlist.c</title>
		<link>http://www.nattee.net/?q=node/2162</link>
		<comments>http://www.nattee.net/?q=node/2162#comments</comments>
		<pubDate>Fri, 09 Mar 2012 02:33:42 +0000</pubDate>
		<dc:creator>dae</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">2162 at http://www.nattee.net</guid>
		<description><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #339900;">#include &#60;stdio.h&#62;</span>
<span style="color: #339900;">#include &#60;stdlib.h&#62;</span>
&#160;
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">float</span> DType<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span>DType d1, DType d2<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>toString<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>buf, DType d<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span> d1, <span style="color: #0000ff;">float</span> d2<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>d1 <span style="color: #000080;">==</span> d2<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>d1 <span style="color: #000080;">&#60;</span> d2<span style="color: #008000;">&#41;</span> <span style="color: #008080;">?</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span> <span style="color: #008080;">:</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>toString<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>buf, <span style="color: #0000ff;">float</span> d<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">sprintf</span><span style="color: #008000;">&#40;</span>buf, <span style="color: #FF0000;">&#34;%6.2f&#34;</span>, d<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> buf<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">struct</span> SLinkedNode<span style="color: #008080;">;</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> SLinkedNode <span style="color: #000040;">*</span>LinkedNode<span style="color: #008080;">;</span>
&#160;
<span style="color: #0000ff;">struct</span> SLinkedNode  <span style="color: #008000;">&#123;</span>
    DType data<span style="color: #008080;">;</span>
    LinkedNode next<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
LinkedNode newLinkedNode<span style="color: #008000;">&#40;</span>DType d, LinkedNode next<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    LinkedNode n <span style="color: #000080;">=</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">struct</span> SLinkedNode<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data <span style="color: #000080;">=</span> d<span style="color: #008080;">;</span>
    n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next <span style="color: #000080;">=</span> next<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> n<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//----------------------------------------------------------</span>
<span style="color: #666666;">// Singly-linked list with header node</span>
<span style="color: #666666;">//----------------------------------------------------------</span>
<span style="color: #0000ff;">struct</span> SLinkedList<span style="color: #008080;">;</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> SLinkedList <span style="color: #000040;">*</span>LinkedList<span style="color: #008080;">;</span>
&#160;
<span style="color: #0000ff;">struct</span> SLinkedList  <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> size<span style="color: #008080;">;</span>
    LinkedNode header<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
LinkedList newLinkedList<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    LinkedList list <span style="color: #000080;">=</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">struct</span> SLinkedList<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>header <span style="color: #000080;">=</span> newLinkedNode<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span>, <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> list<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> freeLinkedList<span style="color: #008000;">&#40;</span>LinkedList list<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    LinkedNode q, p <span style="color: #000080;">=</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>header<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>p <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        q <span style="color: #000080;">=</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
        <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>p<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        p <span style="color: #000080;">=</span> q<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>list<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------------------</span>
<span style="color: #0000ff;">int</span> sizeOfLinkedList<span style="color: #008000;">&#40;</span>LinkedList list<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> isEmptyLinkedList<span style="color: #008000;">&#40;</span>LinkedList list<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> printLinkedList<span style="color: #008000;">&#40;</span>LinkedList list<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;LinkedList[ &#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    LinkedNode p <span style="color: #000080;">=</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>header<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> buf<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> p <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%s &#34;</span>, toString<span style="color: #008000;">&#40;</span>buf, p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        p <span style="color: #000080;">=</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;]<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
LinkedNode _nodeOf<span style="color: #008000;">&#40;</span>LinkedList list, <span style="color: #0000ff;">int</span> pos<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #666666;">// if pos = -1 return header</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    LinkedNode p <span style="color: #000080;">=</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>header<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#60;</span>pos<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        p <span style="color: #000080;">=</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> p<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
DType getLinkedList<span style="color: #008000;">&#40;</span>LinkedList list, <span style="color: #0000ff;">int</span> pos<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>pos <span style="color: #000080;">&#60;</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">&#124;&#124;</span> pos <span style="color: #000080;">&#62;=</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;getLinkedList : out of range<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    LinkedNode p <span style="color: #000080;">=</span> _nodeOf<span style="color: #008000;">&#40;</span>list, pos<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
LinkedNode _addAfterLinkedNode<span style="color: #008000;">&#40;</span>LinkedList list, LinkedNode p, DType x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next <span style="color: #000080;">=</span> newLinkedNode<span style="color: #008000;">&#40;</span>x, p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> addLinkedList<span style="color: #008000;">&#40;</span>LinkedList list, DType x, <span style="color: #0000ff;">int</span> pos<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>pos <span style="color: #000080;">&#60;</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">&#124;&#124;</span> pos <span style="color: #000080;">&#62;</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;addLinkedList : out of range<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    LinkedNode p <span style="color: #000080;">=</span> _nodeOf<span style="color: #008000;">&#40;</span>list, pos<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    _addAfterLinkedNode<span style="color: #008000;">&#40;</span>list, p, x<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> addFirstLinkedList<span style="color: #008000;">&#40;</span>LinkedList list, DType x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    addLinkedList<span style="color: #008000;">&#40;</span>list, x, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> addLastLinkedList<span style="color: #008000;">&#40;</span>LinkedList list, DType x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    addLinkedList<span style="color: #008000;">&#40;</span>list, x, list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> indexOfLinkedList<span style="color: #008000;">&#40;</span>LinkedList list, DType x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>  <span style="color: #666666;">// -1 = notfound</span>
    LinkedNode p <span style="color: #000080;">=</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>header<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#60;</span>list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>cmp<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data, x<span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> i<span style="color: #008080;">;</span>
        p <span style="color: #000080;">=</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
DType removeLinkedList<span style="color: #008000;">&#40;</span>LinkedList list, <span style="color: #0000ff;">int</span> pos<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>pos <span style="color: #000080;">&#60;</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">&#124;&#124;</span> pos <span style="color: #000080;">&#62;=</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;removeLinkedList : out of range<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    LinkedNode p <span style="color: #000080;">=</span> _nodeOf<span style="color: #008000;">&#40;</span>list, pos<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    LinkedNode n <span style="color: #000080;">=</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    DType x <span style="color: #000080;">=</span> n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008080;">;</span>
    p<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next <span style="color: #000080;">=</span> n<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> x<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #ff0000; font-style: italic;">/*-----------------------------------------
LinkedNode reverse(LinkedNode p) {
    if (p == NULL) return NULL;
    if (p-&#62;next == NULL) return p;
    LinkedNode q = p-&#62;next;
    LinkedNode r = reverse(p-&#62;next);
    q-&#62;next = p;
    p-&#62;next = NULL;
    return r;
}
void reverseLinkedList(LinkedList list) {
    list-&#62;header-&#62;next = reverse(list-&#62;header-&#62;next);
}
-------------------------------------------
*/</span>
<span style="color: #0000ff;">void</span> reverseLinkedList<span style="color: #008000;">&#40;</span>LinkedList list<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    LinkedNode p1 <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
    LinkedNode p2 <span style="color: #000080;">=</span> list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>header<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    LinkedNode p3<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>p2 <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        p3 <span style="color: #000080;">=</span> p2<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
        p2<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next <span style="color: #000080;">=</span> p1<span style="color: #008080;">;</span>
        p1 <span style="color: #000080;">=</span> p2<span style="color: #008080;">;</span>
        p2 <span style="color: #000080;">=</span> p3<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    list<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>header<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next <span style="color: #000080;">=</span> p1<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> equalLinkedList<span style="color: #008000;">&#40;</span>LinkedList list1, LinkedList list2<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #666666;">// 0 = not equal, 1 = equal</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>list1<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000040;">!</span><span style="color: #000080;">=</span> list2<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    LinkedNode p1 <span style="color: #000080;">=</span> list1<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>header<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    LinkedNode p2 <span style="color: #000080;">=</span> list2<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>header<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>p1 <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span> <span style="color: #000040;">&#38;&#38;</span> p2 <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>cmp<span style="color: #008000;">&#40;</span>p1<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data,p2<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        p1 <span style="color: #000080;">=</span> p1<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
        p2 <span style="color: #000080;">=</span> p2<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>next<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> p1 <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span> <span style="color: #000040;">&#38;&#38;</span> p2 <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
LinkedList createLinkedList<span style="color: #008000;">&#40;</span>DType data<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    LinkedList out <span style="color: #000080;">=</span> newLinkedList<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>n<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#62;=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        addFirstLinkedList<span style="color: #008000;">&#40;</span>out, data<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> out<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//----------------------------------------------</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    LinkedList q <span style="color: #000080;">=</span> newLinkedList<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    addLastLinkedList<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    addLastLinkedList<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    addLinkedList<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">3</span>, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    addFirstLinkedList<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">9</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    removeLinkedList<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    addLinkedList<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">13</span>, <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    addLinkedList<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">22</span>, <span style="color: #0000dd;">3</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    removeLinkedList<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    reverseLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//------------------------</span>
    <span style="color: #0000ff;">float</span> data<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">2</span>,<span style="color: #0000dd;">22</span>,<span style="color: #0000dd;">13</span>,<span style="color: #0000dd;">9</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    LinkedList copy <span style="color: #000080;">=</span> createLinkedList<span style="color: #008000;">&#40;</span>data, <span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;copy + equals = %d<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>, equalLinkedList<span style="color: #008000;">&#40;</span>copy, q<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i, n<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> correct <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>, n<span style="color: #000080;">=</span>sizeOfLinkedList<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> correct <span style="color: #000040;">&#38;&#38;</span> i<span style="color: #000080;">&#60;</span>n<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> x <span style="color: #000080;">=</span> getLinkedList<span style="color: #008000;">&#40;</span>q, i<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>indexOfLinkedList<span style="color: #008000;">&#40;</span>q, x<span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>i<span style="color: #008000;">&#41;</span> correct <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>indexOfLinkedList<span style="color: #008000;">&#40;</span>q, <span style="color: #000040;">-</span><span style="color: #0000dd;">999</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> correct <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;indexOf = %d<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>, correct<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div></div></div>]]></description>
			<content:encoded><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >#include &lt;stdio.h&gt;</span>
<span >#include &lt;stdlib.h&gt;</span>
&nbsp;
<span >//-------------------------------------------------------</span>
<span >typedef</span> <span >float</span> DType<span >;</span>
<span >int</span> cmp<span >&#40;</span>DType d1, DType d2<span >&#41;</span><span >;</span>
<span >char</span> <span >*</span>toString<span >&#40;</span><span >char</span> <span >*</span>buf, DType d<span >&#41;</span><span >;</span>
<span >//-------------------------------------------------------</span>
<span >int</span> cmp<span >&#40;</span><span >float</span> d1, <span >float</span> d2<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>d1 <span >==</span> d2<span >&#41;</span> <span >return</span> <span >0</span><span >;</span>
    <span >return</span> <span >&#40;</span>d1 <span >&lt;</span> d2<span >&#41;</span> <span >?</span> <span >-</span><span >1</span> <span >:</span> <span >1</span><span >;</span>
<span >&#125;</span>
<span >char</span> <span >*</span>toString<span >&#40;</span><span >char</span> <span >*</span>buf, <span >float</span> d<span >&#41;</span> <span >&#123;</span>
    <span >sprintf</span><span >&#40;</span>buf, <span >&quot;%6.2f&quot;</span>, d<span >&#41;</span><span >;</span>
    <span >return</span> buf<span >;</span>
<span >&#125;</span>
<span >//-------------------------------------------------------</span>
<span >struct</span> SLinkedNode<span >;</span>
<span >typedef</span> <span >struct</span> SLinkedNode <span >*</span>LinkedNode<span >;</span>
&nbsp;
<span >struct</span> SLinkedNode  <span >&#123;</span>
    DType data<span >;</span>
    LinkedNode next<span >;</span>
<span >&#125;</span><span >;</span>
LinkedNode newLinkedNode<span >&#40;</span>DType d, LinkedNode next<span >&#41;</span> <span >&#123;</span>
    LinkedNode n <span >=</span> <span >malloc</span><span >&#40;</span><span >sizeof</span><span >&#40;</span><span >struct</span> SLinkedNode<span >&#41;</span><span >&#41;</span><span >;</span>
    n<span >-</span><span >&gt;</span>data <span >=</span> d<span >;</span>
    n<span >-</span><span >&gt;</span>next <span >=</span> next<span >;</span>
    <span >return</span> n<span >;</span>
<span >&#125;</span>
<span >//----------------------------------------------------------</span>
<span >// Singly-linked list with header node</span>
<span >//----------------------------------------------------------</span>
<span >struct</span> SLinkedList<span >;</span>
<span >typedef</span> <span >struct</span> SLinkedList <span >*</span>LinkedList<span >;</span>
&nbsp;
<span >struct</span> SLinkedList  <span >&#123;</span>
    <span >int</span> size<span >;</span>
    LinkedNode header<span >;</span>
<span >&#125;</span><span >;</span>
LinkedList newLinkedList<span >&#40;</span><span >&#41;</span> <span >&#123;</span>
    LinkedList list <span >=</span> <span >malloc</span><span >&#40;</span><span >sizeof</span><span >&#40;</span><span >struct</span> SLinkedList<span >&#41;</span><span >&#41;</span><span >;</span>
    list<span >-</span><span >&gt;</span>size <span >=</span> <span >0</span><span >;</span>
    list<span >-</span><span >&gt;</span>header <span >=</span> newLinkedNode<span >&#40;</span><span >0</span>, <span >NULL</span><span >&#41;</span><span >;</span>
    <span >return</span> list<span >;</span>
<span >&#125;</span>
<span >void</span> freeLinkedList<span >&#40;</span>LinkedList list<span >&#41;</span> <span >&#123;</span>
    LinkedNode q, p <span >=</span> list<span >-</span><span >&gt;</span>header<span >;</span>
    <span >while</span> <span >&#40;</span>p <span >!</span><span >=</span> <span >NULL</span><span >&#41;</span> <span >&#123;</span>
        q <span >=</span> p<span >-</span><span >&gt;</span>next<span >;</span>
        <span >free</span><span >&#40;</span>p<span >&#41;</span><span >;</span>
        p <span >=</span> q<span >;</span>
    <span >&#125;</span>
    <span >free</span><span >&#40;</span>list<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------------------</span>
<span >int</span> sizeOfLinkedList<span >&#40;</span>LinkedList list<span >&#41;</span> <span >&#123;</span>
    <span >return</span> list<span >-</span><span >&gt;</span>size<span >;</span>
<span >&#125;</span>
<span >int</span> isEmptyLinkedList<span >&#40;</span>LinkedList list<span >&#41;</span> <span >&#123;</span>
    <span >return</span> list<span >-</span><span >&gt;</span>size <span >==</span> <span >0</span><span >;</span>
<span >&#125;</span>
<span >void</span> printLinkedList<span >&#40;</span>LinkedList list<span >&#41;</span> <span >&#123;</span>
    <span >printf</span><span >&#40;</span><span >&quot;LinkedList[ &quot;</span><span >&#41;</span><span >;</span>
    LinkedNode p <span >=</span> list<span >-</span><span >&gt;</span>header<span >-</span><span >&gt;</span>next<span >;</span>
    <span >char</span> buf<span >&#91;</span><span >100</span><span >&#93;</span><span >;</span>
    <span >while</span><span >&#40;</span> p <span >!</span><span >=</span> <span >NULL</span><span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;%s &quot;</span>, toString<span >&#40;</span>buf, p<span >-</span><span >&gt;</span>data<span >&#41;</span><span >&#41;</span><span >;</span>
        p <span >=</span> p<span >-</span><span >&gt;</span>next<span >;</span>
    <span >&#125;</span>
    <span >printf</span><span >&#40;</span><span >&quot;]<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
LinkedNode _nodeOf<span >&#40;</span>LinkedList list, <span >int</span> pos<span >&#41;</span> <span >&#123;</span> <span >// if pos = -1 return header</span>
    <span >int</span> i<span >;</span>
    LinkedNode p <span >=</span> list<span >-</span><span >&gt;</span>header<span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span><span >-</span><span >1</span><span >;</span> i<span >&lt;</span>pos<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        p <span >=</span> p<span >-</span><span >&gt;</span>next<span >;</span>
    <span >&#125;</span>
    <span >return</span> p<span >;</span>
<span >&#125;</span>
DType getLinkedList<span >&#40;</span>LinkedList list, <span >int</span> pos<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>pos <span >&lt;</span> <span >0</span> <span >||</span> pos <span >&gt;=</span> list<span >-</span><span >&gt;</span>size<span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;getLinkedList : out of range<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
        <span >exit</span><span >&#40;</span><span >1</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    LinkedNode p <span >=</span> _nodeOf<span >&#40;</span>list, pos<span >&#41;</span><span >;</span>
    <span >return</span> p<span >-</span><span >&gt;</span>data<span >;</span>
<span >&#125;</span>
LinkedNode _addAfterLinkedNode<span >&#40;</span>LinkedList list, LinkedNode p, DType x<span >&#41;</span> <span >&#123;</span>
    p<span >-</span><span >&gt;</span>next <span >=</span> newLinkedNode<span >&#40;</span>x, p<span >-</span><span >&gt;</span>next<span >&#41;</span><span >;</span>
    list<span >-</span><span >&gt;</span>size<span >++</span><span >;</span>
    <span >return</span> p<span >-</span><span >&gt;</span>next<span >;</span>
<span >&#125;</span>
<span >void</span> addLinkedList<span >&#40;</span>LinkedList list, DType x, <span >int</span> pos<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>pos <span >&lt;</span> <span >0</span> <span >||</span> pos <span >&gt;</span> list<span >-</span><span >&gt;</span>size<span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;addLinkedList : out of range<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
        <span >exit</span><span >&#40;</span><span >1</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    LinkedNode p <span >=</span> _nodeOf<span >&#40;</span>list, pos<span >-</span><span >1</span><span >&#41;</span><span >;</span>
    _addAfterLinkedNode<span >&#40;</span>list, p, x<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >void</span> addFirstLinkedList<span >&#40;</span>LinkedList list, DType x<span >&#41;</span> <span >&#123;</span>
    addLinkedList<span >&#40;</span>list, x, <span >0</span><span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >void</span> addLastLinkedList<span >&#40;</span>LinkedList list, DType x<span >&#41;</span> <span >&#123;</span>
    addLinkedList<span >&#40;</span>list, x, list<span >-</span><span >&gt;</span>size<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >int</span> indexOfLinkedList<span >&#40;</span>LinkedList list, DType x<span >&#41;</span> <span >&#123;</span>  <span >// -1 = notfound</span>
    LinkedNode p <span >=</span> list<span >-</span><span >&gt;</span>header<span >-</span><span >&gt;</span>next<span >;</span>
    <span >int</span> i<span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span><span >0</span><span >;</span> i<span >&lt;</span>list<span >-</span><span >&gt;</span>size<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        <span >if</span> <span >&#40;</span>cmp<span >&#40;</span>p<span >-</span><span >&gt;</span>data, x<span >&#41;</span> <span >==</span> <span >0</span><span >&#41;</span> <span >return</span> i<span >;</span>
        p <span >=</span> p<span >-</span><span >&gt;</span>next<span >;</span>
    <span >&#125;</span>
    <span >return</span> <span >-</span><span >1</span><span >;</span>
<span >&#125;</span>
DType removeLinkedList<span >&#40;</span>LinkedList list, <span >int</span> pos<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>pos <span >&lt;</span> <span >0</span> <span >||</span> pos <span >&gt;=</span> list<span >-</span><span >&gt;</span>size<span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;removeLinkedList : out of range<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
        <span >exit</span><span >&#40;</span><span >1</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    LinkedNode p <span >=</span> _nodeOf<span >&#40;</span>list, pos<span >-</span><span >1</span><span >&#41;</span><span >;</span>
    LinkedNode n <span >=</span> p<span >-</span><span >&gt;</span>next<span >;</span>
    DType x <span >=</span> n<span >-</span><span >&gt;</span>data<span >;</span>
    p<span >-</span><span >&gt;</span>next <span >=</span> n<span >-</span><span >&gt;</span>next<span >;</span>
    <span >free</span><span >&#40;</span>n<span >&#41;</span><span >;</span>
    list<span >-</span><span >&gt;</span>size<span >--</span><span >;</span>
    <span >return</span> x<span >;</span>
<span >&#125;</span>
<span >/*-----------------------------------------
LinkedNode reverse(LinkedNode p) {
    if (p == NULL) return NULL;
    if (p-&gt;next == NULL) return p;
    LinkedNode q = p-&gt;next;
    LinkedNode r = reverse(p-&gt;next);
    q-&gt;next = p;
    p-&gt;next = NULL;
    return r;
}
void reverseLinkedList(LinkedList list) {
    list-&gt;header-&gt;next = reverse(list-&gt;header-&gt;next);
}
-------------------------------------------
*/</span>
<span >void</span> reverseLinkedList<span >&#40;</span>LinkedList list<span >&#41;</span> <span >&#123;</span>
    LinkedNode p1 <span >=</span> <span >NULL</span><span >;</span>
    LinkedNode p2 <span >=</span> list<span >-</span><span >&gt;</span>header<span >-</span><span >&gt;</span>next<span >;</span>
    LinkedNode p3<span >;</span>
    <span >while</span><span >&#40;</span>p2 <span >!</span><span >=</span> <span >NULL</span><span >&#41;</span> <span >&#123;</span>
        p3 <span >=</span> p2<span >-</span><span >&gt;</span>next<span >;</span>
        p2<span >-</span><span >&gt;</span>next <span >=</span> p1<span >;</span>
        p1 <span >=</span> p2<span >;</span>
        p2 <span >=</span> p3<span >;</span>
    <span >&#125;</span>
    list<span >-</span><span >&gt;</span>header<span >-</span><span >&gt;</span>next <span >=</span> p1<span >;</span>
<span >&#125;</span>
<span >int</span> equalLinkedList<span >&#40;</span>LinkedList list1, LinkedList list2<span >&#41;</span> <span >&#123;</span> <span >// 0 = not equal, 1 = equal</span>
    <span >if</span> <span >&#40;</span>list1<span >-</span><span >&gt;</span>size <span >!</span><span >=</span> list2<span >-</span><span >&gt;</span>size<span >&#41;</span> <span >return</span> <span >0</span><span >;</span>
    LinkedNode p1 <span >=</span> list1<span >-</span><span >&gt;</span>header<span >-</span><span >&gt;</span>next<span >;</span>
    LinkedNode p2 <span >=</span> list2<span >-</span><span >&gt;</span>header<span >-</span><span >&gt;</span>next<span >;</span>
    <span >while</span> <span >&#40;</span>p1 <span >!</span><span >=</span> <span >NULL</span> <span >&amp;&amp;</span> p2 <span >!</span><span >=</span> <span >NULL</span><span >&#41;</span> <span >&#123;</span>
        <span >if</span> <span >&#40;</span>cmp<span >&#40;</span>p1<span >-</span><span >&gt;</span>data,p2<span >-</span><span >&gt;</span>data<span >&#41;</span><span >!</span><span >=</span><span >0</span><span >&#41;</span> <span >return</span> <span >0</span><span >;</span>
        p1 <span >=</span> p1<span >-</span><span >&gt;</span>next<span >;</span>
        p2 <span >=</span> p2<span >-</span><span >&gt;</span>next<span >;</span>
    <span >&#125;</span>
    <span >return</span> p1 <span >==</span> <span >NULL</span> <span >&amp;&amp;</span> p2 <span >==</span> <span >NULL</span><span >;</span>
<span >&#125;</span>
LinkedList createLinkedList<span >&#40;</span>DType data<span >&#91;</span><span >&#93;</span>, <span >int</span> n<span >&#41;</span> <span >&#123;</span>
    LinkedList out <span >=</span> newLinkedList<span >&#40;</span><span >&#41;</span><span >;</span>
    <span >int</span> i<span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span>n<span >-</span><span >1</span><span >;</span> i<span >&gt;=</span><span >0</span><span >;</span> i<span >--</span><span >&#41;</span> <span >&#123;</span>
        addFirstLinkedList<span >&#40;</span>out, data<span >&#91;</span>i<span >&#93;</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    <span >return</span> out<span >;</span>
<span >&#125;</span>
<span >//----------------------------------------------</span>
<span >int</span> main<span >&#40;</span><span >int</span> argc, <span >char</span> <span >*</span>argv<span >&#91;</span><span >&#93;</span><span >&#41;</span> <span >&#123;</span>
    LinkedList q <span >=</span> newLinkedList<span >&#40;</span><span >&#41;</span><span >;</span>
    addLastLinkedList<span >&#40;</span>q, <span >1</span><span >&#41;</span><span >;</span>
    printLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span>
    addLastLinkedList<span >&#40;</span>q, <span >2</span><span >&#41;</span><span >;</span>
    printLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span>
    addLinkedList<span >&#40;</span>q, <span >3</span>, <span >0</span><span >&#41;</span><span >;</span>
    printLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span>
    addFirstLinkedList<span >&#40;</span>q, <span >9</span><span >&#41;</span><span >;</span>
    printLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span>
    removeLinkedList<span >&#40;</span>q, <span >1</span><span >&#41;</span><span >;</span>
    printLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span>
    addLinkedList<span >&#40;</span>q, <span >13</span>, <span >1</span><span >&#41;</span><span >;</span>
    printLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span>
    addLinkedList<span >&#40;</span>q, <span >22</span>, <span >3</span><span >&#41;</span><span >;</span>
    removeLinkedList<span >&#40;</span>q, <span >2</span><span >&#41;</span><span >;</span>
    printLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span>
    reverseLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span>
    printLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span>
    <span >//------------------------</span>
    <span >float</span> data<span >&#91;</span><span >&#93;</span> <span >=</span> <span >&#123;</span><span >2</span>,<span >22</span>,<span >13</span>,<span >9</span><span >&#125;</span><span >;</span>
    LinkedList copy <span >=</span> createLinkedList<span >&#40;</span>data, <span >4</span><span >&#41;</span><span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;copy + equals = %d<span >\n</span>&quot;</span>, equalLinkedList<span >&#40;</span>copy, q<span >&#41;</span><span >&#41;</span><span >;</span>
    <span >int</span> i, n<span >;</span>
    <span >int</span> correct <span >=</span> <span >1</span><span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span><span >0</span>, n<span >=</span>sizeOfLinkedList<span >&#40;</span>q<span >&#41;</span><span >;</span> correct <span >&amp;&amp;</span> i<span >&lt;</span>n<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        <span >int</span> x <span >=</span> getLinkedList<span >&#40;</span>q, i<span >&#41;</span><span >;</span>
        <span >if</span> <span >&#40;</span>indexOfLinkedList<span >&#40;</span>q, x<span >&#41;</span><span >!</span><span >=</span>i<span >&#41;</span> correct <span >=</span> <span >0</span><span >;</span>
    <span >&#125;</span>
    <span >if</span> <span >&#40;</span>indexOfLinkedList<span >&#40;</span>q, <span >-</span><span >999</span><span >&#41;</span> <span >!</span><span >=</span> <span >-</span><span >1</span><span >&#41;</span> correct <span >=</span> <span >0</span><span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;indexOf = %d<span >\n</span>&quot;</span>, correct<span >&#41;</span><span >;</span>
    <span >return</span> <span >0</span><span >;</span>
<span >&#125;</span></pre>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nattee.net/?q=node/2162/feed/</wfw:commentRss>
		</item>
		<item>
		<title>03-bheap.c, original</title>
		<link>http://www.nattee.net/?q=node/2161</link>
		<comments>http://www.nattee.net/?q=node/2161#comments</comments>
		<pubDate>Sun, 19 Feb 2012 01:22:08 +0000</pubDate>
		<dc:creator>dae</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">2161 at http://www.nattee.net</guid>
		<description><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #339900;">#include &#60;stdio.h&#62;</span>
<span style="color: #339900;">#include &#60;stdlib.h&#62;</span>
&#160;
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">float</span> DType<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span>DType d1, DType d2<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>toString<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>buf, DType d<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span> d1, <span style="color: #0000ff;">float</span> d2<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>d1 <span style="color: #000080;">==</span> d2<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>d1 <span style="color: #000080;">&#60;</span> d2<span style="color: #008000;">&#41;</span> <span style="color: #008080;">?</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span> <span style="color: #008080;">:</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>toString<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>buf, <span style="color: #0000ff;">float</span> d<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">sprintf</span><span style="color: #008000;">&#40;</span>buf, <span style="color: #FF0000;">&#34;%6.2f&#34;</span>, d<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> buf<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">struct</span> SBHeap <span style="color: #008000;">&#123;</span>
    DType <span style="color: #000040;">*</span>data<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> length<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> size<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> SBHeap <span style="color: #000040;">*</span>BHeap<span style="color: #008080;">;</span>
<span style="color: #666666;">//---------------------------------------------</span>
BHeap newBHeap<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> length<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    BHeap h <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>BHeap<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">struct</span> SBHeap<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>DType <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>length <span style="color: #000040;">*</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>DType<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length <span style="color: #000080;">=</span> length<span style="color: #008080;">;</span>
    h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> h<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> freeBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>h<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">int</span> sizeOfBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> isEmptyBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> isFullBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">==</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">void</span> printBHeap<span style="color: #008000;">&#40;</span>BHeap h<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;heap:[ &#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> buf<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#60;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%s &#34;</span>, toString<span style="color: #008000;">&#40;</span>buf, h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;]<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">void</span> addBHeap<span style="color: #008000;">&#40;</span>BHeap h, DType x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>isFullBHeap<span style="color: #008000;">&#40;</span>h<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;add : heap is full<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> k <span style="color: #000080;">=</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> k <span style="color: #000080;">&#62;</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">int</span> p <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>cmp<span style="color: #008000;">&#40;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,x<span style="color: #008000;">&#41;</span> <span style="color: #000080;">&#60;=</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>  <span style="color: #666666;">// min heap</span>
            h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            k <span style="color: #000080;">=</span> p<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> x<span style="color: #008080;">;</span>
        h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">// begin with an underscore -&#62; private function</span>
<span style="color: #0000ff;">void</span> _heapify<span style="color: #008000;">&#40;</span>BHeap h, <span style="color: #0000ff;">int</span> k<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> c<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> <span style="color: #008000;">&#40;</span>c <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&#60;</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span> <span style="color: #000080;">&#60;</span> h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000040;">&#38;&#38;</span> cmp<span style="color: #008000;">&#40;</span>h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>c<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>, h<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>geshifilter<span style="color: #000040;">-</span>c<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">&#38;</span>lt<span style="color: #008080;">;</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> c<span style="color: #000040;">++</span><span style="color: #008080;">;</span><span style="color: #000040;">&#38;</span><span style="color: #339900;">#10;        if (cmp(h-&#38;gt;data[c],h-&#38;gt;data[k]) &#38;gt;= 0) break;&#10;        DType t = h-&#38;gt;data[k];&#10;        h-&#38;gt;data[k] = h-&#38;gt;data[c];&#10;        h-&#38;gt;data[c] = t;&#10;        k = c;&#10;    }&#10;}&#10;DType removeMinBHeap(BHeap h) {  // min heap&#10;    if (isEmptyBHeap(h)) {&#10;        printf(&#38;quot;heap is empty !\n&#38;quot;);&#10;        exit(1);&#10;    } else {&#10;        DType min = h-&#38;gt;data[0];&#10;        h-&#38;gt;data[0] = h-&#38;gt;data[h-&#38;gt;size-1];&#10;        _heapify(h, 0);&#10;        h-&#38;gt;size--;&#10;        return min;&#10;    }&#10;}&#10;//---------------------------------------------&#10;BHeap buildBHeap1(DType d[], int n) {&#10;    BHeap h = newBHeap(n);&#10;    int i;&#10;    for(i=0; i&#38;lt;n; i++) {&#10;        h-&#38;gt;data[i] = d[i];&#10;    }&#10;    h-&#38;gt;length = n;&#10;    h-&#38;gt;size = n;&#10;    for(i=n-1; i&#38;gt;=0; i--) {&#10;        _heapify(h, i);&#10;    }&#10;    return h;&#10;}&#10;BHeap buildBHeap2(DType d[], int n) {&#10;    BHeap h = newBHeap(n);&#10;    int i;&#10;    for(i=0; i&#38;lt;n; i++) {&#10;        addBHeap(h, d[i]);&#10;    }&#10;    return h;&#10;}&#10;//---------------------------------------------&#10;int main(int argc, char *argv[]) {&#10;    float d[] = {1,4,2,7,8,0,9};&#10;    int n = 7;&#10;    BHeap h = buildBHeap1(d, n);&#10;    int i;&#10;    printBHeap(h);&#10;    for (i=0; i&#38;lt;n; i++) {&#10;        printf(&#38;quot;removeMin : %6.2f : &#38;quot;, removeMinBHeap(h));&#10;        printBHeap(h);&#10;    }&#10;    return 0;&#10;}&#10;</span></pre></div>[/geshifilter-c]</div></div></div>]]></description>
			<content:encoded><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >#include &lt;stdio.h&gt;</span>
<span >#include &lt;stdlib.h&gt;</span>
&nbsp;
<span >//---------------------------------------------</span>
<span >typedef</span> <span >float</span> DType<span >;</span>
<span >int</span> cmp<span >&#40;</span>DType d1, DType d2<span >&#41;</span><span >;</span>
<span >char</span> <span >*</span>toString<span >&#40;</span><span >char</span> <span >*</span>buf, DType d<span >&#41;</span><span >;</span>
<span >//-------------------------------------------------------</span>
<span >int</span> cmp<span >&#40;</span><span >float</span> d1, <span >float</span> d2<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>d1 <span >==</span> d2<span >&#41;</span> <span >return</span> <span >0</span><span >;</span>
    <span >return</span> <span >&#40;</span>d1 <span >&lt;</span> d2<span >&#41;</span> <span >?</span> <span >-</span><span >1</span> <span >:</span> <span >1</span><span >;</span>
<span >&#125;</span>
<span >char</span> <span >*</span>toString<span >&#40;</span><span >char</span> <span >*</span>buf, <span >float</span> d<span >&#41;</span> <span >&#123;</span>
    <span >sprintf</span><span >&#40;</span>buf, <span >&quot;%6.2f&quot;</span>, d<span >&#41;</span><span >;</span>
    <span >return</span> buf<span >;</span>
<span >&#125;</span>
<span >//-------------------------------------------------------</span>
<span >struct</span> SBHeap <span >&#123;</span>
    DType <span >*</span>data<span >;</span>
    <span >int</span> length<span >;</span>
    <span >int</span> size<span >;</span>
<span >&#125;</span><span >;</span>
<span >typedef</span> <span >struct</span> SBHeap <span >*</span>BHeap<span >;</span>
<span >//---------------------------------------------</span>
BHeap newBHeap<span >&#40;</span><span >int</span> length<span >&#41;</span> <span >&#123;</span>
    BHeap h <span >=</span> <span >&#40;</span>BHeap<span >&#41;</span> <span >malloc</span><span >&#40;</span><span >sizeof</span><span >&#40;</span><span >struct</span> SBHeap<span >&#41;</span><span >&#41;</span><span >;</span>
    h<span >-</span><span >&gt;</span>data <span >=</span> <span >&#40;</span>DType <span >*</span><span >&#41;</span> <span >malloc</span><span >&#40;</span>length <span >*</span> <span >sizeof</span><span >&#40;</span>DType<span >&#41;</span><span >&#41;</span><span >;</span>
    h<span >-</span><span >&gt;</span>length <span >=</span> length<span >;</span>
    h<span >-</span><span >&gt;</span>size <span >=</span> <span >0</span><span >;</span>
    <span >return</span> h<span >;</span>
<span >&#125;</span>
<span >void</span> freeBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >free</span><span >&#40;</span>h<span >-</span><span >&gt;</span>data<span >&#41;</span><span >;</span>
    <span >free</span><span >&#40;</span>h<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >int</span> sizeOfBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >return</span> h<span >-</span><span >&gt;</span>size<span >;</span>
<span >&#125;</span>
<span >int</span> isEmptyBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >return</span> h<span >-</span><span >&gt;</span>size <span >==</span> <span >0</span><span >;</span>
<span >&#125;</span>
<span >int</span> isFullBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >return</span> h<span >-</span><span >&gt;</span>size <span >==</span> h<span >-</span><span >&gt;</span>length<span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >void</span> printBHeap<span >&#40;</span>BHeap h<span >&#41;</span> <span >&#123;</span>
    <span >printf</span><span >&#40;</span><span >&quot;heap:[ &quot;</span><span >&#41;</span><span >;</span>
    <span >int</span> i<span >;</span>
    <span >char</span> buf<span >&#91;</span><span >100</span><span >&#93;</span><span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span><span >0</span><span >;</span> i<span >&lt;</span>h<span >-</span><span >&gt;</span>size<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;%s &quot;</span>, toString<span >&#40;</span>buf, h<span >-</span><span >&gt;</span>data<span >&#91;</span>i<span >&#93;</span><span >&#41;</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    <span >printf</span><span >&#40;</span><span >&quot;]<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >void</span> addBHeap<span >&#40;</span>BHeap h, DType x<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>isFullBHeap<span >&#40;</span>h<span >&#41;</span><span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;add : heap is full<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
        <span >exit</span><span >&#40;</span><span >1</span><span >&#41;</span><span >;</span>
    <span >&#125;</span> <span >else</span> <span >&#123;</span>
        <span >int</span> k <span >=</span> h<span >-</span><span >&gt;</span>size<span >;</span>
        <span >while</span><span >&#40;</span> k <span >&gt;</span> <span >0</span> <span >&#41;</span> <span >&#123;</span>
            <span >int</span> p <span >=</span> <span >&#40;</span>k<span >-</span><span >1</span><span >&#41;</span><span >/</span><span >2</span><span >;</span>
            <span >if</span> <span >&#40;</span>cmp<span >&#40;</span>h<span >-</span><span >&gt;</span>data<span >&#91;</span>p<span >&#93;</span>,x<span >&#41;</span> <span >&lt;=</span> <span >0</span><span >&#41;</span> <span >break</span><span >;</span>  <span >// min heap</span>
            h<span >-</span><span >&gt;</span>data<span >&#91;</span>k<span >&#93;</span> <span >=</span> h<span >-</span><span >&gt;</span>data<span >&#91;</span>p<span >&#93;</span><span >;</span>
            k <span >=</span> p<span >;</span>
        <span >&#125;</span>
        h<span >-</span><span >&gt;</span>data<span >&#91;</span>k<span >&#93;</span> <span >=</span> x<span >;</span>
        h<span >-</span><span >&gt;</span>size<span >++</span><span >;</span>
    <span >&#125;</span>
<span >&#125;</span>
<span >// begin with an underscore -&gt; private function</span>
<span >void</span> _heapify<span >&#40;</span>BHeap h, <span >int</span> k<span >&#41;</span> <span >&#123;</span>
    <span >int</span> c<span >;</span>
    <span >while</span> <span >&#40;</span> <span >&#40;</span>c <span >=</span> <span >2</span><span >*</span>k<span >+</span><span >1</span><span >&#41;</span> <span >&lt;</span> h<span >-</span><span >&gt;</span>size<span >&#41;</span> <span >&#123;</span>
        <span >if</span> <span >&#40;</span>c<span >+</span><span >1</span> <span >&lt;</span> h<span >-</span><span >&gt;</span>size <span >&amp;&amp;</span> cmp<span >&#40;</span>h<span >-</span><span >&gt;</span>data<span >&#91;</span>c<span >+</span><span >1</span><span >&#93;</span>, h<span >-</span><span >&gt;</span>data<span >&#91;</span>geshifilter<span >-</span>c<span >&#93;</span><span >&#41;</span> <span >&amp;</span>lt<span >;</span> <span >0</span><span >&#41;</span> c<span >++</span><span >;</span><span >&amp;</span><span >#10;        if (cmp(h-&amp;gt;data[c],h-&amp;gt;data[k]) &amp;gt;= 0) break;&amp;#10;        DType t = h-&amp;gt;data[k];&amp;#10;        h-&amp;gt;data[k] = h-&amp;gt;data[c];&amp;#10;        h-&amp;gt;data[c] = t;&amp;#10;        k = c;&amp;#10;    }&amp;#10;}&amp;#10;DType removeMinBHeap(BHeap h) {  // min heap&amp;#10;    if (isEmptyBHeap(h)) {&amp;#10;        printf(&amp;quot;heap is empty !\n&amp;quot;);&amp;#10;        exit(1);&amp;#10;    } else {&amp;#10;        DType min = h-&amp;gt;data[0];&amp;#10;        h-&amp;gt;data[0] = h-&amp;gt;data[h-&amp;gt;size-1];&amp;#10;        _heapify(h, 0);&amp;#10;        h-&amp;gt;size--;&amp;#10;        return min;&amp;#10;    }&amp;#10;}&amp;#10;//---------------------------------------------&amp;#10;BHeap buildBHeap1(DType d[], int n) {&amp;#10;    BHeap h = newBHeap(n);&amp;#10;    int i;&amp;#10;    for(i=0; i&amp;lt;n; i++) {&amp;#10;        h-&amp;gt;data[i] = d[i];&amp;#10;    }&amp;#10;    h-&amp;gt;length = n;&amp;#10;    h-&amp;gt;size = n;&amp;#10;    for(i=n-1; i&amp;gt;=0; i--) {&amp;#10;        _heapify(h, i);&amp;#10;    }&amp;#10;    return h;&amp;#10;}&amp;#10;BHeap buildBHeap2(DType d[], int n) {&amp;#10;    BHeap h = newBHeap(n);&amp;#10;    int i;&amp;#10;    for(i=0; i&amp;lt;n; i++) {&amp;#10;        addBHeap(h, d[i]);&amp;#10;    }&amp;#10;    return h;&amp;#10;}&amp;#10;//---------------------------------------------&amp;#10;int main(int argc, char *argv[]) {&amp;#10;    float d[] = {1,4,2,7,8,0,9};&amp;#10;    int n = 7;&amp;#10;    BHeap h = buildBHeap1(d, n);&amp;#10;    int i;&amp;#10;    printBHeap(h);&amp;#10;    for (i=0; i&amp;lt;n; i++) {&amp;#10;        printf(&amp;quot;removeMin : %6.2f : &amp;quot;, removeMinBHeap(h));&amp;#10;        printBHeap(h);&amp;#10;    }&amp;#10;    return 0;&amp;#10;}&amp;#10;</span></pre>
</div>
<p>[/geshifilter-c]</p></div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nattee.net/?q=node/2161/feed/</wfw:commentRss>
		</item>
		<item>
		<title>02-queue.c, original</title>
		<link>http://www.nattee.net/?q=node/2160</link>
		<comments>http://www.nattee.net/?q=node/2160#comments</comments>
		<pubDate>Tue, 07 Feb 2012 16:33:48 +0000</pubDate>
		<dc:creator>dae</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">2160 at http://www.nattee.net</guid>
		<description><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #339900;">#include &#60;stdio.h&#62;</span>
<span style="color: #339900;">#include &#60;stdlib.h&#62;</span>
&#160;
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">float</span> DType<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span>DType d1, DType d2<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>toString<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>buf, DType d<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>toString<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>buf, <span style="color: #0000ff;">float</span> d<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">sprintf</span><span style="color: #008000;">&#40;</span>buf, <span style="color: #FF0000;">&#34;%6.2f&#34;</span>, d<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> buf<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//-------------------------------------------------------</span>
<span style="color: #0000ff;">struct</span> SQueue <span style="color: #008000;">&#123;</span>
    DType <span style="color: #000040;">*</span>data<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> length<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> size<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> front<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> SQueue <span style="color: #000040;">*</span>Queue<span style="color: #008080;">;</span>
<span style="color: #666666;">//-------------------------------------</span>
Queue newQueue<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> length<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    Queue q <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>Queue<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">struct</span> SQueue<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>DType <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>length <span style="color: #000040;">*</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>DType<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length <span style="color: #000080;">=</span> length<span style="color: #008080;">;</span>
    q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> q<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> freeQueue<span style="color: #008000;">&#40;</span>Queue q<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">int</span> sizeOfQueue<span style="color: #008000;">&#40;</span>Queue q<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> isEmptyQueue<span style="color: #008000;">&#40;</span>Queue q<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> isFullQueue<span style="color: #008000;">&#40;</span>Queue q<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">==</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">void</span> printQueue<span style="color: #008000;">&#40;</span>Queue q<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;queue:[ &#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> f <span style="color: #000080;">=</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> buf<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#60;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%s &#34;</span>, toString<span style="color: #008000;">&#40;</span>buf, q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>f<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        f <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>f <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">%</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;]<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">void</span> enqueue<span style="color: #008000;">&#40;</span>Queue q, DType x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size <span style="color: #000080;">==</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> newlength <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length<span style="color: #008080;">;</span>
        DType <span style="color: #000040;">*</span>a <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>DType <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>newlength <span style="color: #000040;">*</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>DType<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#60;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">%</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data <span style="color: #000080;">=</span> a<span style="color: #008080;">;</span>
        q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length <span style="color: #000080;">=</span> newlength<span style="color: #008080;">;</span>
        q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">int</span> b <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front <span style="color: #000040;">+</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #008000;">&#41;</span> <span style="color: #000040;">%</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length<span style="color: #008080;">;</span>
    q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> x<span style="color: #008080;">;</span>
    q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
DType dequeue<span style="color: #008000;">&#40;</span>Queue q<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>isEmptyQueue<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;queue is empty !<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    DType x <span style="color: #000080;">=</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>data<span style="color: #008000;">&#91;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>front <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">%</span> q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>length<span style="color: #008080;">;</span>
    q<span style="color: #000040;">-</span><span style="color: #000080;">&#62;</span>size<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> x<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//---------------------------------------------</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    Queue q <span style="color: #000080;">=</span> newQueue<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    enqueue<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    enqueue<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    enqueue<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">3</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    enqueue<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">9</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    dequeue<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    enqueue<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">11</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    enqueue<span style="color: #008000;">&#40;</span>q, <span style="color: #0000dd;">12</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    dequeue<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printQueue<span style="color: #008000;">&#40;</span>q<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div></div></div>]]></description>
			<content:encoded><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >#include &lt;stdio.h&gt;</span>
<span >#include &lt;stdlib.h&gt;</span>
&nbsp;
<span >//-------------------------------------------------------</span>
<span >typedef</span> <span >float</span> DType<span >;</span>
<span >int</span> cmp<span >&#40;</span>DType d1, DType d2<span >&#41;</span><span >;</span>
<span >char</span> <span >*</span>toString<span >&#40;</span><span >char</span> <span >*</span>buf, DType d<span >&#41;</span><span >;</span>
<span >//-------------------------------------------------------</span>
<span >char</span> <span >*</span>toString<span >&#40;</span><span >char</span> <span >*</span>buf, <span >float</span> d<span >&#41;</span> <span >&#123;</span>
    <span >sprintf</span><span >&#40;</span>buf, <span >&quot;%6.2f&quot;</span>, d<span >&#41;</span><span >;</span>
    <span >return</span> buf<span >;</span>
<span >&#125;</span>
<span >//-------------------------------------------------------</span>
<span >struct</span> SQueue <span >&#123;</span>
    DType <span >*</span>data<span >;</span>
    <span >int</span> length<span >;</span>
    <span >int</span> size<span >;</span>
    <span >int</span> front<span >;</span>
<span >&#125;</span><span >;</span>
<span >typedef</span> <span >struct</span> SQueue <span >*</span>Queue<span >;</span>
<span >//-------------------------------------</span>
Queue newQueue<span >&#40;</span><span >int</span> length<span >&#41;</span> <span >&#123;</span>
    Queue q <span >=</span> <span >&#40;</span>Queue<span >&#41;</span> <span >malloc</span><span >&#40;</span><span >sizeof</span><span >&#40;</span><span >struct</span> SQueue<span >&#41;</span><span >&#41;</span><span >;</span>
    q<span >-</span><span >&gt;</span>data <span >=</span> <span >&#40;</span>DType <span >*</span><span >&#41;</span> <span >malloc</span><span >&#40;</span>length <span >*</span> <span >sizeof</span><span >&#40;</span>DType<span >&#41;</span><span >&#41;</span><span >;</span>
    q<span >-</span><span >&gt;</span>length <span >=</span> length<span >;</span>
    q<span >-</span><span >&gt;</span>size <span >=</span> <span >0</span><span >;</span>
    q<span >-</span><span >&gt;</span>front <span >=</span> <span >0</span><span >;</span>
    <span >return</span> q<span >;</span>
<span >&#125;</span>
<span >void</span> freeQueue<span >&#40;</span>Queue q<span >&#41;</span> <span >&#123;</span>
    <span >free</span><span >&#40;</span>q<span >-</span><span >&gt;</span>data<span >&#41;</span><span >;</span>
    <span >free</span><span >&#40;</span>q<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >int</span> sizeOfQueue<span >&#40;</span>Queue q<span >&#41;</span> <span >&#123;</span>
    <span >return</span> q<span >-</span><span >&gt;</span>size<span >;</span>
<span >&#125;</span>
<span >int</span> isEmptyQueue<span >&#40;</span>Queue q<span >&#41;</span> <span >&#123;</span>
    <span >return</span> q<span >-</span><span >&gt;</span>size <span >==</span> <span >0</span><span >;</span>
<span >&#125;</span>
<span >int</span> isFullQueue<span >&#40;</span>Queue q<span >&#41;</span> <span >&#123;</span>
    <span >return</span> q<span >-</span><span >&gt;</span>size <span >==</span> q<span >-</span><span >&gt;</span>length<span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >void</span> printQueue<span >&#40;</span>Queue q<span >&#41;</span> <span >&#123;</span>
    <span >int</span> i<span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;queue:[ &quot;</span><span >&#41;</span><span >;</span>
    <span >int</span> f <span >=</span> q<span >-</span><span >&gt;</span>front<span >;</span>
    <span >char</span> buf<span >&#91;</span><span >100</span><span >&#93;</span><span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span><span >0</span><span >;</span> i<span >&lt;</span>q<span >-</span><span >&gt;</span>size<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;%s &quot;</span>, toString<span >&#40;</span>buf, q<span >-</span><span >&gt;</span>data<span >&#91;</span>f<span >&#93;</span><span >&#41;</span><span >&#41;</span><span >;</span>
        f <span >=</span> <span >&#40;</span>f <span >+</span> <span >1</span><span >&#41;</span> <span >%</span> q<span >-</span><span >&gt;</span>length<span >;</span>
    <span >&#125;</span>
    <span >printf</span><span >&#40;</span><span >&quot;]<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >void</span> enqueue<span >&#40;</span>Queue q, DType x<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>q<span >-</span><span >&gt;</span>size <span >==</span> q<span >-</span><span >&gt;</span>length<span >&#41;</span> <span >&#123;</span>
        <span >int</span> newlength <span >=</span> <span >2</span><span >*</span>q<span >-</span><span >&gt;</span>length<span >;</span>
        DType <span >*</span>a <span >=</span> <span >&#40;</span>DType <span >*</span><span >&#41;</span> <span >malloc</span><span >&#40;</span>newlength <span >*</span> <span >sizeof</span><span >&#40;</span>DType<span >&#41;</span><span >&#41;</span><span >;</span>
        <span >int</span> i<span >;</span>
        <span >for</span> <span >&#40;</span>i<span >=</span><span >0</span><span >;</span> i<span >&lt;</span>q<span >-</span><span >&gt;</span>size<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
            a<span >&#91;</span>i<span >&#93;</span> <span >=</span> q<span >-</span><span >&gt;</span>data<span >&#91;</span>q<span >-</span><span >&gt;</span>front<span >&#93;</span><span >;</span>
            q<span >-</span><span >&gt;</span>front <span >=</span> <span >&#40;</span>q<span >-</span><span >&gt;</span>front <span >+</span> <span >1</span><span >&#41;</span> <span >%</span> q<span >-</span><span >&gt;</span>length<span >;</span>
        <span >&#125;</span>
        <span >free</span><span >&#40;</span>q<span >-</span><span >&gt;</span>data<span >&#41;</span><span >;</span>
        q<span >-</span><span >&gt;</span>data <span >=</span> a<span >;</span>
        q<span >-</span><span >&gt;</span>length <span >=</span> newlength<span >;</span>
        q<span >-</span><span >&gt;</span>front <span >=</span> <span >0</span><span >;</span>
    <span >&#125;</span>
    <span >int</span> b <span >=</span> <span >&#40;</span>q<span >-</span><span >&gt;</span>front <span >+</span> q<span >-</span><span >&gt;</span>size<span >&#41;</span> <span >%</span> q<span >-</span><span >&gt;</span>length<span >;</span>
    q<span >-</span><span >&gt;</span>data<span >&#91;</span>b<span >&#93;</span> <span >=</span> x<span >;</span>
    q<span >-</span><span >&gt;</span>size<span >++</span><span >;</span>
<span >&#125;</span>
DType dequeue<span >&#40;</span>Queue q<span >&#41;</span> <span >&#123;</span>
    <span >if</span> <span >&#40;</span>isEmptyQueue<span >&#40;</span>q<span >&#41;</span><span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;queue is empty !<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
        <span >exit</span><span >&#40;</span><span >1</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    DType x <span >=</span> q<span >-</span><span >&gt;</span>data<span >&#91;</span>q<span >-</span><span >&gt;</span>front<span >&#93;</span><span >;</span>
    q<span >-</span><span >&gt;</span>front <span >=</span> <span >&#40;</span>q<span >-</span><span >&gt;</span>front <span >+</span> <span >1</span><span >&#41;</span> <span >%</span> q<span >-</span><span >&gt;</span>length<span >;</span>
    q<span >-</span><span >&gt;</span>size<span >--</span><span >;</span>
    <span >return</span> x<span >;</span>
<span >&#125;</span>
<span >//---------------------------------------------</span>
<span >int</span> main<span >&#40;</span><span >int</span> argc, <span >char</span> <span >*</span>argv<span >&#91;</span><span >&#93;</span><span >&#41;</span> <span >&#123;</span>
    Queue q <span >=</span> newQueue<span >&#40;</span><span >1</span><span >&#41;</span><span >;</span>
    enqueue<span >&#40;</span>q, <span >1</span><span >&#41;</span><span >;</span>
    enqueue<span >&#40;</span>q, <span >2</span><span >&#41;</span><span >;</span>
    enqueue<span >&#40;</span>q, <span >3</span><span >&#41;</span><span >;</span>
    enqueue<span >&#40;</span>q, <span >9</span><span >&#41;</span><span >;</span>
    dequeue<span >&#40;</span>q<span >&#41;</span><span >;</span>
    enqueue<span >&#40;</span>q, <span >11</span><span >&#41;</span><span >;</span>
    enqueue<span >&#40;</span>q, <span >12</span><span >&#41;</span><span >;</span>
    dequeue<span >&#40;</span>q<span >&#41;</span><span >;</span>
    printQueue<span >&#40;</span>q<span >&#41;</span><span >;</span>
    <span >return</span> <span >0</span><span >;</span>
<span >&#125;</span></pre>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nattee.net/?q=node/2160/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Speedtest TOT 3G</title>
		<link>http://ultimateohm.blogspot.com/2012/01/speedtest-tot-3g.html</link>
		<comments>http://ultimateohm.blogspot.com/2012/01/speedtest-tot-3g.html#comments</comments>
		<pubDate>Sun, 15 Jan 2012 12:17:00 +0000</pubDate>
		<dc:creator>ultimateohm</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-4189612349823693418.post-8349617018597420620</guid>
		<description><![CDATA[Speedtest TOT 3G 365 4.49/1.67Mbps seems high speed at Retro Live Cafe QSNCC.]]></description>
			<content:encoded><![CDATA[<p>Speedtest TOT 3G 365 4.49/1.67Mbps seems high speed at Retro Live Cafe QSNCC.</p>
<p><img src="http://www.speedtest.net/android/126646114.png" />
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4189612349823693418-8349617018597420620?l=ultimateohm.blogspot.com' alt='' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ultimateohm.blogspot.com/2012/01/speedtest-tot-3g.html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>00-array.c skeleton</title>
		<link>http://www.nattee.net/?q=node/2151</link>
		<comments>http://www.nattee.net/?q=node/2151#comments</comments>
		<pubDate>Tue, 27 Dec 2011 18:42:29 +0000</pubDate>
		<dc:creator>dae</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">2151 at http://www.nattee.net</guid>
		<description><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #339900;">#include &#60;stdio.h&#62;</span>
<span style="color: #339900;">#include &#60;stdlib.h&#62;</span>
&#160;
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>newIntArray1D<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> n, <span style="color: #0000ff;">int</span> initVal<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>a <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>n<span style="color: #000040;">*</span><span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#60;</span>n<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> initVal<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> a<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">int</span> <span style="color: #000040;">**</span>newIntArray2D<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> r, <span style="color: #0000ff;">int</span> c, <span style="color: #0000ff;">int</span> initVal<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">// create 2D array of r rows and c column</span>
    <span style="color: #666666;">//return a;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>copyIntArray1D<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>a, <span style="color: #0000ff;">int</span> oldSize, <span style="color: #0000ff;">int</span> newSize<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">// create another copy of a, having newSize members</span>
    <span style="color: #666666;">//return b;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">void</span> printArray1D<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>a, <span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;[ &#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#60;</span>n<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%d &#34;</span>, a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;]<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">void</span> printArray2D<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">**</span>a, <span style="color: #0000ff;">int</span> r, <span style="color: #0000ff;">int</span> c<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">//print 2D array</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">int</span> binarySearch<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> d<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> n, <span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">// find the index of d[] that contains x, d must be sorted</span>
    <span style="color: #666666;">// return the index or -1 if not found</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> sequentialSearch<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> d<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> n, <span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">// find the index of d[] that contains x, d must be sorted</span>
    <span style="color: #666666;">// return the index or -1 if not found</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">void</span> swap<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> d<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> a, <span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> t <span style="color: #000080;">=</span> d<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    d<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> d<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    d<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">int</span> max<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> d<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">// find the maximum value of d</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> min<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> d<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">// find the minimum value of d</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>a, <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>b<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a <span style="color: #000040;">-</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> sortInt<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> d<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">qsort</span><span style="color: #008000;">&#40;</span>d, n, <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span>, cmp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//--------------------------------------------------</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> r <span style="color: #000080;">=</span> <span style="color: #0000dd;">3</span>, c <span style="color: #000080;">=</span> <span style="color: #0000dd;">4</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> <span style="color: #000040;">**</span>a <span style="color: #000080;">=</span> newIntArray2D<span style="color: #008000;">&#40;</span>r, c, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i, j<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&#60;</span>r<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
        <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> j<span style="color: #000080;">&#60;</span>c<span style="color: #008080;">;</span> j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
            a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i <span style="color: #000040;">+</span> j<span style="color: #008080;">;</span>
    printArray2D<span style="color: #008000;">&#40;</span>a, r, c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div>


Here are some more usage example of Array data structure
<h3>1. max example</h1>
<div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">//declare variable</span>
    <span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>a<span style="color: #008080;">;</span>
&#160;
    <span style="color: #666666;">//create array</span>
    n <span style="color: #000080;">=</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>
    a <span style="color: #000080;">=</span> newIntArray1D<span style="color: #008000;">&#40;</span>n, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">10</span><span style="color: #008080;">;</span>
    a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>
    a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">30</span><span style="color: #008080;">;</span>
&#160;
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;max = %d<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>,max<span style="color: #008000;">&#40;</span>a,n<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>  <span style="color: #666666;">// should display -3, not 0</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div>




<h3>2. search and min example</h1>
<div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">//declare variable</span>
    <span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>a<span style="color: #008080;">;</span>
&#160;
    <span style="color: #666666;">//create array</span>
    n <span style="color: #000080;">=</span> <span style="color: #0000dd;">5</span><span style="color: #008080;">;</span>
    a <span style="color: #000080;">=</span> newIntArray1D<span style="color: #008000;">&#40;</span>n, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>
    a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">4</span><span style="color: #008080;">;</span>
    a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">10</span><span style="color: #008080;">;</span>
&#160;
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;Min = %d<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>,min<span style="color: #008000;">&#40;</span>a,n<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>  <span style="color: #666666;">// should display -10</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;Found %d at position %d<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>,<span style="color: #0000dd;">2</span>,sequentialSearch<span style="color: #008000;">&#40;</span>a,n,<span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>  <span style="color: #666666;">// should display -1</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;Found %d at position %d<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>,<span style="color: #0000dd;">4</span>,sequentialSearch<span style="color: #008000;">&#40;</span>a,n,<span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>  <span style="color: #666666;">// should display 3</span>
&#160;
    sortInt<span style="color: #008000;">&#40;</span>a,n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    printArray1D<span style="color: #008000;">&#40;</span>a,n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div></div></div>]]></description>
			<content:encoded><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >#include &lt;stdio.h&gt;</span>
<span >#include &lt;stdlib.h&gt;</span>
&nbsp;
<span >//--------------------------------------------------</span>
<span >int</span> <span >*</span>newIntArray1D<span >&#40;</span><span >int</span> n, <span >int</span> initVal<span >&#41;</span> <span >&#123;</span>
    <span >int</span> <span >*</span>a <span >=</span> <span >&#40;</span><span >int</span> <span >*</span><span >&#41;</span> <span >malloc</span><span >&#40;</span>n<span >*</span><span >sizeof</span><span >&#40;</span><span >int</span><span >&#41;</span><span >&#41;</span><span >;</span>
    <span >int</span> i<span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span><span >0</span><span >;</span> i<span >&lt;</span>n<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        a<span >&#91;</span>i<span >&#93;</span> <span >=</span> initVal<span >;</span>
    <span >&#125;</span>
    <span >return</span> a<span >;</span>
<span >&#125;</span>
<span >//--------------------------------------------------</span>
<span >int</span> <span >**</span>newIntArray2D<span >&#40;</span><span >int</span> r, <span >int</span> c, <span >int</span> initVal<span >&#41;</span> <span >&#123;</span>
    <span >// create 2D array of r rows and c column</span>
    <span >//return a;</span>
<span >&#125;</span>
<span >//--------------------------------------------------</span>
<span >int</span> <span >*</span>copyIntArray1D<span >&#40;</span><span >int</span> <span >*</span>a, <span >int</span> oldSize, <span >int</span> newSize<span >&#41;</span> <span >&#123;</span>
    <span >// create another copy of a, having newSize members</span>
    <span >//return b;</span>
<span >&#125;</span>
<span >//--------------------------------------------------</span>
<span >void</span> printArray1D<span >&#40;</span><span >int</span> <span >*</span>a, <span >int</span> n<span >&#41;</span> <span >&#123;</span>
    <span >int</span> i<span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;[ &quot;</span><span >&#41;</span><span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span><span >0</span><span >;</span> i<span >&lt;</span>n<span >;</span> i<span >++</span><span >&#41;</span> <span >&#123;</span>
        <span >printf</span><span >&#40;</span><span >&quot;%d &quot;</span>, a<span >&#91;</span>i<span >&#93;</span><span >&#41;</span><span >;</span>
    <span >&#125;</span>
    <span >printf</span><span >&#40;</span><span >&quot;]<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//--------------------------------------------------</span>
<span >void</span> printArray2D<span >&#40;</span><span >int</span> <span >**</span>a, <span >int</span> r, <span >int</span> c<span >&#41;</span> <span >&#123;</span>
    <span >//print 2D array</span>
<span >&#125;</span>
<span >//--------------------------------------------------</span>
<span >int</span> binarySearch<span >&#40;</span><span >int</span> d<span >&#91;</span><span >&#93;</span>, <span >int</span> n, <span >int</span> x<span >&#41;</span> <span >&#123;</span>
    <span >// find the index of d[] that contains x, d must be sorted</span>
    <span >// return the index or -1 if not found</span>
<span >&#125;</span>
<span >int</span> sequentialSearch<span >&#40;</span><span >int</span> d<span >&#91;</span><span >&#93;</span>, <span >int</span> n, <span >int</span> x<span >&#41;</span> <span >&#123;</span>
    <span >// find the index of d[] that contains x, d must be sorted</span>
    <span >// return the index or -1 if not found</span>
<span >&#125;</span>
<span >//--------------------------------------------------</span>
<span >void</span> swap<span >&#40;</span><span >int</span> d<span >&#91;</span><span >&#93;</span>, <span >int</span> a, <span >int</span> b<span >&#41;</span> <span >&#123;</span>
    <span >int</span> t <span >=</span> d<span >&#91;</span>a<span >&#93;</span><span >;</span>
    d<span >&#91;</span>a<span >&#93;</span> <span >=</span> d<span >&#91;</span>b<span >&#93;</span><span >;</span>
    d<span >&#91;</span>b<span >&#93;</span> <span >=</span> t<span >;</span>
<span >&#125;</span>
<span >//--------------------------------------------------</span>
<span >int</span> max<span >&#40;</span><span >int</span> d<span >&#91;</span><span >&#93;</span>, <span >int</span> n<span >&#41;</span> <span >&#123;</span>
    <span >// find the maximum value of d</span>
<span >&#125;</span>
<span >int</span> min<span >&#40;</span><span >int</span> d<span >&#91;</span><span >&#93;</span>, <span >int</span> n<span >&#41;</span> <span >&#123;</span>
    <span >// find the minimum value of d</span>
<span >&#125;</span>
<span >//--------------------------------------------------</span>
<span >int</span> cmp<span >&#40;</span><span >const</span> <span >void</span> <span >*</span>a, <span >const</span> <span >void</span> <span >*</span>b<span >&#41;</span> <span >&#123;</span>
    <span >return</span> <span >&#40;</span><span >const</span> <span >int</span> <span >*</span><span >&#41;</span>a <span >-</span> <span >&#40;</span><span >const</span> <span >int</span> <span >*</span><span >&#41;</span>b<span >;</span>
<span >&#125;</span>
<span >void</span> sortInt<span >&#40;</span><span >int</span> d<span >&#91;</span><span >&#93;</span>, <span >int</span> n<span >&#41;</span> <span >&#123;</span>
    <span >qsort</span><span >&#40;</span>d, n, <span >sizeof</span><span >&#40;</span><span >int</span><span >&#41;</span>, cmp<span >&#41;</span><span >;</span>
<span >&#125;</span>
<span >//--------------------------------------------------</span>
<span >int</span> main<span >&#40;</span><span >int</span> argc, <span >char</span> <span >*</span>argv<span >&#91;</span><span >&#93;</span><span >&#41;</span> <span >&#123;</span>
    <span >int</span> r <span >=</span> <span >3</span>, c <span >=</span> <span >4</span><span >;</span>
    <span >int</span> <span >**</span>a <span >=</span> newIntArray2D<span >&#40;</span>r, c, <span >0</span><span >&#41;</span><span >;</span>
    <span >int</span> i, j<span >;</span>
    <span >for</span> <span >&#40;</span>i<span >=</span><span >0</span><span >;</span> i<span >&lt;</span>r<span >;</span> i<span >++</span><span >&#41;</span>
        <span >for</span> <span >&#40;</span>j<span >=</span><span >0</span><span >;</span> j<span >&lt;</span>c<span >;</span> j<span >++</span><span >&#41;</span>
            a<span >&#91;</span>i<span >&#93;</span><span >&#91;</span>j<span >&#93;</span> <span >=</span> i <span >+</span> j<span >;</span>
    printArray2D<span >&#40;</span>a, r, c<span >&#41;</span><span >;</span>
    <span >return</span> <span >0</span><span >;</span>
<span >&#125;</span></pre>
</div>
<p>Here are some more usage example of Array data structure</p>
<h3>1. max example</h1>
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >int</span> main<span >&#40;</span><span >int</span> argc, <span >char</span> <span >*</span>argv<span >&#91;</span><span >&#93;</span><span >&#41;</span> <span >&#123;</span>
    <span >//declare variable</span>
    <span >int</span> n<span >;</span>
    <span >int</span> <span >*</span>a<span >;</span>
&nbsp;
    <span >//create array</span>
    n <span >=</span> <span >3</span><span >;</span>
    a <span >=</span> newIntArray1D<span >&#40;</span>n, <span >0</span><span >&#41;</span><span >;</span>
    a<span >&#91;</span><span >0</span><span >&#93;</span> <span >=</span> <span >-</span><span >10</span><span >;</span>
    a<span >&#91;</span><span >1</span><span >&#93;</span> <span >=</span> <span >-</span><span >3</span><span >;</span>
    a<span >&#91;</span><span >2</span><span >&#93;</span> <span >=</span> <span >-</span><span >30</span><span >;</span>
&nbsp;
    <span >printf</span><span >&#40;</span><span >&quot;max = %d<span >\n</span>&quot;</span>,max<span >&#40;</span>a,n<span >&#41;</span><span >&#41;</span><span >;</span>  <span >// should display -3, not 0</span>
    <span >return</span> <span >0</span><span >;</span>
<span >&#125;</span></pre>
</div>
<h3>2. search and min example</h1>
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >int</span> main<span >&#40;</span><span >int</span> argc, <span >char</span> <span >*</span>argv<span >&#91;</span><span >&#93;</span><span >&#41;</span> <span >&#123;</span>
    <span >//declare variable</span>
    <span >int</span> n<span >;</span>
    <span >int</span> <span >*</span>a<span >;</span>
&nbsp;
    <span >//create array</span>
    n <span >=</span> <span >5</span><span >;</span>
    a <span >=</span> newIntArray1D<span >&#40;</span>n, <span >0</span><span >&#41;</span><span >;</span>
    a<span >&#91;</span><span >0</span><span >&#93;</span> <span >=</span> <span >1</span><span >;</span>
    a<span >&#91;</span><span >1</span><span >&#93;</span> <span >=</span> <span >-</span><span >1</span><span >;</span>
    a<span >&#91;</span><span >2</span><span >&#93;</span> <span >=</span> <span >3</span><span >;</span>
    a<span >&#91;</span><span >3</span><span >&#93;</span> <span >=</span> <span >4</span><span >;</span>
    a<span >&#91;</span><span >4</span><span >&#93;</span> <span >=</span> <span >-</span><span >10</span><span >;</span>
&nbsp;
    <span >printf</span><span >&#40;</span><span >&quot;Min = %d<span >\n</span>&quot;</span>,min<span >&#40;</span>a,n<span >&#41;</span><span >&#41;</span><span >;</span>  <span >// should display -10</span>
    <span >printf</span><span >&#40;</span><span >&quot;Found %d at position %d<span >\n</span>&quot;</span>,<span >2</span>,sequentialSearch<span >&#40;</span>a,n,<span >2</span><span >&#41;</span><span >&#41;</span><span >;</span>  <span >// should display -1</span>
    <span >printf</span><span >&#40;</span><span >&quot;Found %d at position %d<span >\n</span>&quot;</span>,<span >4</span>,sequentialSearch<span >&#40;</span>a,n,<span >4</span><span >&#41;</span><span >&#41;</span><span >;</span>  <span >// should display 3</span>
&nbsp;
    sortInt<span >&#40;</span>a,n<span >&#41;</span><span >;</span>
    printArray1D<span >&#40;</span>a,n<span >&#41;</span><span >;</span>
    <span >return</span> <span >0</span><span >;</span>
<span >&#125;</span></pre>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nattee.net/?q=node/2151/feed/</wfw:commentRss>
		</item>
		<item>
		<title>struct example</title>
		<link>http://www.nattee.net/?q=node/2150</link>
		<comments>http://www.nattee.net/?q=node/2150#comments</comments>
		<pubDate>Tue, 27 Dec 2011 18:30:54 +0000</pubDate>
		<dc:creator>dae</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">2150 at http://www.nattee.net</guid>
		<description><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #339900;">#include &#60;stdio.h&#62;</span>
<span style="color: #339900;">#include &#60;stdlib.h&#62;</span>
&#160;
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> Student_TAG <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> year<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> id<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">float</span> gpax<span style="color: #008080;">;</span> <span style="color: #666666;">// 4.00</span>
<span style="color: #008000;">&#125;</span> Student<span style="color: #008080;">;</span>
&#160;
<span style="color: #0000ff;">void</span> printStudent<span style="color: #008000;">&#40;</span>Student x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;Year is %d<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>,x.<span style="color: #007788;">year</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;ID is %d<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>,x.<span style="color: #007788;">id</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;GPAX is %.2f<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>,x.<span style="color: #007788;">gpax</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&#160;
<span style="color: #0000ff;">void</span> diffGPAX<span style="color: #008000;">&#40;</span>Student a,Student b,Student <span style="color: #000040;">*</span>c<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>c<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">gpax</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>c<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">gpax</span> <span style="color: #000040;">+</span> <span style="color: #008000;">&#40;</span>a.<span style="color: #007788;">gpax</span> <span style="color: #000040;">+</span> b.<span style="color: #007788;">gpax</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> <span style="color:#800080;">0.1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&#160;
Student createStudent<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> year<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    Student x<span style="color: #008080;">;</span>
    x.<span style="color: #007788;">year</span> <span style="color: #000080;">=</span> year<span style="color: #008080;">;</span>
    x.<span style="color: #007788;">id</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    x.<span style="color: #007788;">gpax</span> <span style="color: #000080;">=</span> <span style="color:#800080;">4.00</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> x<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&#160;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n <span style="color: #000080;">=</span> <span style="color: #0000dd;">100</span><span style="color: #008080;">;</span>
    Student <span style="color: #000040;">*</span>cp<span style="color: #008080;">;</span>
&#160;
    cp <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>Student <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span><span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>n <span style="color: #000040;">*</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>Student<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
    cp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">gpax</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">10</span><span style="color: #008080;">;</span>
    cp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">gpax</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">10</span><span style="color: #008080;">;</span>
    cp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">gpax</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
&#160;
    diffGPAX<span style="color: #008000;">&#40;</span>cp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,cp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,<span style="color: #000040;">&#38;</span>cp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%.2f<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>,cp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">gpax</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
&#160;
    <span style="color: #666666;">//printStudent(sukhum);</span>
&#160;
<span style="color: #008000;">&#125;</span></pre></div></div></div></div>]]></description>
			<content:encoded><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >#include &lt;stdio.h&gt;</span>
<span >#include &lt;stdlib.h&gt;</span>
&nbsp;
<span >typedef</span> <span >struct</span> Student_TAG <span >&#123;</span>
    <span >int</span> year<span >;</span>
    <span >int</span> id<span >;</span>
    <span >float</span> gpax<span >;</span> <span >// 4.00</span>
<span >&#125;</span> Student<span >;</span>
&nbsp;
<span >void</span> printStudent<span >&#40;</span>Student x<span >&#41;</span> <span >&#123;</span>
    <span >printf</span><span >&#40;</span><span >&quot;Year is %d<span >\n</span>&quot;</span>,x.<span >year</span><span >&#41;</span><span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;ID is %d<span >\n</span>&quot;</span>,x.<span >id</span><span >&#41;</span><span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;GPAX is %.2f<span >\n</span>&quot;</span>,x.<span >gpax</span><span >&#41;</span><span >;</span>
<span >&#125;</span>
&nbsp;
<span >void</span> diffGPAX<span >&#40;</span>Student a,Student b,Student <span >*</span>c<span >&#41;</span> <span >&#123;</span>
    <span >&#40;</span><span >*</span>c<span >&#41;</span>.<span >gpax</span> <span >=</span> <span >&#40;</span><span >*</span>c<span >&#41;</span>.<span >gpax</span> <span >+</span> <span >&#40;</span>a.<span >gpax</span> <span >+</span> b.<span >gpax</span><span >&#41;</span> <span >*</span> <span >0.1</span><span >;</span>
<span >&#125;</span>
&nbsp;
Student createStudent<span >&#40;</span><span >int</span> year<span >&#41;</span> <span >&#123;</span>
    Student x<span >;</span>
    x.<span >year</span> <span >=</span> year<span >;</span>
    x.<span >id</span> <span >=</span> <span >0</span><span >;</span>
    x.<span >gpax</span> <span >=</span> <span >4.00</span><span >;</span>
    <span >return</span> x<span >;</span>
<span >&#125;</span>
&nbsp;
<span >int</span> main<span >&#40;</span><span >&#41;</span>
<span >&#123;</span>
    <span >int</span> n <span >=</span> <span >100</span><span >;</span>
    Student <span >*</span>cp<span >;</span>
&nbsp;
    cp <span >=</span> <span >&#40;</span>Student <span >*</span><span >&#41;</span><span >malloc</span><span >&#40;</span>n <span >*</span> <span >sizeof</span><span >&#40;</span>Student<span >&#41;</span><span >&#41;</span><span >;</span>
&nbsp;
    cp<span >&#91;</span><span >0</span><span >&#93;</span>.<span >gpax</span> <span >=</span> <span >10</span><span >;</span>
    cp<span >&#91;</span><span >1</span><span >&#93;</span>.<span >gpax</span> <span >=</span> <span >10</span><span >;</span>
    cp<span >&#91;</span><span >2</span><span >&#93;</span>.<span >gpax</span> <span >=</span> <span >0</span><span >;</span>
&nbsp;
    diffGPAX<span >&#40;</span>cp<span >&#91;</span><span >0</span><span >&#93;</span>,cp<span >&#91;</span><span >1</span><span >&#93;</span>,<span >&amp;</span>cp<span >&#91;</span><span >2</span><span >&#93;</span><span >&#41;</span><span >;</span>
    <span >printf</span><span >&#40;</span><span >&quot;%.2f<span >\n</span>&quot;</span>,cp<span >&#91;</span><span >2</span><span >&#93;</span>.<span >gpax</span><span >&#41;</span><span >;</span>
&nbsp;
&nbsp;
    <span >//printStudent(sukhum);</span>
&nbsp;
<span >&#125;</span></pre>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nattee.net/?q=node/2150/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reverse solution</title>
		<link>http://www.nattee.net/?q=node/2149</link>
		<comments>http://www.nattee.net/?q=node/2149#comments</comments>
		<pubDate>Tue, 27 Dec 2011 18:24:28 +0000</pubDate>
		<dc:creator>dae</dc:creator>
		
		<category><![CDATA[Syndicated Posts]]></category>

		<guid isPermaLink="false">2149 at http://www.nattee.net</guid>
		<description><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p><div class="geshifilter"><pre style="font-family:monospace;"><span style="color: #339900;">#include &#60;stdio.h&#62;</span>
<span style="color: #339900;">#include &#60;stdlib.h&#62;</span>
&#160;
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">int</span><span style="color: #000040;">*</span> ArrayOfInt<span style="color: #008080;">;</span>
&#160;
<span style="color: #666666;">// write reverse function here</span>
<span style="color: #0000ff;">void</span> reverse<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> n,ArrayOfInt <span style="color: #000040;">*</span>a<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
&#160;
    <span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>t <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>n <span style="color: #000040;">*</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>  <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i <span style="color: #000080;">&#60;</span> n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        t<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span> <span style="color: #000040;">*</span>a <span style="color: #008000;">&#41;</span><span style="color: #008000;">&#91;</span>n <span style="color: #000040;">-</span> i <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
&#160;
    <span style="color: #000040;">*</span>a <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
    <span style="color: #666666;">//This will, in fact, cause memory leak.</span>
<span style="color: #008000;">&#125;</span>
&#160;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>      <span style="color: #666666;">// number of element</span>
    ArrayOfInt a<span style="color: #008080;">;</span>     <span style="color: #666666;">// array of integer</span>
&#160;
&#160;
    <span style="color: #666666;">//dynamic memory allocation</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%d&#34;</span>,<span style="color: #000040;">&#38;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    a <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>ArrayOfInt<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>n <span style="color: #000040;">*</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;Please enter %d integer(s).<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span>,n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i <span style="color: #000080;">&#60;</span> n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%d&#34;</span>,<span style="color: #000040;">&#38;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
    reverse<span style="color: #008000;">&#40;</span>n,<span style="color: #000040;">&#38;</span>a<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&#160;
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;Result are: &#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i <span style="color: #000080;">&#60;</span> n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;%d &#34;</span>,a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
 <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&#34;<span style="color: #000099; font-weight: bold;">\n</span>&#34;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></p></div></div></div>]]></description>
			<content:encoded><![CDATA[<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="geshifilter">
<pre class="cpp geshifilter-cpp" ><span >#include &lt;stdio.h&gt;</span>
<span >#include &lt;stdlib.h&gt;</span>
&nbsp;
<span >typedef</span> <span >int</span><span >*</span> ArrayOfInt<span >;</span>
&nbsp;
<span >// write reverse function here</span>
<span >void</span> reverse<span >&#40;</span><span >int</span> n,ArrayOfInt <span >*</span>a<span >&#41;</span> <span >&#123;</span>
&nbsp;
    <span >int</span> <span >*</span>t <span >=</span> <span >&#40;</span><span >int</span> <span >*</span><span >&#41;</span> <span >malloc</span><span >&#40;</span>n <span >*</span> <span >sizeof</span><span >&#40;</span><span >int</span><span >&#41;</span><span >&#41;</span><span >;</span>
&nbsp;
    <span >for</span> <span >&#40;</span>  <span >int</span> i <span >=</span> <span >0</span><span >;</span>i <span >&lt;</span> n<span >;</span><span >++</span>i<span >&#41;</span> <span >&#123;</span>
        t<span >&#91;</span>i<span >&#93;</span> <span >=</span> <span >&#40;</span> <span >*</span>a <span >&#41;</span><span >&#91;</span>n <span >-</span> i <span >-</span><span >1</span><span >&#93;</span><span >;</span>
    <span >&#125;</span>
&nbsp;
    <span >*</span>a <span >=</span> t<span >;</span>
    <span >//This will, in fact, cause memory leak.</span>
<span >&#125;</span>
&nbsp;
<span >int</span> main<span >&#40;</span><span >&#41;</span>
<span >&#123;</span>
    <span >int</span> n<span >;</span>      <span >// number of element</span>
    ArrayOfInt a<span >;</span>     <span >// array of integer</span>
&nbsp;
&nbsp;
    <span >//dynamic memory allocation</span>
    <span >scanf</span><span >&#40;</span><span >&quot;%d&quot;</span>,<span >&amp;</span>n<span >&#41;</span><span >;</span>
    a <span >=</span> <span >&#40;</span>ArrayOfInt<span >&#41;</span> <span >malloc</span><span >&#40;</span>n <span >*</span> <span >sizeof</span><span >&#40;</span><span >int</span><span >&#41;</span><span >&#41;</span><span >;</span>
&nbsp;
    <span >printf</span><span >&#40;</span><span >&quot;Please enter %d integer(s).<span >\n</span>&quot;</span>,n<span >&#41;</span><span >;</span>
    <span >for</span> <span >&#40;</span><span >int</span> i <span >=</span> <span >0</span><span >;</span>i <span >&lt;</span> n<span >;</span><span >++</span>i<span >&#41;</span> <span >scanf</span><span >&#40;</span><span >&quot;%d&quot;</span>,<span >&amp;</span>a<span >&#91;</span>i<span >&#93;</span><span >&#41;</span><span >;</span>
&nbsp;
    reverse<span >&#40;</span>n,<span >&amp;</span>a<span >&#41;</span><span >;</span>
&nbsp;
    <span >printf</span><span >&#40;</span><span >&quot;Result are: &quot;</span><span >&#41;</span><span >;</span>
    <span >for</span> <span >&#40;</span><span >int</span> i <span >=</span> <span >0</span><span >;</span>i <span >&lt;</span> n<span >;</span><span >++</span>i<span >&#41;</span> <span >printf</span><span >&#40;</span><span >&quot;%d &quot;</span>,a<span >&#91;</span>i<span >&#93;</span><span >&#41;</span><span >;</span>
 <span >printf</span><span >&#40;</span><span >&quot;<span >\n</span>&quot;</span><span >&#41;</span><span >;</span>
<span >&#125;</span></pre>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nattee.net/?q=node/2149/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

