<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 蔣耘 閱讀(3824) 評論(1)  編輯  收藏 所屬分類: 數據結構與算法

    評論

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

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


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


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

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV成人无码网站| 日本免费观看网站| 国产AV无码专区亚洲A∨毛片| 精品亚洲视频在线| 久久久久亚洲AV无码专区首JN| 黄色视屏在线免费播放| 永久看日本大片免费35分钟| 亚洲愉拍99热成人精品热久久| 成人a毛片免费视频观看| 亚洲成人一区二区| 亚洲尹人九九大色香蕉网站| 亚洲人成网站色7799| 成年女人18级毛片毛片免费| 亚洲精品精华液一区二区| 8x8×在线永久免费视频| 亚洲人成网网址在线看| 免费黄色一级毛片| 亚洲精品在线电影| 免费无码又黄又爽又刺激| 老牛精品亚洲成av人片| 2048亚洲精品国产| 亚洲精品视频免费看| 亚洲一线产品二线产品| 免费观看国产精品| 亚洲欧美熟妇综合久久久久| 国产免费人成在线视频| 最近中文字幕免费大全| 亚洲第一页日韩专区| 三上悠亚在线观看免费| 亚洲精品亚洲人成在线麻豆| 日本高清免费不卡在线| 中文字幕在线免费看| 亚洲成人免费在线观看| 国产a级特黄的片子视频免费| 中文在线免费视频| 亚洲综合校园春色| 亚洲成在人线aⅴ免费毛片| 亚洲人成影院在线高清| 亚洲av无码不卡私人影院| 无码中文字幕av免费放dvd| 亚洲av无码一区二区三区人妖|