<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[C++学习]C++链表使用完整代码，主要是想学它用来阅读Mysql的多个连接句柄。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Fri, 05 Aug 2011 10:17:51 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	g++ lianbiao.cpp<br/><br/><br/><textarea name="code" class="html" rows="15" cols="100">
/*
&nbsp;&nbsp; 练习使用链表：创建链表、遍历链表、查找节点、添加节点、删除节点
 */

#include &quot;stdio.h&quot;
#include &quot;string.h&quot;
#include &quot;assert.h&quot;
#include &quot;stdlib.h&quot;
//#include &quot;windows.h&quot;

#define COUNT 3

//定义一个节点结构体
struct NODE
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;unsigned long uID;
&nbsp;&nbsp;&nbsp;&nbsp;char strName[16];&nbsp;&nbsp;//用指针的话会出访问冲突异常
&nbsp;&nbsp;&nbsp;&nbsp;NODE *next;
&#125;;

//创建一个具有n个节点的链表，从键盘输入数据将其初始化，并返回链表的首节点指针
NODE *createNode(int n)
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;NODE *pHead, //首节点指针
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pRear, //尾节点指针
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pNew; //新节点指针
&nbsp;&nbsp;&nbsp;&nbsp;int i;
&nbsp;&nbsp;&nbsp;&nbsp;char *strName = new char[16];
&nbsp;&nbsp;&nbsp;&nbsp;for (i=0; i&lt;n; i++)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNew = new NODE;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请输入ID和名称：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%d %s&quot;,&amp;pNew-&gt;uID, strName);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (strlen(strName) &gt; 16)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;输入名称长度超出范围，请重新输入：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//sleep(1000);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; while(strlen(strName) &gt; 16);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcpy(pNew-&gt;strName, strName);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (0==i)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRear = pHead = pNew;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRear-&gt;next = pNew;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNew-&gt;next = NULL;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRear = pNew;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;delete []strName;
&nbsp;&nbsp;&nbsp;&nbsp;return pHead;
&#125;

//打印链表中所有节点的数据
void printNode(NODE *pHead)
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;NODE *pTemp = pHead;
&nbsp;&nbsp;&nbsp;&nbsp;assert(pTemp != NULL);
&nbsp;&nbsp;&nbsp;&nbsp;while (pTemp != NULL)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;%d %s &quot;,pTemp-&gt;uID, pTemp-&gt;strName);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pTemp = pTemp-&gt;next;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&#125;

//查询链表中具有指定ID的节点，并返回此节点指针
NODE *searchNode(NODE *pHead, unsigned long uID)
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;NODE *pDest = pHead;
&nbsp;&nbsp;&nbsp;&nbsp;assert(pDest != NULL);
&nbsp;&nbsp;&nbsp;&nbsp;while (pDest-&gt;next!=NULL &amp;&amp; pDest-&gt;uID!=uID)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDest = pDest-&gt;next;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;if (pDest-&gt;uID == uID)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return pDest;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;搜索失败，未找到找定ID的节点！ &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&#125;

//删除指定ID的节点
NODE *deleteNode(NODE *pHead, unsigned long uID)
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;NODE *pDest, //要删除的节点
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pBefore; //前一个节点
&nbsp;&nbsp;&nbsp;&nbsp;pDest = pHead;
&nbsp;&nbsp;&nbsp;&nbsp;assert(pDest != NULL);
&nbsp;&nbsp;&nbsp;&nbsp;while (pDest-&gt;next!=NULL &amp;&amp; pDest-&gt;uID!=uID)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBefore = pDest;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDest = pDest-&gt;next;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;if (pDest-&gt;uID == uID)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (pDest == pHead)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pHead = pDest-&gt;next;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBefore-&gt;next = pDest-&gt;next;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(pDest);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;节点已被删除！ &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;未找到指定节点，无法将其删除！ &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;return pHead;
&#125;

//在指定ID的节点后插入一个新的节点
NODE *insertNode(NODE *pHead, unsigned long uID)
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;NODE *pDest, *pNew;
&nbsp;&nbsp;&nbsp;&nbsp;pDest = pHead;
&nbsp;&nbsp;&nbsp;&nbsp;assert(pDest != NULL);
&nbsp;&nbsp;&nbsp;&nbsp;while(pDest-&gt;next!=NULL &amp;&amp; pDest-&gt;uID!=uID)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDest = pDest-&gt;next;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;if(pDest-&gt;uID == uID)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNew = new NODE;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请输入新节点的ID和名称：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%d %s&quot;,&amp;pNew-&gt;uID,pNew-&gt;strName);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNew-&gt;next = pDest-&gt;next;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDest-&gt;next = pNew;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;节点插入完成！ &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;未找到指定节点！ &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;return pHead;
&#125;

int main()
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;NODE *pHead, *pDest;
&nbsp;&nbsp;&nbsp;&nbsp;int nSelect;
&nbsp;&nbsp;&nbsp;&nbsp;bool isExit = false;
&nbsp;&nbsp;&nbsp;&nbsp;unsigned long uID;
&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请根据提示输入数据初始化链表：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;pHead = createNode(COUNT);
&nbsp;&nbsp;&nbsp;&nbsp;assert(pHead != NULL);
&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;链表创建成功！存储数据如下：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;printNode(pHead);
&nbsp;&nbsp;&nbsp;&nbsp;while (!isExit)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&#92;n --------------------------&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请选择要进行的操作：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;1.打印出链表所有节点数据：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;2.输入ID查询名称。&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;3.删除指定ID的节点。&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;4.在指定ID的节点后插入一个新的节点。&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;5.退出。&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&#92;n ---------------------------&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%d&quot;,&amp;nSelect);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(nSelect)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 1:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;链表所有节点数据如下：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printNode(pHead);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 2:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请输入要查询的节点的ID：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%d&quot;,&amp;uID);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDest = searchNode(pHead, uID);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (pDest != NULL)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;已找到节点，名字为：%s &quot;,pDest-&gt;strName);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 3:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请输入要删除的节点的ID：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%d&quot;,&amp;uID);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pHead = deleteNode(pHead, uID);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 4:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请输入要删除的节点的ID：&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%d&quot;,&amp;uID);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pHead = insertNode(pHead, uID);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 5:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isExit = true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;程序已退出！ &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;按键错误，请重新选择！ &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;return 1;
&#125;


</textarea><br/>书上来的代码：<br/><textarea name="code" class="html" rows="15" cols="100">
// ad.cpp : Defines the entry point for the console application.
//
#include &quot;stdafx.h&quot;
#include &lt;malloc.h&gt;
#include &lt;iostream.h&gt;
#include &lt;iomanip&gt;
#include &lt;iomanip.h&gt;
#include &lt;fstream&gt;
#include&nbsp;&nbsp; &lt;iostream.h&gt; 
#include&nbsp;&nbsp; &lt;iostream&gt; 


#include &lt;iostream&gt;

using namespace std;
 struct node
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;struct node *next;
&nbsp;&nbsp;&nbsp;&nbsp;char data;

&#125;;
 typedef struct node LinkList;
 LinkList *LinkListCreate()
 &#123;
&nbsp;&nbsp;char ch;
&nbsp;&nbsp;LinkList *p,*p1,*p2;
&nbsp;&nbsp;p = (LinkList *)malloc(sizeof(LinkList));
&nbsp;&nbsp;p-&gt;data = &#039;&#92;0&#039;;
&nbsp;&nbsp;p-&gt;next = NULL;
&nbsp;&nbsp;p1 = p;
&nbsp;&nbsp;while((ch = getchar()) != &#039;&#92;n&#039;)
&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;p2 = (LinkList *)malloc(sizeof(LinkList));
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; &#039;sss&#039; ; //std:: 加个这个才能显示，否则会报错喔。
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;p2-&gt;data =ch;
&nbsp;&nbsp;&nbsp;&nbsp;p2-&gt;next = NULL;
&nbsp;&nbsp;&nbsp;&nbsp;p1-&gt;next = p2;
&nbsp;&nbsp;&nbsp;&nbsp;p1 = p2;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;return p;
 &#125;
int main(int argc, char *argv[])
&#123;
&nbsp;&nbsp;LinkList *p,*q;
&nbsp;&nbsp;p = LinkListCreate();
&nbsp;&nbsp;q = p-&gt;next;
&nbsp;&nbsp;printf(&quot;element:&#92;n&quot;);
&nbsp;&nbsp;while(q)
&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;%c&quot;,q-&gt;data);
&nbsp;&nbsp;&nbsp;&nbsp;q = q-&gt;next;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;printf(&quot;&#92;n&quot;);
&nbsp;&nbsp;return 0;
&#125;

</textarea><br/>上面代码图示：<br/><a href="http://jackxiang.com/attachment.php?fid=180" target="_blank"><img src="http://jackxiang.com/attachment.php?fid=180" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><br/><br/>网上PPT来的代码：<br/><br/><textarea name="code" class="html" rows="15" cols="100">
#include &lt;iostream&gt;
using namespace std;
struct student
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;long num;
&nbsp;&nbsp;&nbsp;&nbsp;float score;
&nbsp;&nbsp;&nbsp;&nbsp;student *next;
&#125;;
student *head,*p1,*p2;
int n=0;

struct student *create()
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;student *head,*p1,*p2;
&nbsp;&nbsp;&nbsp;&nbsp;head = NULL;
&nbsp;&nbsp;&nbsp;&nbsp;p1 = new student;
&nbsp;&nbsp;&nbsp;&nbsp;p2 = p1;
&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;p1-&gt;num&gt;&gt;p1-&gt;score;
&nbsp;&nbsp;&nbsp;&nbsp;while(p1-&gt;num != 0)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(n == 1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;head = p1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2-&gt;next = p1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2 = p1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1 = new(student);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;p1-&gt;num&gt;&gt;p1-&gt;score;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;delete p1;
&nbsp;&nbsp;&nbsp;&nbsp;p2-&gt;next = NULL;
&nbsp;&nbsp;&nbsp;&nbsp;return head;
&#125;

void print(struct student *p )
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&lt;&lt; &quot;These &quot;&lt;&lt;n&lt;&lt;&quot;records are:&quot;&lt;&lt; endl;
&nbsp;&nbsp;&nbsp;&nbsp;if(p == NULL) return;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; p-&gt;num &lt;&lt; &quot; &quot;&lt;&lt;p-&gt;score&lt;&lt;endl;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p = p-&gt;next;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; while (p != NULL);

&#125;

int main(int argc, char* argv[])
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;struct student *head1;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; &quot;input records:&quot; &lt;&lt;endl;
&nbsp;&nbsp;&nbsp;&nbsp;head1 = create();
&nbsp;&nbsp;&nbsp;&nbsp;print(head1);
&nbsp;&nbsp;&nbsp;&nbsp;return 1;
&#125;
</textarea><br/>在网上整的结构体指针的PPT下载：<br/><a href="attachment.php?fid=185">点击这里下载文件</a>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [C++学习]C++链表使用完整代码，主要是想学它用来阅读Mysql的多个连接句柄。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>