{"id":12,"date":"2022-10-29T00:42:05","date_gmt":"2022-10-28T16:42:05","guid":{"rendered":"https:\/\/shangwendada.co\/?p=12"},"modified":"2022-11-25T00:16:20","modified_gmt":"2022-11-24T16:16:20","slug":"%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%e5%85%b8%e4%be%8b","status":"publish","type":"post","link":"https:\/\/blog.shangwendada.top\/index.php\/2022\/10\/29\/%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%e5%85%b8%e4%be%8b\/","title":{"rendered":"\u6570\u636e\u7ed3\u6784\u5178\u4f8b"},"content":{"rendered":"<hr \/>\n<h2>1.\u6570\u7ec4\u5408\u5e76<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\nusing namespace std;\n\n\/*\n     burn it all down \uff1b\n     cause if I gotta !;\n     \u778e\u5199\u7684\u811a\u672c\n     \u94c1\u6253\u7684\u624b\n\n*\/\n    int n , m ;\nvoid input( int arry[] ,int len )\n{\n    for(int i = 0 ; i &lt; len ; i ++ )\n    {\n        cin &gt;&gt; arry[i] ;\n    }\n}\nvoid output( int arry[] , int len )\n{\n    for(int i = 0 ; i &lt; len ; i ++ )\n    {\n        cout&lt;&lt; arry[i] &lt;&lt; &quot; &quot; ;\n    }\n}\nvoid mix(int arrya[],int arryb[], int arryc[] )\n{\n    for(int i = 0 ; i &lt; n ; i ++ )\n    {\n        arryc[i] = arrya[i];\n    }\n    for(int i = n , j = 0 ; i &lt; m + n ; i ++ , j ++  )\n    {\n        arryc[i] = arryb[j];\n    }\n}\nconst int N = 1e5 + 10;\nint main ()\n{\n    int a[N],b[N];\n    int c[N&lt;&lt;1];\n\n    int k;\n    cout&lt;&lt;&quot;\u8f93\u5165\u6570\u7ec4a\u7684\u5927\u5c0f n = &quot; ;\n    cin &gt;&gt; n;\n    cout&lt;&lt;&quot;\u8f93\u5165\u6570\u7ec4b\u7684\u5927\u5c0f m = &quot; ;\n    cin &gt;&gt; m;\n    \/*\n    cout&lt;&lt;&quot;\u8f93\u5165\u6570\u7ec4b\u7684\u5927\u5c0f m = &quot; ;\n    cin &gt;&gt; m;\n    *\/\n    cout&lt;&lt;&quot;\u8f93\u5165a\u6570\u7ec4&quot;&lt;&lt;n&lt;&lt;&quot;\u4e2a\u5143\u7d20&quot;&lt;&lt;endl;\n    input(a, n);\n    cout&lt;&lt;&quot;\u8f93\u5165b\u6570\u7ec4&quot;&lt;&lt;m&lt;&lt;&quot;\u4e2a\u5143\u7d20&quot;&lt;&lt;endl;\n    input(b, m);\n    cout &lt;&lt; &quot;a\u6570\u7ec4\u5185\u5bb9:&quot;&lt;&lt;endl;\n    output(a,n);\n    cout&lt;&lt;endl;\n    cout&lt;&lt; &quot;b\u6570\u7ec4\u5185\u5bb9:&quot; &lt;&lt;endl;\n    output(b,m);\n    cout&lt;&lt;endl;\n    \/\/cout&lt;&lt;&quot;\u8bf7\u8f93\u5165\u8981\u8f93\u51fa\u591a\u5c11\u4e2aa\u6570\u7ec4\u5143\u7d20&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;\u6570\u7ec4a+b\u5408\u5e76\u540e\u7684\u5185\u5bb9:&quot;&lt;&lt;endl;\n    mix(a,b,c);\n    output(c,m+n);\n\n}\n<\/code><\/pre>\n<hr \/>\n<h2>2.\u987a\u5e8f\u8868\u7684\u63d2\u5165\u4e0e\u5220\u9664<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\nusing namespace std;\ntypedef int status;\ntypedef int elemtype;\nconst int LIST_INIT_SIZE = 100;\n\ntypedef struct{\n    elemtype *elem;\n    int length;\n    int listsize;\n}sqlist; \n\nstatus initsqlist(sqlist *L)\/\/\u521d\u59cb\u5316 \n{\n    L-&gt;elem=(elemtype *)malloc(LIST_INIT_SIZE*sizeof(elemtype));\n    if(L-&gt;elem == NULL )\n        return 0;\n    L-&gt;length = 0;\n    L-&gt;listsize = LIST_INIT_SIZE;\n}\n\nstatus listinsert(sqlist *L ,int i , elemtype e)\/\/\u63d2\u5165 \n{\n    if(i &lt; 0 || i&gt;L-&gt;length + 1 )\n    {\n        cout&lt;&lt;&quot;ERROR&quot;&lt;&lt;endl;\n        return 0;\n    }\n    if(L-&gt;length &gt;= L-&gt;listsize )\n    {\n        elemtype *newbase = (elemtype *)realloc(L-&gt;elem , (L-&gt;listsize + 10)*sizeof(elemtype) );\n        if(newbase == NULL )\n        {\n            cout&lt;&lt;&quot;ERROR&quot;&lt;&lt;endl;\n            return 0;\n        }\n        L-&gt;elem;\n        L-&gt;listsize += 10;\n    }\n    elemtype *q = &amp;(L-&gt;elem[i-1]);\n    for(elemtype *p = &amp;(L-&gt;elem[L-&gt;length -1 ]); p &gt;= q ; -- p)\n    {\n        *(p+1)=*p;\n    }\n    *q=e;\n    L-&gt;length+=1; \n    return 1;\n}\nstatus listdelete(sqlist *L , int i , elemtype *e)\/\/\u5220\u9664 \n{\n    if(i &lt; 0 || i &gt; L -&gt; length + 1)\n    {\n        cout&lt;&lt;&quot;ERROR&quot;&lt;&lt;endl;\n        return 0;\n    }\n    *e = L-&gt;elem[i-1];\n    elemtype *p = &amp;(L-&gt;elem[i-1]);\n    elemtype *q = &amp;(L-&gt;elem[ L-&gt;length -1 ] );\n    for(++p ; p&lt;= q ; p++ )\n    {\n        *(p-1)=*p;\n    }\n    L-&gt;length-=1;\n}\nstatus outlist(sqlist *L)\/\/ \u8f93\u51fa\u51fd\u6570 \n{\n    for(int i = 0 ; i &lt;L-&gt;length ; i ++ )\n    {\n        cout&lt;&lt;L-&gt;elem[i]&lt;&lt;&quot; &quot;;\n    }\n    cout&lt;&lt;endl;\n    return 1;\n}\nint main ()\n{\n    sqlist L;\n    initsqlist(&amp;L);\n    int n,m;\n    cout&lt;&lt;&quot;\u8f93\u5165\u987a\u5e8f\u8868\u7684\u5143\u7d20\u4e2a\u6570:&quot;;\n    cin &gt;&gt; n;\n    for(int i = 0 ; i&lt; n ; i ++ )\n    {\n        printf(&quot;\u8bf7\u8f93\u5165\u7b2c%d\u4e2a\u5143\u7d20:&quot;,i+1);\n        elemtype elem;\n        cin &gt;&gt; elem;\n        listinsert(&amp;L,i+1,elem);\n    }\n    cout&lt;&lt;&quot;\u987a\u5e8f\u8868\u5185\u5143\u7d20:&quot;&lt;&lt;endl;\n    outlist(&amp;L);\n    cout&lt;&lt;&quot;\u8bf7\u8f93\u5165\u9700\u8981\u63d2\u5165\u7684\u5143\u7d20\u548c\u4f4d\u7f6e:&quot;&lt;&lt;endl;\n    elemtype tmp;\n    cin &gt;&gt; tmp &gt;&gt; n;\n    listinsert(&amp;L, n , tmp);\n    cout&lt;&lt;&quot;\u987a\u5e8f\u8868\u5185\u5143\u7d20:&quot;&lt;&lt;endl;\n    outlist(&amp;L);\n    cout&lt;&lt;&quot;\u8f93\u5165\u9700\u8981\u5220\u9664\u7684\u5143\u7d20\u4f4d\u7f6e:&quot;;\n    cin &gt;&gt; m ;\n    elemtype e;\n    if(listdelete(&amp;L, m , &amp;e))\n    {\n        cout&lt;&lt;&quot;\u5220\u9664\u6210\u529f!&quot;&lt;&lt;endl;\n        printf(&quot;\u5220\u9664\u7684\u5143\u7d20\u662f%d:\\n&quot;,e); \n    }\n\n}\n<\/code><\/pre>\n<hr \/>\n<h2>3.\u987a\u5e8f\u8868\u7684\u6392\u5e8f\u4e0e\u5408\u5e76<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\n#include&lt;windows.h&gt;\nusing namespace std;\ntypedef int status;\ntypedef int elemtype;\nconst int LIST_INIT_SIZE = 100;\n\ntypedef struct{\n    elemtype *elem;\n    int length;\n    int listsize;\n}sqlist; \n\nstatus initsqlist(sqlist *L)\n{\n    L-&gt;elem=(elemtype *)malloc(LIST_INIT_SIZE*sizeof(elemtype));\n    if(L-&gt;elem == NULL )\n        return 0;\n    L-&gt;length = 0;\n    L-&gt;listsize = LIST_INIT_SIZE;\n}\n\nstatus listinsert(sqlist &amp;L ,int i ,elemtype e)\n{\n    if(i &lt; 0 || i&gt;L.length + 1 )\n    {\n        cout&lt;&lt;&quot;ERROR&quot;&lt;&lt;endl;\n        return 0;\n    }\n    if(L.length &gt;= L.listsize )\n    {\n        elemtype *newbase = (elemtype *)realloc(L.elem , (L.listsize + 10)*sizeof(elemtype) );\n        if(newbase == NULL )\n        {\n            cout&lt;&lt;&quot;ERROR&quot;&lt;&lt;endl;\n            return 0;\n        }\n        L.elem = newbase ;\n        L.listsize += 10;\n    }\n    elemtype *q = &amp;(L.elem[i-1]);\n    for(elemtype *p = &amp;(L.elem[L.length -1 ]); p &gt;= q ; -- p)\n    {\n        *(p+1)=*p;\n    }\n    *q=e;\n    L.length+=1; \n    return 1;\n}\nstatus listdelete(sqlist *L , int i , elemtype *e)\n{\n    if(i &lt; 0 || i &gt; L -&gt; length + 1)\n    {\n        cout&lt;&lt;&quot;ERROR&quot;&lt;&lt;endl;\n        return 0;\n    }\n    *e = L-&gt;elem[i-1];\n    elemtype *p = &amp;(L-&gt;elem[i-1]);\n    elemtype *q = &amp;(L-&gt;elem[ L-&gt;length -1 ] );\n    for(++p ; p&lt;= q ; p++ )\n    {\n        *(p-1)=*p;\n    }\n    L-&gt;length-=1;\n}\nstatus outlist(sqlist *L)\n{\n    for(int i = 0 ; i &lt; L-&gt;length*2 ; i ++ )\n        cout&lt;&lt;&quot;-&quot;;\n    cout&lt;&lt;endl;\n    for(int i = 0 ; i &lt;L-&gt;length ; i ++ )\n    {\n        cout&lt;&lt;L-&gt;elem[i]&lt;&lt;&quot; &quot;;\n    }\n    cout&lt;&lt;endl;\n    for(int i = 0 ; i &lt; L-&gt;length*2 ; i ++ )\n        cout&lt;&lt;&quot;-&quot;;\n    cout&lt;&lt;endl;\n    return 1;\n}\n\nstatus greater_sqsort(sqlist &amp;L)\n{\n    int i,qw,q;\n    for(i=1;i&lt;L.length;i++)\n    {\n        q = i-1;\n        qw = L.elem[i]; \n        while(q &gt;= 0&amp;&amp; qw &lt; L.elem[q])    \n        {\n\n            L.elem[q+1] = L.elem[q];\n            q--;    \n        }\n        L.elem[q+1] = qw;\n    } \n    return 1;\n}\n\nstatus less_sqsort(sqlist &amp;L)\n{\n    int i,qw,q;\n    for(i=1;i&lt; L.length;i++)\n    {\n        q = i-1;\n        qw = *(L.elem+i); \n        while(q &gt;= 0&amp;&amp; qw &gt;= *(L.elem+q) )\n        {\n\n            *(L.elem+q+1)= *(L.elem+q);\n            q--;    \n        }\n        *(L.elem+q+1) = qw;\n    } \n    return 1;\n}\nvoid pd(sqlist &amp;L)\n{\n    int d;\n    cout&lt;&lt;&quot;1.\u4ece\u5c0f\u5230\u5927&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;2.\u4ece\u5927\u5230\u5c0f&quot;&lt;&lt;endl;\n    cin&gt;&gt; d;\n\n    if(d == 1)\n        greater_sqsort(L);\n    else if(d == 2)\n        less_sqsort(L);\n    else\n    {\n        cout&lt;&lt;&quot;error&quot;&lt;&lt;endl; \n        pd(L);\n\n    }   \n}\n\nvoid sqmerge(sqlist LA,sqlist LB , sqlist &amp;LC)\n{\n    int i = 0 , j = 0 , k = 0 ;\n    while(i &lt; LA.length &amp;&amp; j &lt; LB.length )\n    {\n        if( *(LA.elem+i) &lt;= *(LB.elem+j) )\n        {\n        \/\/  elemtype elem = *(LA-&gt;elem+i);\n            listinsert(LC,k+1,*(LA.elem+i));\n            i++;\n            k++;\n        }\n        else\n        {\n            listinsert(LC,k+1,*(LB.elem+j));\n            j++;\n            k++;\n        }\n    }\n    while(i&lt;LA.length)\n    {\n        listinsert(LC,k+1,*(LA.elem+i));\n        i++;\n        k++;\n    }\n    while(j&lt;LB.length)\n    {\n        listinsert(LC,k+1,*(LB.elem+j));\n        j++;\n        k++;\n    }\n}\n\nint main ()\n{\n    sqlist L;\n    initsqlist(&amp;L);\n    int n,m;\n    cout&lt;&lt;&quot;\u8f93\u5165\u987a\u5e8f\u8868\u7684\u5143\u7d20\u4e2a\u6570:&quot;;\n    cin &gt;&gt; n;\n    for(int i = 0 ; i&lt; n ; i ++ )\n    {\n        printf(&quot;\u8bf7\u8f93\u5165\u7b2c%d\u4e2a\u5143\u7d20:&quot;,i+1);\n        elemtype elem;\n        cin &gt;&gt; elem;\n        listinsert(L,i+1,elem);\n    }\n    cout&lt;&lt;&quot;\u987a\u5e8f\u8868\u5185\u5143\u7d20:&quot;&lt;&lt;endl;\n    outlist(&amp;L);\n    cout&lt;&lt;&quot;\u8f93\u5165\u6392\u5e8f\u65b9\u5f0f:&quot;&lt;&lt;endl;\n    pd(L);\n    cout&lt;&lt;&quot;\u6392\u5e8f\u540e\u7ed3\u679c\u4e3a:&quot;&lt;&lt;endl;\n    outlist(&amp;L);\n    sqlist Q;\n    initsqlist(&amp;Q);\n    cout&lt;&lt;&quot;\u8f93\u5165\u987a\u5e8f\u88682\u7684\u5143\u7d20\u4e2a\u6570:&quot;;\n    cin &gt;&gt; n;\n    for(int i = 0 ; i&lt; n ; i ++ )\n    {\n        printf(&quot;\u8bf7\u8f93\u5165\u7b2c%d\u4e2a\u5143\u7d20:&quot;,i+1);\n        elemtype elem;\n        cin &gt;&gt; elem;\n        listinsert(Q,i+1,elem);\n    }\n    \/\/listinsert(&amp;Q,2,*(L.elem));\n    cout&lt;&lt;&quot;\u987a\u5e8f\u88682\u5185\u5143\u7d20:&quot;&lt;&lt;endl;\n    outlist(&amp;Q);\n    cout&lt;&lt;&quot;\u8f93\u5165\u6392\u5e8f\u65b9\u5f0f:&quot;&lt;&lt;endl;\n    pd(Q);\n    cout&lt;&lt;&quot;\u6392\u5e8f\u540e\u7ed3\u679c\u4e3a:&quot;&lt;&lt;endl;\n    outlist(&amp;Q);\n    sqlist LC;\n    initsqlist(&amp;LC);\n    sqmerge(L,Q,LC);\n    cout&lt;&lt;&quot;\u88681\u548c\u88682\u5408\u5e76\u540e\u7ed3\u679c\u4e3a:&quot; &lt;&lt;endl;\n    outlist(&amp;LC);\n}\n<\/code><\/pre>\n<hr \/>\n<h2>4.\u94fe\u8868\u7684\u63d2\u5165\u4e0e\u5220\u9664<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\nusing namespace std;\n\ntypedef struct node{\n    int data;\n    struct node *next;\n}lnode,*linklist; \n\nint initlist(linklist &amp;L)\n{\n    L=(lnode *)malloc(sizeof(lnode));\n    if(L == NULL)\n    {\n        return 0;\n    }\n    L-&gt;next = NULL;\n    return 1;\n}\n\nint getlength(linklist L)\n{\n    int length = 0;\n    lnode *p = L-&gt;next;\n    while( p )\n    {\n        length ++ ;\n        p = p-&gt;next;\n    }\n    return length;\n}\n\nvoid tailinsert(linklist &amp;L,int n)\n{\n    int d;\n    lnode *end;\n    end = L;\n    while(n--)\n    {\n        cin &gt;&gt; d;\n        lnode *p = (linklist)malloc( sizeof(lnode) );\n        p-&gt;data = d;\n        end-&gt;next = p;\n        end = p;\n    }\n    end-&gt;next = NULL;\n}\n\nvoid headinsert(linklist &amp;L,int n)\n{\n    int d;\n    while(n--)\n    {\n        cin &gt;&gt; d;\n        lnode *p = (linklist)malloc( sizeof(lnode) );\n        p-&gt;data = d;\n        p-&gt;next = L-&gt;next;\n        L-&gt;next = p;\n    }\n}\nvoid print(linklist &amp;L)\n{\n    lnode *p;\n    p = L;\n    p=p-&gt;next;\n    while(p-&gt;next!=NULL)\n    {\n        cout&lt;&lt; p-&gt;data &lt;&lt; &quot; &quot;;\n        p=p-&gt;next;\n    }\n    cout&lt;&lt;p-&gt;data&lt;&lt;endl;\n}\nvoid listinsert(linklist L,int n , int e)\n{\n    lnode *pre;\n    pre=L;\n    int count = 0;\n    if(n&lt;=0)\n    {\n        printf(&quot;\u63d2\u5165\u4f4d\u7f6e\u5c0f\u4e8e0\\n&quot;);\n        return ;\n    }\n    while(pre!=NULL &amp;&amp; count &lt; n -1 )\n    {\n        pre = pre-&gt;next;\n        count ++ ;\n    }\n    if(pre == NULL )\n    {\n        printf(&quot;\u63d2\u5165\u4f4d\u7f6e\u8fc7\u5927\\n&quot;);\n        return ;\n    }\n    lnode *s = (linklist)malloc( sizeof(lnode) );\n    s-&gt;data = e;\n    s-&gt;next = pre-&gt;next;\n    pre-&gt;next = s;\n}\n\nvoid listdel(linklist &amp;L,int n)\n{\n    lnode *pre,*s;\n    pre=L;\n    int count = 0;\n    if(n&lt;=0)\n    {\n        printf(&quot;\u5220\u9664\u4f4d\u7f6e\u5c0f\u4e8e0\\n&quot;);\n        return ;\n    }\n    while(pre!=NULL &amp;&amp; count &lt; n - 1)\n    {\n        pre = pre-&gt;next;\n        count ++ ;\n    }\n    if(pre == NULL )\n    {\n        printf(&quot;\u5220\u9664\u4f4d\u7f6e\u8fc7\u5927\\n&quot;);\n        return ;\n    }\n    s=pre-&gt;next;\n    pre-&gt;next = s-&gt;next;\n    free(s);\n}\nvoid getelem(linklist &amp;L , int n)\n{\n    node *pre ;\n    pre = L;\n    int count;\n    while(pre!=NULL &amp;&amp; count &lt; n )\n    {\n        pre=pre-&gt;next;\n        count ++;\n    }\n    printf(&quot;%d.\u4f4d\u7f6e\u7684\u503c\u4e3a:&quot;,n);\n    cout&lt;&lt;pre-&gt;data&lt;&lt;endl;\n}\nint main ()\n{\n\n    linklist L;\n    initlist(L);\n    printf(&quot;\u8f93\u5165\u94fe\u8868L\u8282\u70b9\u6570:&quot;);\n    int n;\n    cin &gt;&gt; n ;\n    cout&lt;&lt;&quot;\u63d2\u5165\u65b9\u5f0f\u9009\u62e9\uff1a&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;1.\u5934\u63d2\u6cd5 2.\u5c3e\u63d2\u6cd5&quot;&lt;&lt;endl;\n    int ok = 0;\n    cin &gt;&gt; ok;\n    while(ok != 1&amp;&amp;ok != 2)\n    {\n        cout&lt;&lt;&quot;\u91cd\u65b0\u8f93\u5165&quot;&lt;&lt;endl;\n        cin &gt;&gt; ok;\n    }\n    cout&lt;&lt;&quot;\u8f93\u5165\u94fe\u8868\u5185\u5143\u7d20&quot;&lt;&lt;endl;\n    if(ok==1)\n    {\n        headinsert(L,n);\n    }\n    else\n    {\n        tailinsert(L,n);\n    }\n    cout&lt;&lt;&quot;\u94fe\u8868\u5185\u5143\u7d20:&quot;&lt;&lt;endl;\n    print(L);\n    cout&lt;&lt;&quot;\u8f93\u5165\u63d2\u5165\u5143\u7d20\u4f4d\u7f6e&quot;&lt;&lt;endl;\n    int m;\n    cin &gt;&gt; m ;\n    int data;\n    cout&lt;&lt;&quot;\u8f93\u5165\u5143\u7d20\u7684\u503c&quot;&lt;&lt;endl;\n    cin &gt;&gt; data;\n    listinsert(L,m,data);\n    cout&lt;&lt;&quot;\u94fe\u8868\u5185\u5143\u7d20:&quot;&lt;&lt;endl;\n    print(L);\n    cout&lt;&lt;&quot;\u8f93\u5165\u5220\u9664\u5143\u7d20\u4f4d\u7f6e:&quot;&lt;&lt;endl;\n    cin &gt;&gt; m;\n    listdel(L,m);\n    cout&lt;&lt;&quot;\u94fe\u8868\u5185\u5143\u7d20:&quot;&lt;&lt;endl;\n    print(L);\n    cout&lt;&lt;&quot;\u8f93\u5165\u9700\u8981\u67e5\u8be2\u7684\u5143\u7d20\u4f4d\u7f6e&quot;&lt;&lt;endl; \n    cin &gt;&gt; m;\n    getelem(L,m);\n}\n<\/code><\/pre>\n<hr \/>\n<h2>5.\u94fe\u8868\u7684\u6392\u5e8f\u4e0e\u5408\u5e76<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\nusing namespace std;\n\ntypedef struct node{\n    int data;\n    struct node *next;\n}lnode,*linklist; \n\nint initlist(linklist &amp;L)\n{\n    L=(lnode *)malloc(sizeof(lnode));\n    if(L == NULL)\n    {\n        return 0;\n    }\n    L-&gt;next = NULL;\n    return 1;\n}\n\nint getlength(linklist L)\n{\n    int length = 0;\n    lnode *p = L-&gt;next;\n    while( p )\n    {\n        length ++ ;\n        p = p-&gt;next;\n    }\n    return length;\n}\n\nvoid tailinsert(linklist &amp;L,int n)\n{\n    int d;\n    lnode *end;\n    end = L;\n    while(n--)\n    {\n        cin &gt;&gt; d;\n        lnode *p = (linklist)malloc( sizeof(lnode) );\n        p-&gt;data = d;\n        end-&gt;next = p;\n        end = p;\n    }\n    end-&gt;next = NULL;\n}\n\nvoid headinsert(linklist &amp;L,int n)\n{\n    int d;\n    while(n--)\n    {\n        cin &gt;&gt; d;\n        lnode *p = (linklist)malloc( sizeof(lnode) );\n        p-&gt;data = d;\n        p-&gt;next = L-&gt;next;\n        L-&gt;next = p;\n    }\n}\nvoid print(linklist &amp;L)\n{\n    lnode *p;\n    p = L;\n    p=p-&gt;next;\n    while(p!=NULL)\n    {\n        cout&lt;&lt; p-&gt;data &lt;&lt; &quot; &quot;;\n        p=p-&gt;next;\n    }\n \/\/   cout&lt;&lt;p-&gt;data&lt;&lt;endl;\n}\nvoid listinsert(linklist L,int n , int e)\n{\n    lnode *pre;\n    pre=L;\n    int count = 0;\n    if(n&lt;=0)\n    {\n        printf(&quot;\u63d2\u5165\u4f4d\u7f6e\u5c0f\u4e8e0\\n&quot;);\n        return ;\n    }\n    while(pre!=NULL &amp;&amp; count &lt; n -1 )\n    {\n        pre = pre-&gt;next;\n        count ++ ;\n    }\n    if(pre == NULL )\n    {\n        printf(&quot;\u63d2\u5165\u4f4d\u7f6e\u8fc7\u5927\\n&quot;);\n        return ;\n    }\n    lnode *s = (linklist)malloc( sizeof(lnode) );\n    s-&gt;data = e;\n    s-&gt;next = pre-&gt;next;\n    pre-&gt;next = s;\n}\n\nvoid listdel(linklist &amp;L,int n)\n{\n    lnode *pre,*s;\n    pre=L;\n    int count = 0;\n    if(n&lt;=0)\n    {\n        printf(&quot;\u5220\u9664\u4f4d\u7f6e\u5c0f\u4e8e0\\n&quot;);\n        return ;\n    }\n    while(pre!=NULL &amp;&amp; count &lt; n - 1)\n    {\n        pre = pre-&gt;next;\n        count ++ ;\n    }\n    if(pre == NULL )\n    {\n        printf(&quot;\u5220\u9664\u4f4d\u7f6e\u8fc7\u5927\\n&quot;);\n        return ;\n    }\n    s=pre-&gt;next;\n    pre-&gt;next = s-&gt;next;\n    free(s);\n}\nvoid getelem(linklist &amp;L , int n)\n{\n    node *pre ;\n    pre = L;\n    int count;\n    while(pre!=NULL &amp;&amp; count &lt; n )\n    {\n        pre=pre-&gt;next;\n        count ++;\n    }\n    printf(&quot;%d.\u4f4d\u7f6e\u7684\u503c\u4e3a:&quot;,n);\n    cout&lt;&lt;pre-&gt;data&lt;&lt;endl;\n}\nvoid greatersort(linklist &amp;L , int count )\n{\n    int i , tmp = 0 ;\n    lnode *pre;\n    for(int i = 0 ; i &lt; count ; i++ )\n    {\n        for(pre = L-&gt;next ; pre-&gt;next != NULL ; pre=pre-&gt;next)\n        {\n            if(pre-&gt;data &lt; pre-&gt;next-&gt;data)\n            {\n                tmp = pre-&gt;data;\n                pre-&gt;data = pre-&gt;next-&gt;data;\n                pre-&gt;next-&gt;data=tmp;\n            }\n        }\n    }\n}\nvoid lesssort(linklist &amp;L , int count )\n{\n    int i , tmp = 0 ;\n    lnode *pre;\n    for(int i = 0 ; i &lt; count ; i++ )\n    {\n        for(pre = L-&gt;next ; pre-&gt;next != NULL ; pre=pre-&gt;next)\n        {\n            if(pre-&gt;data &gt; pre-&gt;next-&gt;data)\n            {\n                tmp = pre-&gt;data;\n                pre-&gt;data = pre-&gt;next-&gt;data;\n                pre-&gt;next-&gt;data=tmp;\n            }\n        }\n    }\n}\nvoid listmix(linklist &amp;L,linklist &amp;L2,linklist &amp;ptr)\n{\n    ptr = L;\n    linklist tmp = ptr;\n    while(tmp-&gt;next != NULL)\n    {\n        tmp = tmp-&gt;next; \n    }\n    tmp-&gt;next = L2-&gt;next;\n}\nint main ()\n{\n    linklist L,L2,L3;\n    int n;\n    initlist(L);\n    initlist(L2);\n    initlist(L3);\n    cout&lt;&lt;&quot;\u8f93\u5165\u94fe\u8868L\u7684\u5143\u7d20\u4e2a\u6570:&quot;;\n    cin &gt;&gt; n ;\n    cout&lt;&lt;&quot;\u8f93\u5165\u94fe\u8868L\u7684\u5143\u7d20&quot;&lt;&lt;endl;\n    tailinsert(L,n);\n    cout&lt;&lt;&quot;\u8f93\u5165\u94fe\u8868L2\u7684\u5143\u7d20\u4e2a\u6570:&quot;;\n    cin &gt;&gt; n;\n    cout&lt;&lt;&quot;\u8f93\u5165\u94fe\u8868L2\u7684\u5143\u7d20&quot;&lt;&lt;endl;\n    tailinsert(L2,n);\n    cout&lt;&lt;&quot;\u6392\u5e8fL:&quot;&lt;&lt;endl;\n    while(1)\n    {\n        cout&lt;&lt;&quot;\u8f93\u51651\u964d\u5e8f\u6392\u5e8f:&quot;&lt;&lt;endl;\n        cout&lt;&lt;&quot;\u8f93\u51652\u5347\u5e8f\u6392\u5e8f:&quot;&lt;&lt;endl;\n        int k;\n        cin &gt;&gt; k;\n        if(k == 1)\n        {\n            greatersort(L,getlength(L));\n            break;\n        }\n        else if (k == 2)\n        {\n            lesssort(L,getlength(L));\n            break;\n        }\n    }\n    cout&lt;&lt;&quot;\u6392\u5e8fL2:&quot;&lt;&lt;endl;\n    while(1)\n    {\n        cout&lt;&lt;&quot;\u8f93\u51651\u964d\u5e8f\u6392\u5e8f:&quot;&lt;&lt;endl;\n        cout&lt;&lt;&quot;\u8f93\u51652\u5347\u5e8f\u6392\u5e8f:&quot;&lt;&lt;endl;\n        int k;\n        cin &gt;&gt; k;\n        if(k == 1)\n        {\n            greatersort(L2,getlength(L2));\n            break;\n        }\n        else if (k == 2)\n        {\n            lesssort(L2,getlength(L2));\n            break;\n        }\n    }\n    cout&lt;&lt;&quot;L\u5185\u5143\u7d20:&quot;;\n    print(L);\n    cout&lt;&lt;endl;\n    cout&lt;&lt;&quot;L2\u5185\u5143\u7d20&quot;; \n    print(L2);\n    cout&lt;&lt;endl;\n    listmix(L,L2,L3);\n    cout&lt;&lt;&quot;\u6392\u5e8f\u5408\u5e76\u540e\u7684L1,L2:&quot;&lt;&lt;endl;\n    while(1)\n    {\n        cout&lt;&lt;&quot;\u8f93\u51651\u964d\u5e8f\u6392\u5e8f:&quot;&lt;&lt;endl;\n        cout&lt;&lt;&quot;\u8f93\u51652\u5347\u5e8f\u6392\u5e8f:&quot;&lt;&lt;endl;\n        int k;\n        cin &gt;&gt; k;\n        if(k == 1)\n        {\n            greatersort(L3,getlength(L3));\n            break;\n        }\n        else if (k == 2)\n        {\n            lesssort(L3,getlength(L3));\n            break;\n        }\n    }\n    cout&lt;&lt;&quot;\u5408\u5e76\u540e\u7684L1,L2\u5185\u5143\u7d20:&quot;&lt;&lt;endl;\n    print(L3);\n\n}\n<\/code><\/pre>\n<hr \/>\n<h2>6.\u6808(\u6570\u636e\u8f6c\u5316)<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\nusing namespace std;\n#define STACK_INIT_SIZE 100\n#define STACKINCREMENT 10\ntypedef int status;\ntypedef int selemtype;\n\ntypedef struct\n{\n    selemtype *base;\n    selemtype *top;\n    int stacksize ;\n}sqstack;\n\nstatus initstack(sqstack &amp;S)\n{\n    S.base = (selemtype *)malloc(STACK_INIT_SIZE*sizeof(selemtype));\n    if(!S.base)\n    {\n        cout&lt;&lt;&quot;\u521d\u59cb\u5316\u5931\u8d25&quot;;\n        exit(0);\n    }\n    S.top = S.base;\n    S.stacksize = STACK_INIT_SIZE;\n    return 1;\n\n}\nstatus push(sqstack &amp;S , selemtype e)\n{\n    if(S.top-S.base&gt;= S.stacksize)\n    {\n        selemtype *newbase=(selemtype *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(selemtype));\n        if(!newbase)\n        {\n            cout&lt;&lt;&quot;\u5185\u5b58\u4e0d\u8db3\u6808\u7a7a\u95f4\u589e\u52a0\u5931\u8d25&quot;&lt;&lt;endl;\n            return 0;\n        }\n        S.base = newbase;\n        S.top=S.base + S.stacksize;\n        S.stacksize+= STACK_INIT_SIZE;\n    }\n    *(S.top++) = e;\n    return 1;\n}\nstatus pop(sqstack &amp;S, selemtype &amp;e)\n{\n    if(S.top==S.base)\n    {\n        cout&lt;&lt;&quot;\u6808\u5df2\u7a7a&quot;&lt;&lt;endl;\n        return 0;\n    }\n    e =*(--S.top);\n    return 1;\n}\nstatus showstack(sqstack S)\n{\n    while(S.base != S.top )\n    {\n        cout&lt;&lt;*(--S.top)&lt;&lt;&quot; &quot;;\n    }\n    cout &lt;&lt;endl;\n    return 1;\n}\nstatus emptystack(sqstack &amp;S)\n{\n    if(S.top != S.base)\n    {\n        return 0;\n    }\n    else    return 1;\n}\nstatus stacklength(sqstack &amp;S)\n{\n    return (S.top - S.base);\n}\nstatus clearstack (sqstack &amp;S)\n{\n    S.top = S.base;\n    return 1;\n}\nstatus DestroyStack(sqstack &amp;S)\n{\n    free(S.base);\n    S.base=S.top=NULL;\n    S.stacksize=0;\n    return 1;\n}\nstatus TopStack(sqstack &amp;S,int &amp;e)\n{\n    if(S.top==S.base)\n        return 0;\n    e=*(S.top-1);\n    return 1;\n}\nstatus JinZhi(sqstack &amp;S,int e, int jinzhi)\n{\n    while(e)\n    {\n\n        push(S,e%jinzhi);\n        e\/=jinzhi;\n    }\n    return 1;\n}\nstatus ShowjzStack(sqstack &amp;S)\n{\n    while(!emptystack(S))\n    {\n        int ans = 0;\n        pop(S,ans);\n        if(ans &lt; 10)\n        {\n            cout&lt;&lt;ans;\n        }\n        else\n        {\n            char c = ans - 10 + &#039;A&#039;;\n            cout&lt;&lt;c;\n        }\n    }\n\n    return 1;\n}\nint main()\n{\n    sqstack S;\n    initstack(S);\n    int order = 0 ,init = 0,des = 0 ,len = 0,e =  0;\n    cout&lt;&lt;&quot;*----------------\u6808--------------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------1.\u521d\u59cb\u5316\u6808-------------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------2.\u9500\u6bc1\u6808---------------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------3.\u6e05\u7a7a\u6808---------------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------4.\u6808\u5224\u7a7a---------------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------5.\u6c42\u6808\u957f\u5ea6-------------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------6.\u83b7\u53d6\u6808\u9876\u5143\u7d20---------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------7.\u63d2\u5165\u4e00\u4e2a\u5143\u7d20---------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------8.\u5220\u9664\u4e00\u4e2a\u5143\u7d20---------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------9.\u8f93\u51fa\u6240\u6709\u5143\u7d20---------*&quot;&lt;&lt;endl;\n    cout&lt;&lt;&quot;*---------10.\u8fdb\u5236\u8f6c\u6362------------*&quot;&lt;&lt;endl;\n    do{\n        cout&lt;&lt;&quot;\u8bf7\u8f93\u5165\u6307\u4ee4&quot;&lt;&lt;endl;\n        cin &gt;&gt; order;\n        if(order &lt;= 0 || order &gt; 10 )\n        {\n            cout&lt;&lt;&quot;error&quot;&lt;&lt;endl;\n        }\n        else if(!init &amp;&amp; order&gt;1 &amp;&amp; order!=10)\n                cout&lt;&lt;&quot;\u8bf7\u5148\u521d\u59cb\u5316\u6808&quot;&lt;&lt;endl;\n        else if(des &amp;&amp; order&gt;1 &amp;&amp; order!=10)\n                cout&lt;&lt;&quot;\u6808\u5df2\u9500\u6bc1\uff0c\u8bf7\u5148\u521d\u59cb\u5316&quot;&lt;&lt;endl;\n        else\n        {\n            switch (order) {\n                case 1:\n                    initstack(S);\n                    init=1;\n                    des = 0;\n                    cout&lt;&lt;&quot;\u6808\u521d\u59cb\u5316\u5df2\u5b8c\u6210&quot;&lt;&lt;endl;\n                    break;\n                case 2:\n                    DestroyStack(S);\n                    cout&lt;&lt;&quot;\u6210\u529f\u9500\u6bc1\u6808&quot;&lt;&lt;endl;\n                    des =  1;\n                    break;\n                case 3:\n                    clearstack(S);\n                    cout&lt;&lt;&quot;\u6808\u5df2\u6e05\u7a7a&quot;&lt;&lt;endl;\n                    break;\n                case 4:\n                    if(!emptystack(S))\n                        cout&lt;&lt;&quot;\u6808\u975e\u7a7a&quot;&lt;&lt;endl;\n                    else\n                        cout&lt;&lt;&quot;\u6808\u4e3a\u7a7a&quot;&lt;&lt;endl;\n                    break;\n                case 5:\n                    len = stacklength(S);\n                    cout&lt;&lt;&quot;\u6808\u957f\u5ea6\u4e3a\uff1a&quot;&lt;&lt;len&lt;&lt;endl;\n                    break;\n                case 6: \n                    if(TopStack(S,e))\n                        cout&lt;&lt;&quot;\u6808\u9876\u5143\u7d20\u4e3a\uff1a&quot;&lt;&lt;e&lt;&lt;endl; \n                    else\n                        cout&lt;&lt;&quot;\u7a7a\u6808\uff0c\u65e0\u6808\u9876\u5143\u7d20&quot;&lt;&lt;endl; \n                    break;\n                case 7:\n                    cout&lt;&lt;&quot;\u8bf7\u8f93\u5165\u63d2\u5165\u5143\u7d20\uff1a&quot;;\n                    cin&gt;&gt;e;\n                    push(S,e);\n                    cout&lt;&lt;&quot;\u5165\u6808\u6210\u529f&quot;&lt;&lt;endl;\n                    break;\n                case 8:\n                    if(pop(S,e))\n                        cout&lt;&lt;&quot;\u6808\u9876\u5143\u7d20&quot;&lt;&lt;e&lt;&lt;&quot;\u51fa\u6808\u6210\u529f&quot;&lt;&lt;endl;\n                    else\n                        cout&lt;&lt;&quot;\u6808\u4e3a\u7a7a&quot;&lt;&lt;endl;\n                    break;\n                case 9:\n                    cout&lt;&lt;&quot;\u6808\u4e3a\uff1a&quot;&lt;&lt;endl;\n                    showstack(S);\n                    break;\n                case 10:\n                    cout&lt;&lt;&quot;\u8f93\u5165\u4e00\u4e2a\u5341\u8fdb\u5236\u6570&quot;&lt;&lt;endl;\n                    cin&gt;&gt;e;\n                    cout&lt;&lt;&quot;\u8f93\u5165\u8981\u8f6c\u6362\u7684\u8fdb\u5236&quot;&lt;&lt;endl;\n                    int jinzhi;\n                    cin&gt;&gt;jinzhi;\n                    sqstack J;\n                    initstack(J);\n                    cout&lt;&lt;&quot;10\u8fdb\u5236\u6570&quot;&lt;&lt;e&lt;&lt;&quot;\u8f6c\u6362\u4e3a&quot;&lt;&lt;jinzhi&lt;&lt;&quot;\u8fdb\u5236\u6570\u540e\u4e3a\uff1a&quot;;\n                    if(e&lt;0)\n                    {\n                        cout&lt;&lt;&#039;-&#039;;\n                        e=-e;\n                    }\n                    if(!e)\n                        cout&lt;&lt;0;\n                    JinZhi(J,e,jinzhi);\n                    ShowjzStack(J);\n                    cout&lt;&lt;endl;\n                    break;\n                default:\n                    cout&lt;&lt;&quot;\u7a0b\u5e8f\u5df2\u9000\u51fa&quot;&lt;&lt;endl;\n                    break;\n            }\n        }\n    }while(order &gt; 0 );\n\n}<\/code><\/pre>\n<hr \/>\n<h2>7.\u5faa\u73af\u961f\u5217<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\n#define MAXSIZE 11\nusing namespace std;\ntypedef int status;\ntypedef int elemtype;\n\ntypedef struct {\n    elemtype *base;\n    int front;\n    int rear;\n}sqQuene;\n\nstatus initqueue(sqQuene &amp;Q)\n{\n    Q.base = (elemtype *)malloc(MAXSIZE*sizeof(sqQuene));\n    if(!Q.base)\n    {\n        cout&lt;&lt;&quot;memory error!&quot;&lt;&lt;endl;\n        return 0;\n    }\n    Q.front = Q.rear = 0;\n    return 1;\n}\n\nstatus enqueue(sqQuene &amp;Q , elemtype e)\n{\n    if( (Q.rear + 1)%MAXSIZE == Q.front )\n    {\n        cout&lt;&lt;&quot;queue is full !&quot;&lt;&lt;endl;\n        return 0;\n    }\n    Q.base[Q.rear] = e;\n    Q.rear = (Q.rear+1)%MAXSIZE; \n    return 1;\n\n}\nstatus dequeue(sqQuene &amp;Q , elemtype &amp;e)\n{\n    if(Q.front == Q.rear)\n    {\n        cout&lt;&lt;&quot;There is no any elem!&quot;&lt;&lt;endl;\n        return 0;\n    }\n    e = Q.base[Q.front];\n    Q.front = (Q.front + 1)%MAXSIZE;\n    return 1;\n}\nstatus qulength(sqQuene Q)\n{\n    return (Q.rear - Q.front + MAXSIZE)%MAXSIZE;\n}\n\nint main ()\n{\n    elemtype e;\n    sqQuene Q;\n    initqueue(Q);\n    cout&lt;&lt;&quot;\u5f00\u59cb\u5165\u961f\u603b\u517110\u4e2a\u5143\u7d20&quot;&lt;&lt;endl;\n    for(int i = 0 ; i &lt; MAXSIZE-1 ; i ++ )\n    {\n        cin &gt;&gt; e;\n        enqueue(Q,e);\n    }\n    cout&lt;&lt;&quot;\u51fa\u961f\u4e00\u4e2a\u5143\u7d20&quot;&lt;&lt;endl;\n    dequeue(Q,e);\n    cout&lt;&lt;&quot;\u51fa\u961f\u5143\u7d20\u4e3a:&quot;&lt;&lt;e&lt;&lt;endl;\n    cout&lt;&lt;&quot;\u518d\u5165\u961f\u4e00\u4e2a\u5143\u7d20&quot;&lt;&lt;endl;\n    cin &gt;&gt; e;\n    enqueue(Q,e);\n    cout&lt;&lt;&quot;\u961f\u5217\u957f\u5ea6:&quot;&lt;&lt;qulength(Q)&lt;&lt;endl;\n    cout&lt;&lt;&quot;\u6240\u6709\u5143\u7d20\u51fa\u961f&quot;&lt;&lt;endl;\n    for(int i = 0 ; i &lt; MAXSIZE-1 ; i ++ )\n    {\n        dequeue(Q,e);\n        cout&lt;&lt;e&lt;&lt;&quot; &quot;;\n    }\n    cout&lt;&lt;endl;\n\n    return 0;\n}\n<\/code><\/pre>\n<hr \/>\n<h2>8.\u5b9a\u957f\u987a\u5e8f\u4e32\u7684\u6c42\u5b50\u4e32\u3001\u4e32\u7684\u5408\u5e76\u7b49<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\n#define MAXSIZE 11\nusing namespace std;\ntypedef int status;\ntypedef int elemtype;\n\ntypedef struct {\n    elemtype *base;\n    int front;\n    int rear;\n}sqQuene;\n\nstatus initqueue(sqQuene &amp;Q)\n{\n    Q.base = (elemtype *)malloc(MAXSIZE*sizeof(sqQuene));\n    if(!Q.base)\n    {\n        cout&lt;&lt;&quot;memory error!&quot;&lt;&lt;endl;\n        return 0;\n    }\n    Q.front = Q.rear = 0;\n    return 1;\n}\n\nstatus enqueue(sqQuene &amp;Q , elemtype e)\n{\n    if( (Q.rear + 1)%MAXSIZE == Q.front )\n    {\n        cout&lt;&lt;&quot;queue is full !&quot;&lt;&lt;endl;\n        return 0;\n    }\n    Q.base[Q.rear] = e;\n    Q.rear = (Q.rear+1)%MAXSIZE; \n    return 1;\n\n}\nstatus dequeue(sqQuene &amp;Q , elemtype &amp;e)\n{\n    if(Q.front == Q.rear)\n    {\n        cout&lt;&lt;&quot;There is no any elem!&quot;&lt;&lt;endl;\n        return 0;\n    }\n    e = Q.base[Q.front];\n    Q.front = (Q.front + 1)%MAXSIZE;\n    return 1;\n}\nstatus qulength(sqQuene Q)\n{\n    return (Q.rear - Q.front + MAXSIZE)%MAXSIZE;\n}\n\nint main ()\n{\n    elemtype e;\n    sqQuene Q;\n    initqueue(Q);\n    cout&lt;&lt;&quot;\u5f00\u59cb\u5165\u961f\u603b\u517110\u4e2a\u5143\u7d20&quot;&lt;&lt;endl;\n    for(int i = 0 ; i &lt; MAXSIZE-1 ; i ++ )\n    {\n        cin &gt;&gt; e;\n        enqueue(Q,e);\n    }\n    cout&lt;&lt;&quot;\u51fa\u961f\u4e00\u4e2a\u5143\u7d20&quot;&lt;&lt;endl;\n    dequeue(Q,e);\n    cout&lt;&lt;&quot;\u51fa\u961f\u5143\u7d20\u4e3a:&quot;&lt;&lt;e&lt;&lt;endl;\n    cout&lt;&lt;&quot;\u518d\u5165\u961f\u4e00\u4e2a\u5143\u7d20&quot;&lt;&lt;endl;\n    cin &gt;&gt; e;\n    enqueue(Q,e);\n    cout&lt;&lt;&quot;\u961f\u5217\u957f\u5ea6:&quot;&lt;&lt;qulength(Q)&lt;&lt;endl;\n    cout&lt;&lt;&quot;\u6240\u6709\u5143\u7d20\u51fa\u961f&quot;&lt;&lt;endl;\n    for(int i = 0 ; i &lt; MAXSIZE-1 ; i ++ )\n    {\n        dequeue(Q,e);\n        cout&lt;&lt;e&lt;&lt;&quot; &quot;;\n    }\n    cout&lt;&lt;endl;\n\n    return 0;\n}\n<\/code><\/pre>\n<hr \/>\n<h2>9.\u4e32\u7684\u6a21\u5f0f\u5339\u914d<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\nusing namespace std;\ntypedef int status;\ntypedef int selemtype;\n#define TURE 1\n#define FALSE 0\n#define OK 1\n#define ERROR 0\n#define MAXLEN 255\ntypedef int status;\ntypedef char sstring[MAXLEN+1];\n\nvoid stringassign(sstring &amp;t, char s[])\n{\n\n    t[0] = strlen(s);\n    if(strlen(s) &gt; MAXLEN)\n    {\n        cout&lt;&lt;&quot;the string overflow!!!&quot;&lt;&lt;endl;\n        return ;\n    }\n    for(int i = 0 ; i &lt; t[0] ; i ++)\n    {\n        t[i+1]=s[i];    \n    }\n\n}\nvoid output(sstring s)\n{\n    for(int i = 1 ; i &lt;= s[0] ; i ++ )\n    {\n        printf(&quot;%c&quot;,s[i]);\n    }\n}\n\nvoid concat(sstring &amp;T, sstring s1, sstring s2) \n{\n    int i, j, uncut;\n    if (s1[0] + s2[0] &lt;= MAXLEN)\n    {\n        for (i = 1; i&lt;= s1[0]; i++)\n            T[i] = s1[i];\n        for (j = 0; j&lt; s2[0]; j++)\n            T[i + j] = s2[j+1];\n        T[0] = s1[0] + s2[0];\n    }\n    else if (s1[0]&lt; MAXLEN)\n    {\n        for (i = 1; i&lt;s1[0]; i++)\n            T[i] = s1[i];\n        for (j = 1; j&lt; MAXLEN - s1[0]; j++)\n            T[i + j] = s2[j];\n        T[0] = s1[0] + j;\n    }\n    else if (s1[0] ==  MAXLEN)\n    {\n        for (i = 1; i&lt;s1[0]; i++)\n            T[i] = s1[i];\n        T[0] = s1[0];\n        uncut = FALSE;\n    }\n}\nint substring(sstring &amp;sub, sstring s, int pos, int len)\n{\n    if (pos&lt;1 || pos&gt;s[0] || len&lt;0 || len&gt;s[0] - pos + 1)\n    {\n        cout&lt;&lt;&quot;\u8be5\u5b50\u4e32\u4e0d\u5b58\u5728&quot;&lt;&lt;endl;\n        return 0;\n    }\n    for (int i = 1; i &lt;= len; i++)\n        sub[i] = s[pos - 1 + i];\n    sub[0] = len;\n    return OK;\n}\nint stringcmp(sstring T,sstring T2)\n{\n    int i = 1;\n    int t = 0;\n    while( i&lt;=T[0]&amp;&amp;i&lt;=T2[0] )\n    {\n        if(T[i] == T2[i])\n            i++;\n        else\n        {\n            t = T[i] - T2[i];\n            if ( t &lt; 0 )\n            {\n                return -1;\n            }\n            else\n            {\n                return 1;\n            }\n        }\n    }\n    if( i &gt; T[0]&amp;&amp;i&gt;T2[0])\n        return 0;\n    else\n    {\n        if(i&gt;T[0])\n        {\n            return -1;\n        }\n        else{\n            return 1;\n        }\n    }\n}\n\nint index(sstring S,sstring T,int pos)\n{\n    if(pos&lt;1)\n    {\n        return 0;\n    }\n    int n = S[0],m=T[0];\n    int i = pos;\n    while(i &lt;= n - m + 1)\n    {\n        sstring  sub;\n        substring(sub,S,i,m);\n        if(stringcmp(sub,T)!=0)\n        {\n            i++;\n        }\n        else return i;\n    }\n    return 0;\n\n}\nint index2(sstring S, sstring T,int pos)\n{\n    for(int i = 1 ; i&lt;=S[0]-T[0]+1 ; i ++  )\n    {\n        int j = 1;\n        while(j&lt;=T[0])\n        {\n            if(S[i]==T[i])\n            {\n                j++;\n            }\n            else{\n                break;\n            }\n        }\n        if(j&gt;=T[0])\n        {\n            return i;\n        }\n    }\n    return 0;\n}\n\nint main ()\n{\n    char s1[255555],s2[255];\n    sstring t1,t2,t;\n    cout&lt;&lt;&quot;\u8bf7\u8f93\u5165\u5b57\u7b26\u4e32s1&quot;&lt;&lt;endl;\n    gets(s1);\n    cout&lt;&lt;&quot;\u8bf7\u8f93\u5165\u5b57\u7b26\u4e32s2&quot;&lt;&lt;endl;\n    gets(s2);\n    stringassign(t1,s1);\n    stringassign(t2,s2);\n    if(!stringcmp(t1,t2))\n    {\n        cout&lt;&lt;&quot;s1\u7b49\u4e8es2&quot;&lt;&lt;endl;\n    }\n    else if (stringcmp(t1,t2)==1)\n    {\n        cout&lt;&lt;&quot;s1\u5927\u4e8es2&quot;&lt;&lt;endl;\n    }\n    else\n    {\n        cout&lt;&lt;&quot;s1\u5c0f\u4e8es2&quot;&lt;&lt;endl;\n    }\n    cout&lt;&lt;&quot;\u8f93\u5165\u4e3b\u4e32:&quot;&lt;&lt;endl;\n    char s3[25555],s4[2555];\n    gets(s3);\n    sstring t3,t4;\n    stringassign(t3,s3);\n    cout&lt;&lt;&quot;\u8f93\u5165\u6a21\u5f0f\u4e32:&quot;&lt;&lt;endl;\n    gets(s4);\n    stringassign(t4,s4);\n    int pos= 0;\n    cout&lt;&lt;&quot;\u8f93\u5165\u5728\u591a\u5c11\u4f4d\u540e\u67e5\u627e\u6a21\u5f0f\u4e32:&quot;&lt;&lt;endl;\n    cin &gt;&gt; pos;\n    cout&lt;&lt;&quot;\u6a21\u5f0f1:&quot;&lt;&lt;endl;\n    if(index(t3,t4,pos))\n    {\n        cout&lt;&lt;&quot;\u6a21\u5f0f\u4e32\u4f4d\u7f6e\u4e3a: &quot;&lt;&lt;index(t3,t4,pos)&lt;&lt;endl;\n    }\n    else{\n        cout&lt;&lt;&quot;\u67e5\u8be2\u5931\u8d25&quot;&lt;&lt;endl;   \n    }\n    cout&lt;&lt;&quot;\u6a21\u5f0f2:&quot;&lt;&lt;endl;\n    if(index2(t3,t4,pos))\n    {\n    cout&lt;&lt;&quot;\u6a21\u5f0f\u4e32\u4f4d\u7f6e\u4e3a: &quot;&lt;&lt;index(t3,t4,pos)&lt;&lt;endl;\n    }\n    else{\n        cout&lt;&lt;&quot;\u67e5\u8be2\u5931\u8d25&quot;&lt;&lt;endl;   \n    }\n    return 0;\n}<\/code><\/pre>\n<hr \/>\n<h2>10.\u7a00\u758f\u77e9\u9635\u7684\u4e24\u79cd\u8f6c\u7f6e\u8fd0\u7b97<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\n\n#define ok 1\n#define MAX 12500\n\nusing namespace std;\ntypedef int status;\ntypedef int elemtype;\nint num[MAX];\nint cpot[MAX];\ntypedef struct \n{\n    int i , j ;\n    elemtype e;\n}triple;\ntypedef struct\n{\n    triple data[MAX];\n    int mu,nu,tu;\n}TM;\n\nvoid Create(TM &amp;M)\n{\n    printf(&quot;\u8bf7\u8f93\u5165\u603b\u884c\uff0c\u603b\u5217\uff0c\u975e\u96f6\u5143\u7d20\u7684\u4e2a\u6570\\n&quot;);\n    cin &gt;&gt; M.mu&gt;&gt;M.nu&gt;&gt;M.tu;\n    cout&lt;&lt;&quot;\u884c\u53f7\uff0c\u5217\u53f7\uff0c\u503c&quot;&lt;&lt;endl;\n    for(int t = 1 ; t &lt;= M.tu ; t ++ )\n    {\n        cin &gt;&gt; M.data[t].i&gt;&gt;M.data[t].j&gt;&gt;M.data[t].e;\n    }\n}\nstatus Print(TM G)      \/\/\u6253\u5370\u7a00\u758f\u77e9\u9635 \n{\n    int k=1;\n    for(int i=1;i&lt;=G.mu;i++)\n    {\n        for(int j=1;j&lt;=G.nu;j++)\n        {\n            if(G.data[k].i == i &amp;&amp; G.data[k].j == j)\n            {\n                printf(&quot;%4d&quot;,G.data[k].e);\n                k++;\n            }   \n            else\n                printf(&quot;   0&quot;);\n        }\n        cout&lt;&lt;endl;\n    }\n    return 1;\n}\nstatus TransposeSMatrix1(TM M,TM &amp;T) \n{\n    int col,p,q,t;\n    \/\/\u4e00\u4e2a\u77e9\u9635\u548c\u5b83\u7684\u8f6c\u7f6e\u77e9\u9635\u7684\u884c\u548c\u5217\u76f8\u53cd \n    T.mu = M.nu;        \n    T.nu = M.mu;\n    T.tu = M.tu;\n    if(T.tu)\n    {\n        for(col=1;col&lt;=M.nu;++col)\n            num[col] = 0;\n        for(t=1;t&lt;=M.tu;++t)      \n            ++num[M.data[t].j];\n        cpot[1] = 1;                 \n        for(col=2;col&lt;=M.nu;++col)\n            cpot[col] = cpot[col-1] + num[col-1];\n\n        for(p=1;p&lt;=M.tu;++p)\n        {\n            col = M.data[p].j;\n            q = cpot[col];\n            T.data[q].i = M.data[p].j;      \n            T.data[q].j = M.data[p].i;\n            T.data[q].e = M.data[p].e;      \n            ++cpot[col];\n        }\n    }\n    return 1;\n}\nstatus TransposeSMatrix2(TM &amp;G,TM &amp;T)\n{\n    int k=1;\n    T.mu = G.nu;\n    T.nu = G.mu;\n    T.tu = G.tu;\n    int col = 0 , p = 0;\n    for(int col=1;col&lt;=G.nu;col++)\n    {\n        for(int p=1;p&lt;=G.tu;p++)\n        {\n            if(G.data[p].j == col )\n            {\n                T.data[k].i = G.data[p].j;\n                T.data[k].j = G.data[p].i;\n                T.data[k].e = G.data[p].e;\n                k++;\n            }\n        }\n    }\n    return 1;\n}\nvoid outTM(TM M)\n{\n    int i;\n\n    printf(&quot;\u77e9\u9635\u7684\u603b\u884c\u3001\u603b\u5217\u3001\u603b\u975e0\u5143\u7d20\u7684\u4e2a\u6570\uff1a\\n&quot;);\n    printf(&quot;%4d%4d%4d\\n&quot;, M.mu, M.nu, M.tu);\n\n    printf(&quot;---------------\\n&quot;);\n    printf(&quot;   i   j   v\\n&quot;);\n    printf(&quot;---------------\\n&quot;);\n    for (i = 1; i &lt;= M.tu; i++)\n    {\n        printf(&quot;%4d%4d%4d\\n&quot;, M.data[i].i, M.data[i].j, M.data[i].e);\n    }\n    printf(&quot;---------------\\n&quot;);\n}\n\nint main ()\n{\n    TM M,T,T2;\n    Create(M);\n    cout&lt;&lt;&quot;\u77e9\u9635\u4e3a:&quot;&lt;&lt;endl;\n\/\/  Print(M);\n    cout&lt;&lt;&quot;\u4e09\u5143\u7ec4:&quot;&lt;&lt;endl;\n    outTM(M);\n    TransposeSMatrix1(M,T);\n    cout&lt;&lt;&quot;\u4f7f\u7528\u7b2c\u4e00\u79cd\u65b9\u6cd5\u8f6c\u7f6e\u7684\u77e9\u9635\u4e3a:&quot;&lt;&lt;endl;\n\/\/  Print(T);\n    cout&lt;&lt;&quot;\u4e09\u5143\u7ec4:&quot;&lt;&lt;endl;\n    outTM(T);\n    TransposeSMatrix2(M,T2);\n    cout&lt;&lt;&quot;\u4f7f\u7528\u7b2c\u4e8c\u79cd\u65b9\u6cd5\u8f6c\u7f6e\u7684\u77e9\u9635\u4e3a:&quot;&lt;&lt;endl;\n\/\/  Print(T2);\n    outTM(T2);\n}\n\/*\ntest \n6 7 8\n\n1 2 12\n1 3 9\n3 1 -3\n3 6 14\n4 3 24\n5 2 18\n6 1 15\n6 4 -7\n*\/<\/code><\/pre>\n<hr \/>\n<h2>11.\u4e8c\u53c9\u6811\u7684\u521b\u5efa\u53ca\u9012\u5f52\u7684\u524d\u3001\u4e2d\u3001\u540e\u5e8f\u904d\u5386<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\nusing namespace std;\ntypedef int status;\ntypedef int selemtype;\n\n#define ok 1\n#define error 0\n\ntypedef struct bitnode\n{\n    char data;\n    struct bitnode *lchild,*rchild;\n}Bitnode,*Bitree;\n\nstatus creatbitree(Bitree &amp;t)\n{\n    char ch;\n    ch=getchar();\n    if(ch == &#039; &#039;)\n    {\n        t=NULL;\n    }\n    else{\n        t=(Bitree)malloc(sizeof(Bitnode));\n        t-&gt;data=ch;\n        creatbitree(t-&gt;lchild);\n        creatbitree(t-&gt;rchild);\n    }\n    return 1;\n}\nvoid preorder(Bitree root)\/\/\u9012\u5f52\u5148\u5e8f\u904d\u5386 \n{\n    if(root)    \n    {\n        printf(&quot;%c&quot;,root-&gt;data);\n        preorder(root-&gt;lchild);\n        preorder(root-&gt;rchild);\n    }\n}\nvoid Inorder(Bitree root)\n{\n\n    if(root)    \n    {\n        Inorder(root-&gt;lchild);\n        printf(&quot;%c&quot;,root-&gt;data);\n        Inorder(root-&gt;rchild);\n    }\n}\nvoid postorder(Bitree root)\n{\n\n    if(root)    \n    {\n        postorder(root-&gt;lchild);\n        postorder(root-&gt;rchild);\n        printf(&quot;%c&quot;,root-&gt;data);\n\n    }\n}\n\nint main ()\n{\n    Bitree T;\n    creatbitree(T);\n    cout&lt;&lt;endl;\n    cout&lt;&lt;&quot;\u5148\u5e8f\u904d\u5386\u7ed3\u679c\u4e3a:&quot;;\n    preorder(T);\n    cout&lt;&lt;endl;\n    cout&lt;&lt;&quot;\u4e2d\u5e8f\u904d\u5386\u7ed3\u679c\u4e3a:&quot;;\n    Inorder(T);\n    cout&lt;&lt;endl;\n    cout&lt;&lt;&quot;\u540e\u5e8f\u904d\u5386\u7ed3\u679c\u4e3a:&quot;;\n    postorder(T);\n\n}\n<\/code><\/pre>\n<hr \/>\n<h2>12.\u4e8c\u53c9\u6811\u7684\u521b\u5efa\u53ca\u975e\u9012\u5f52\u7684\u524d\u5e8f\u4e0e\u4e8c\u79cd\u4e2d\u5e8f\u904d\u5386<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\nusing namespace std;\n#define STACK_INIT_SIZE 100\n#define STACKINCREMENT 10\ntypedef int status;\ntypedef struct bitnode\n{\n    char data;\n    struct bitnode *lchild,*rchild;\n}Bitnode,*Bitree;\n\ntypedef Bitree selemtype;\nstatus creatbitree(Bitree &amp;t)\n{\n    char ch;\n    ch=getchar();\n    if(ch == &#039; &#039;)\n    {\n        t=NULL;\n    }\n    else{\n        t=(Bitree)malloc(sizeof(Bitnode));\n        t-&gt;data=ch;\n        creatbitree(t-&gt;lchild);\n        creatbitree(t-&gt;rchild);\n    }\n    return 1;\n}\nvoid preorder(Bitree root)\/\/\u9012\u5f52\u5148\u5e8f\u904d\u5386 \n{\n    if(root)    \n    {\n        printf(&quot;%c&quot;,root-&gt;data);\n        preorder(root-&gt;lchild);\n        preorder(root-&gt;rchild);\n    }\n}\nvoid inorder(Bitree root)\n{\n\n    if(root)    \n    {\n        inorder(root-&gt;lchild);\n        printf(&quot;%c&quot;,root-&gt;data);\n        inorder(root-&gt;rchild);\n    }\n}\nvoid postorder(Bitree root)\n{\n\n    if(root)    \n    {\n        postorder(root-&gt;lchild);\n        postorder(root-&gt;rchild);\n        printf(&quot;%c&quot;,root-&gt;data);\n\n    }\n}\n\ntypedef struct\n{\n    selemtype *base;\n    selemtype *top;\n    int stacksize ;\n}sqstack;\n\nstatus initstack(sqstack &amp;S)\n{\n    S.base = (selemtype *)malloc(STACK_INIT_SIZE*sizeof(selemtype));\n    if(!S.base)\n    {\n        cout&lt;&lt;&quot;\u521d\u59cb\u5316\u5931\u8d25&quot;;\n        exit(0);\n    }\n    S.top = S.base;\n    S.stacksize = STACK_INIT_SIZE;\n    return 1;\n\n}\nstatus push(sqstack &amp;S , selemtype e)\n{\n    if(S.top-S.base&gt;= S.stacksize)\n    {\n        selemtype *newbase=(selemtype *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(selemtype));\n        if(!newbase)\n        {\n            cout&lt;&lt;&quot;\u5185\u5b58\u4e0d\u8db3\u6808\u7a7a\u95f4\u589e\u52a0\u5931\u8d25&quot;&lt;&lt;endl;\n            return 0;\n        }\n        S.base = newbase;\n        S.top=S.base + S.stacksize;\n        S.stacksize+= STACK_INIT_SIZE;\n    }\n    *(S.top++) = e;\n    return 1;\n}\nstatus pop(sqstack &amp;S, selemtype &amp;e)\n{\n    if(S.top==S.base)\n    {\n        cout&lt;&lt;&quot;\u6808\u5df2\u7a7a&quot;&lt;&lt;endl;\n        return 0;\n    }\n    e =*(--S.top);\n    return 1;\n}\nstatus showstack(sqstack S)\n{\n    while(S.base != S.top )\n    {\n        cout&lt;&lt;*(--S.top)&lt;&lt;&quot; &quot;;\n    }\n    cout &lt;&lt;endl;\n    return 1;\n}\nstatus emptystack(sqstack &amp;S)\n{\n    if(S.top != S.base)\n    {\n        return 0;\n    }\n    else    return 1;\n}\nstatus stacklength(sqstack &amp;S)\n{\n    return (S.top - S.base);\n}\nstatus clearstack (sqstack &amp;S)\n{\n    S.top = S.base;\n    return 1;\n}\nstatus DestroyStack(sqstack &amp;S)\n{\n    free(S.base);\n    S.base=S.top=NULL;\n    S.stacksize=0;\n    return 1;\n}\nstatus TopStack(sqstack &amp;S,selemtype &amp;e)\n{\n    if(S.top==S.base)\n        return 0;\n    e=*(S.top-1);\n    return 1;\n}\n\nvoid Preorder(Bitree T)\n{\n    sqstack S;\n    initstack(S);\n    Bitnode *p;\n    p = T;\n    while(p || !emptystack(S))\n    {\n        if(p)\n        {\n            printf(&quot;%c&quot;,p-&gt;data);\n            push(S,p);\n            p= p-&gt;lchild;\n        }\n        else\n        {\n            pop(S,p);\n            p=p-&gt;rchild; \n        }\n    }\n}\nvoid Inorder(Bitree T)\n{\n    sqstack S;\n    initstack(S);\n    Bitnode *p;\n    p = T;\n    while(p || !emptystack(S))\n    {\n        if(p)\n        {\n            push(S,p);\n            p = p-&gt;lchild;\n        }\n        else\n        {\n            pop(S,p);\n            printf(&quot;%c&quot;,p-&gt;data);\n            p = p-&gt;rchild;\n        }\n    }\n}\nvoid Inorder2(Bitree T)\n{\n    sqstack S;\n    initstack(S);\n    Bitnode *p;\n    p = T;\n    push(S,p);\n    while(!emptystack(S))\n    {\n        while(TopStack(S,p)&amp;&amp;p)\n        {\n            push(S,p-&gt;lchild);\n        }\n        pop(S,p);\n        if(!emptystack(S))\n        {\n            pop(S,p);\n            printf(&quot;%c&quot;,p-&gt;data);\n            push(S,p-&gt;rchild);\n        }\n    }\n}\n\nint main()\n{\n    Bitree T;\n    creatbitree(T);\n    cout&lt;&lt;endl&lt;&lt;&quot;\u975e\u9012\u5f52\u5148\u5e8f\u904d\u5386:&quot;&lt;&lt;endl;\n    Preorder(T);\n    cout&lt;&lt;endl&lt;&lt;&quot;\u9012\u5f52\u5148\u5e8f\u904d\u5386:&quot;&lt;&lt;endl;\n    preorder(T);\n    cout&lt;&lt;endl&lt;&lt;&quot;\u975e\u9012\u5f52\u4e2d\u5e8f,\u7a7a\u4e0d\u8fdb\u6808:&quot;&lt;&lt;endl;\n    Inorder(T);\n    cout&lt;&lt;endl&lt;&lt;&quot;\u975e\u9012\u5f52\u4e2d\u5e8f,\u7a7a\u8fdb\u6808&quot;&lt;&lt;endl;\n    Inorder2(T);\n    cout&lt;&lt;endl&lt;&lt;&quot;\u9012\u5f52\u4e2d\u5e8f&quot;&lt;&lt;endl;\n    inorder(T);\n}<\/code><\/pre>\n<hr \/>\n<h2>13.\u54c8\u592b\u66fc\u6811\u4e0e\u54c8\u592b\u66fc\u7f16\u7801\u7684\u6784\u9020<\/h2>\n<pre><code class=\"language-cpp\">#include&lt;iostream&gt;\n#include&lt;algorithm&gt;\n#include&lt;cstdio&gt;\n#include&lt;cmath&gt;\n#include&lt;map&gt;\n#include&lt;vector&gt;\n#include&lt;queue&gt;\n#include&lt;stack&gt;\n#include&lt;set&gt;\n#include&lt;string&gt;\n#include&lt;cstring&gt;\n#include&lt;list&gt;\n#include&lt;stdlib.h&gt;\nusing namespace std;\ntypedef int status;\ntypedef int selemtype;\n\ntypedef struct\n{\n    int weight;\n    int parent,lchird,rchild;\n}HTNode,*HuffmanTree;\n\ntypedef char** HuffmanCode;\n\nvoid Select(HuffmanTree t,int n ,int &amp;s1, int &amp;s2)\n{\n    int temp;\n    temp = 99999;\n    for(int i = 1 ; i&lt;= n ; i ++ )\n    {\n        if(t[i].weight&lt;temp &amp;&amp; t[i].parent == 0 )\n        {\n            temp=t[i].weight;\n            s1 = i;\n        }\n    }   \n    temp = 99999;\n    for(int i = 1 ; i &lt;= n ; i++ )\n    {\n        if(t[i].weight&lt;temp &amp;&amp; t[i].parent == 0 &amp;&amp;i!=s1)\n        {\n            temp = t[i].weight;\n            s2 = i;\n        }\n    }\n}\nvoid InitHuffmanTree(HuffmanTree &amp;H,int n)\n{\n    if(n&lt;=1) return ;\n    int m=2*n-1;\n    H= (HTNode *)malloc( (m+1)*sizeof(HTNode) );\/\/new HTNode[m+1];\n    for (int i = 1; i &lt;= m; i++)\n    {\n        H[i].parent=0;\n        H[i].lchird=0;\n        H[i].rchild=0;\n    }\n    for (int i = 1; i &lt;= n; i++)\n    {\n        cin&gt;&gt;H[i].weight;\n    }\n}\n\nvoid CreateHuffmanTree(HuffmanTree &amp;H,int n)\n{\n    int m=2*n-1;\n    int s1,s2;\n    for (int i = n+1; i &lt;= m; i++)\n    {\n        Select(H,i-1,s1,s2);\n        H[s1].parent=i; H[s2].parent=i;\n        H[i].lchird=s1; H[i].rchild=s2;\n        H[i].weight=H[s1].weight+H[s2].weight;\n    }\n}\n\nvoid CreateHuffmanCode(HuffmanTree H,HuffmanCode &amp;HC,int n)\n{\n    HC=new char*[n+1];\n    char* cd=new char[n];\n    cd[n-1]=&#039;\\0&#039;;\n    for (int i = 1; i &lt;= n; i++)\n    {\n        int start=n-1;\n        int c=i;\n        int f=H[i].parent;\n        while (f!=0)\n        {\n            --start;\n            if (H[f].lchird==c)\n            {\n                cd[start]=&#039;0&#039;;\n            }\n            else cd[start]=&#039;1&#039;;\n            c=f;\n            f=H[f].parent;\n        }\n        HC[i]=new char[n-start];\n        strcpy(HC[i],&amp;cd[start]);\n    }\n    delete cd; \n}\nvoid out(HuffmanTree t, int n)\n{\n    int i;\n\n    printf(&quot;     w     p     l     r\\n&quot;);\n    printf(&quot;------------------------\\n&quot;);\n    for (i = 1; i &lt;= 2 * n - 1; i++)\n    {\n        printf(&quot;%6d%6d%6d%6d\\n&quot;, t[i].weight, t[i].parent, t[i].lchird, t[i].rchild);\n    }\n    printf(&quot;------------------------\\n&quot;);\n}\nint main()\n{\n    HuffmanTree H;\n    HuffmanCode HC;\n    int n;\n    cout&lt;&lt;&quot;\u8bf7\u8f93\u5165\u54c8\u592b\u66fc\u6811\u7684\u8282\u70b9\u6570:&quot;&lt;&lt;endl;\n    cin&gt;&gt;n;\n    cout&lt;&lt;&quot;\u8f93\u5165\u6bcf\u4e2a\u8282\u70b9\u7684\u6743\u503c:&quot;&lt;&lt;endl;\n    InitHuffmanTree(H,n);\n    CreateHuffmanTree(H,n);\n    CreateHuffmanCode(H,HC,n);\n    out(H,n);\n    for (int i = 1; i &lt;= n; i++)\n    {\n        printf(&quot;H[%d] = %d \u54c8\u592b\u66fc\u7f16\u7801\u4e3a:&quot;,i,H[i].weight);\n        cout&lt;&lt;HC[i]&lt;&lt;endl;\n    }\n    return 0;\n}\n\/*\ntest\n8\n3 5 11 23 29 14 7 8 \n*\/\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1.\u6570\u7ec4\u5408\u5e76 #include&lt;iostream&gt; #include&lt;algorithm&#038;g [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-12","post","type-post","status-publish","format-standard","hentry","category-sec"],"_links":{"self":[{"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/posts\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/comments?post=12"}],"version-history":[{"count":10,"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/posts\/12\/revisions"}],"predecessor-version":[{"id":201,"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/posts\/12\/revisions\/201"}],"wp:attachment":[{"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/media?parent=12"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/categories?post=12"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.shangwendada.top\/index.php\/wp-json\/wp\/v2\/tags?post=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}