<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    單向鏈表反轉(轉)

    轉自于http://www.cppblog.com/tx7do/archive/2009/01/06/71280.html

    題目:已知單向鏈表的頭結點head,寫一個函數把這個鏈表逆序 ( Intel)


    解答:
    我們假設單向鏈表的節點如下:
    template <typename T>
    class list_node
    {
    public:
    list_node 
    * next;
    T data;
    }
    ;

    這個題目算是考察數據結構的最基礎的題目了,有兩種方法可以解此題:

    方法一:
        void reverse(node*& head)
        
    {
            
    if ( (head == 0|| (head->next == 0) ) return;// 邊界檢測
            node* pNext = 0;
            node
    * pPrev = head;// 保存鏈表頭節點
            node* pCur = head->next;// 獲取當前節點
            while (pCur != 0)
            
    {
                pNext 
    = pCur->next;// 將下一個節點保存下來
                pCur->next = pPrev;// 將當前節點的下一節點置為前節點
                pPrev = pCur;// 將當前節點保存為前一節點
                pCur = pNext;// 將當前節點置為下一節點
            }

        }

    這是一般的方法,總之就是用了幾個臨時變量,然后遍歷整個鏈表,將當前節點的下一節點置為前節點。


    方法二:
        node* reverse( node* pNode, node*& head)
        
    {
            
    if ( (pNode == 0|| (pNode->next == 0) ) // 遞歸跳出條件
            {
                head 
    = pNode; // 將鏈表切斷,否則會形成回環
                return pNode;
            }


            node
    * temp = reserve(pNode->next, head);// 遞歸
            temp->next = pNode;// 將下一節點置為當前節點,既前置節點
            return pNode;// 返回當前節點
        }
    這個方法是采用了遞歸算法,也就是在反轉當前節點之前先反轉其后繼節點,說白了其實就是利用函數的調用堆棧構建了一個臨時鏈表罷了,挺廢的一個算法,權當作是寫著好玩,沒有什么實在的意義。
    采用此算法需要注意的是,頭結點必須要傳入的是引用,因為在遞歸跳出的時候要切斷鏈表,否則鏈表將會形成一個回環。

    posted on 2009-05-12 17:51 蔣耘 閱讀(3829) 評論(1)  編輯  收藏 所屬分類: 數據結構與算法

    評論

    # re: 單向鏈表反轉(轉)[未登錄] 2013-08-29 00:39 fornever

    方法一中尾節點(翻轉前的頭結點)Next未置為NULL  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2013年8月>
    28293031123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 中文字幕在线免费视频| 亚洲精品亚洲人成在线| 亚洲AV之男人的天堂| 亚洲色在线无码国产精品不卡| 久久九九AV免费精品| 国产成人精品日本亚洲网站| 亚洲中文字幕无码中文| 最近中文字幕mv免费高清视频7| 亚洲国产精品尤物YW在线观看| 免费亚洲视频在线观看| 一区二区三区在线免费看| 国产成人在线观看免费网站| 亚洲AV成人片色在线观看| 国产麻豆成人传媒免费观看| 亚洲AV无码精品无码麻豆| 黄网站色视频免费看无下截| 亚洲人成无码网WWW| 亚洲精品123区在线观看| 全免费a级毛片免费看| 国产精品亚洲一区二区三区在线| 国产一二三四区乱码免费| 亚洲av鲁丝一区二区三区| 麻豆成人久久精品二区三区免费 | 久久这里只精品热免费99| 亚洲成人在线网站| 曰批全过程免费视频播放网站| 亚洲人成电影在线观看青青| 中文字幕a∨在线乱码免费看| 精品国产_亚洲人成在线高清| 最近免费中文字幕大全免费| 日韩亚洲产在线观看| 亚洲人午夜射精精品日韩| 无码人妻久久一区二区三区免费| 亚洲欧洲国产综合| 免费大黄网站在线观| 亚洲国产精品日韩av不卡在线| 国产高清不卡免费在线| 日韩国产欧美亚洲v片| 精品免费国产一区二区三区| 亚洲中文字幕久久精品蜜桃| 亚洲精品色婷婷在线影院|