• <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 閱讀(288) 評論(0)  編輯 收藏 引用
            AV无码久久久久不卡蜜桃| 久久99国产精品久久| 中文字幕精品无码久久久久久3D日动漫 | 久久精品国产亚洲5555| 无码乱码观看精品久久| 久久精品国产亚洲av影院| 久久综合九色综合精品| 中文字幕久久亚洲一区| 99久久超碰中文字幕伊人 | 国产亚洲精午夜久久久久久| 三级片免费观看久久| 久久久精品2019免费观看| 99久久精品国产综合一区| 久久精品国产乱子伦| 国产精品免费久久| 久久久久久午夜成人影院| 亚洲国产精品无码久久九九| 久久久久久久综合日本亚洲| 国内精品伊人久久久影院| 国产AⅤ精品一区二区三区久久 | 成人免费网站久久久| 伊人久久五月天| 久久精品成人免费国产片小草| 成人久久精品一区二区三区| 久久国产欧美日韩精品| 久久久久亚洲精品男人的天堂| 久久国产精品一区二区| 日韩精品无码久久久久久| 欧美日韩精品久久久久| 久久精品国产一区二区三区| 狠狠色婷婷综合天天久久丁香 | 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久久久亚洲精品无码蜜桃| 久久www免费人成看片| 日日狠狠久久偷偷色综合96蜜桃| 国産精品久久久久久久| 99久久国产亚洲高清观看2024| 天天爽天天狠久久久综合麻豆| 久久99九九国产免费看小说| 久久亚洲AV无码精品色午夜麻豆 | 一本色道久久99一综合|