• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 183,  comments - 10,  trackbacks - 0

            單鏈表有兩種版本,分別是帶有頭結點和不帶有頭結點。
            各自的翻轉如下。
            不帶有頭結點的:

             1 #include <iostream>
             2 using namespace std;
             3 
             4 struct node
             5 {
             6     int   item;
             7     node* next;
             8 };
             9 
            10 void insert(int i, node*& p)
            11 {
            12     node* q = new node;
            13     if (q == 0)
            14     {
            15         exit(1);
            16     }
            17     q->item = i;
            18     q->next = p;
            19     p = q;
            20 }
            21 
            22 void print(node* p)
            23 {
            24     while (p != 0)
            25     {
            26         cout << p->item << ' ';
            27         p = p->next;
            28     }
            29     cout << endl;
            30 }
            31 
            32 void clear(node*& p)
            33 {
            34     node* q;
            35     while (p != 0)
            36     {
            37         q = p->next;
            38         delete p;
            39         p = q;
            40     }
            41     p = 0;
            42 }
            43 
            44 void reverse(node*& p)
            45 {
            46     node* p1, *p2, *p3;
            47     p2 = p;
            48     p1 = 0;
            49     p3 = 0;
            50     while (p2 != 0)
            51     {
            52         p3 = p2->next;
            53         p2->next = p1;
            54         p1 = p2;
            55         p2 = p3;
            56     }
            57     p = p1;
            58 }
            59 
            60 int main()
            61 {
            62     node* p = 0;
            63     for (int i = 0; i < 10++i)
            64     {
            65         insert(i, p);
            66     }
            67     print(p);
            68     reverse(p);
            69     print(p);
            70     clear(p);
            71     print(p);
            72     return 0;
            73 }

            帶有頭結點的:
             1 #include <iostream>
             2 using namespace std;
             3 
             4 struct node
             5 {
             6     int   item;
             7     node* next;
             8 };
             9 
            10 void init(node*& p)
            11 {
            12     p = new node;
            13     p->next = 0;
            14 }
            15 
            16 void insert(int i, node* p)
            17 {
            18     node* q = new node;
            19     q->item = i;
            20     q->next = p->next;
            21     p->next = q;
            22 }
            23 
            24 void print(node* p)
            25 {
            26     p = p->next;
            27     while (p != 0)
            28     {
            29         cout << p->item << ' ';
            30         p = p->next;
            31     }
            32     cout << endl;
            33 }
            34 
            35 void clear(node* p)
            36 {
            37     node* q = p->next;
            38     p->next = 0;
            39     while (q != 0)
            40     {
            41         p = q->next;
            42         delete q;
            43         q = p;
            44     }
            45 }
            46 
            47 void destroy(node*& p)
            48 {
            49     clear(p);
            50     delete p;
            51     p = 0;
            52 }
            53 
            54 void reverse(node* p)
            55 {
            56     node* p1, *p2, *p3;
            57     p2 = p->next;
            58     p1 = 0;
            59     p3 = 0;
            60     while (p2 != 0)
            61     {
            62         p3 = p2->next;
            63         p2->next = p1;
            64         p1 = p2;
            65         p2 = p3;
            66     }
            67     p->next = p1;
            68 }
            69 
            70 int main()
            71 {
            72     node* p;
            73     init(p);
            74     for (int i = 0; i < 10++i)
            75     {
            76         insert(i, p);
            77     }
            78     print(p);
            79     reverse(p);
            80     print(p);
            81     clear(p);
            82     print(p);
            83     destroy(p);
            84     return 0;
            85 }
            posted on 2011-05-15 19:31 unixfy 閱讀(291) 評論(0)  編輯 收藏 引用
            色欲综合久久躁天天躁| 欧美激情精品久久久久| 一个色综合久久| 久久WWW免费人成一看片| 国产麻豆精品久久一二三| 97久久精品人人做人人爽| 久久久久亚洲AV片无码下载蜜桃| 91精品国产9l久久久久| 亚洲国产成人精品91久久久 | 一个色综合久久| 99久久精品影院老鸭窝| 伊人久久大香线蕉无码麻豆| 久久久久久综合一区中文字幕| 思思久久99热只有频精品66| 国产午夜精品理论片久久影视| 日产久久强奸免费的看| 久久综合九色综合久99| 伊人久久综合无码成人网| 久久婷婷五月综合97色直播| 国产精品久久国产精麻豆99网站| 久久亚洲精品国产亚洲老地址 | 国产精品成人久久久久久久| 无码久久精品国产亚洲Av影片| 人妻少妇精品久久| 久久国产V一级毛多内射| 97久久香蕉国产线看观看| 无遮挡粉嫩小泬久久久久久久| 亚洲精品97久久中文字幕无码| 久久九九久精品国产| 国产精自产拍久久久久久蜜| 7国产欧美日韩综合天堂中文久久久久| 亚洲av日韩精品久久久久久a| 久久免费视频1| 久久久噜噜噜久久中文字幕色伊伊| 亚洲精品高清一二区久久| 欧美亚洲另类久久综合婷婷| 欧美一级久久久久久久大| 久久人人爽人人爽人人片AV高清| 久久精品国产久精国产一老狼| 日本WV一本一道久久香蕉| 久久久久亚洲av成人网人人软件 |