青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

找出單向鏈表的倒數(shù)第m個元素

鏈表節(jié)點:
class Node
{
public:
    
int        data;
    Node
*    next;

public:
    Node(
int n) : data(n), next(0)
    
{
    }


    Node() : data(
0), next(0)
    
{
    }


    Node
* InsertAfter( int _data )
    
{
        Node
* newnode = new Node(_data);

        newnode
->next = next;
        next 
= newnode;

        
return newnode;
    }

}
;


低效的查找算法:
Node* FindMToLastNode(Node* pHead, int m)
{
    
// 第一次遍歷,獲取鏈表的計數(shù)
    Node* pCurrent = pHead;
    
int nCount = 0;
    
while (pCurrent)
    
{
        
++nCount;
        pCurrent 
= pCurrent->next;
    }


    
// 防止越界
    if (m > nCount) return 0;

    
// 第二遍遍歷,獲取倒數(shù)第m個節(jié)點,也就是順數(shù)滴n個節(jié)點
    int n = nCount - m + 1;
    nCount 
= 0;
    pCurrent 
= pHead;
    
while (pCurrent)
    
{
        
++nCount;
        
if (nCount == n)
        
{
            
return pCurrent;
        }


        pCurrent 
= pCurrent->next;
    }


    
return 0;
}
這個算法很低效,要循環(huán)列表兩次,從時間上來說,消耗很大.從空間上,需要3個臨時變量,消耗也有點大.


高效的查找算法:
Node* FindMToLastNode(Node* pHead, int m)
{
    
// 查找到第m個元素
    Node* pCurrent = pHead;
    
for (int i = 0; i < m; ++i)
    
{
        
if (pCurrent)
        
{
            pCurrent 
= pCurrent->next;
        }

        
else
        
{
            
return NULL;
        }

    }


    
// 一起繼續(xù)遍歷到鏈表尾部,
    
// 現(xiàn)在pFind和pCurrent之間間隔了m個元素,
    
// 所以,當pCurrent遍歷到尾部的時候,
    
// pFind就到了倒數(shù)第m個元素的位置上.
    Node* pFind = pHead;
    
while (pCurrent)
    
{
        pFind        
= pFind->next;
        
// 間隔m個元素
        pCurrent    = pCurrent->next;
    }


    
return pFind;
}
這個算法果然精妙!空間上只需要開銷兩個臨時變量,時間上只需要循環(huán)鏈表一遍,也就是O(n)!
我太笨了,居然沒有想到如此絕妙的算法.

posted on 2010-06-02 12:10 楊粼波 閱讀(1228) 評論(7)  編輯 收藏 引用

評論

# re: 找出單向鏈表的倒數(shù)第m個元素[未登錄] 2010-06-02 18:47 R

pFind = pFind->next;
// 間隔m個元素
pCurrent = pCurrent->next;
實際上是遍歷兩遍,時間復雜度和最簡單的想法沒有區(qū)別  回復  更多評論   

# re: 找出單向鏈表的倒數(shù)第m個元素 2010-06-02 19:30 楊粼波

@R
的確,這塊代碼算起來的確是遍歷了兩遍.
其實在空間上還可以節(jié)省掉一個臨時變量的,那就是pFind,可以利用pHead,不過這樣的話,閱讀起來就會讓人誤解.  回復  更多評論   

# re: 找出單向鏈表的倒數(shù)第m個元素 2010-06-02 20:30 溪流

以前面試題做到過,當時不會,后來知道這個答案了也驚嘆了一下。
現(xiàn)在看到樓上們說的,確實是兩遍,跟最笨的方法——找到結尾回頭找——相比,也根本好不到哪里去。。。學習了……  回復  更多評論   

# re: 找出單向鏈表的倒數(shù)第m個元素 2010-06-02 21:23 楊粼波

呵呵,我也是做的面試題.
還是這個算法比較符合我的理想中的美學.  回復  更多評論   

# re: 找出單向鏈表的倒數(shù)第m個元素 2010-06-10 10:35 imok

這個方法明顯比那種遍歷兩次的方法要高效,而不是根本好不到哪里去  回復  更多評論   

# re: 找出單向鏈表的倒數(shù)第m個元素 2010-06-10 15:19 楊粼波

我把兩種算法都放出來了,
這個一比較就很明白了.
第一個算法,需要循環(huán)鏈表兩次.
第二個算法,只需要循環(huán)鏈表一次就足夠了.

另外附上遍歷的概念解釋:
所謂遍歷(Traversal)是指沿著某條搜索路線,依次對樹中每個結點均做一次且僅做一次訪問。訪問結點所做的操作依賴于具體的應用問題。  回復  更多評論   

# re: 找出單向鏈表的倒數(shù)第m個元素 2010-06-10 15:25 楊粼波

第二種算法,至少要少訪問鏈表的節(jié)點m-1次.
可以直接去profile獲取直觀的時間損耗.  回復  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            日韩一二三区视频| 99re8这里有精品热视频免费 | 9i看片成人免费高清| 欧美日韩mv| 亚洲欧美日韩精品久久久久| 久久精品99国产精品| 亚洲大胆人体在线| 欧美精品七区| 亚洲欧美激情在线视频| 久久亚洲图片| 一区二区av在线| 国产日韩av一区二区| 久久夜色精品国产亚洲aⅴ| 亚洲日本欧美| 久久不见久久见免费视频1| 在线精品亚洲一区二区| 欧美性感一类影片在线播放 | 久久乐国产精品| 亚洲精品久久久一区二区三区| 亚洲自拍另类| 亚洲国产视频一区二区| 欧美三级资源在线| 久久久久这里只有精品| 日韩一区二区免费看| 久久在线观看视频| 亚洲一二区在线| 亚洲国产成人精品视频| 国产精品视频专区| 欧美国产免费| 欧美一区三区二区在线观看| 亚洲精品乱码视频| 免费观看成人鲁鲁鲁鲁鲁视频| 一区二区三区四区国产| 亚洲福利视频网站| 国产女主播一区| 欧美日韩综合一区| 欧美成人午夜激情| 久久精品视频在线| 亚洲永久视频| 日韩午夜激情| 欧美激情一区二区三区在线视频| 久久国产66| 亚洲欧美国产va在线影院| 亚洲日本电影| 影音国产精品| 国产综合视频在线观看| 国产精品九九久久久久久久| 欧美高清hd18日本| 麻豆视频一区二区| 久久欧美肥婆一二区| 欧美一级久久久久久久大片| 在线视频你懂得一区| 亚洲人成小说网站色在线 | 亚洲国产精品电影在线观看| 久久色在线播放| 久久成人精品视频| 亚洲欧美中文日韩在线| 亚洲一区在线观看视频| 在线视频欧美日韩精品| 日韩午夜一区| 亚洲精品视频在线| 亚洲乱码国产乱码精品精| 亚洲国产成人av好男人在线观看| 黄色成人av在线| 韩国免费一区| 依依成人综合视频| 亚洲第一精品久久忘忧草社区| 国模吧视频一区| 激情视频亚洲| 影音先锋国产精品| 亚洲国产视频直播| 亚洲国产小视频在线观看| 亚洲成人在线视频播放| 亚洲国产精品欧美一二99| 亚洲国产精品日韩| 亚洲精品国产系列| 亚洲视频观看| 欧美一区国产在线| 久久久久久久91| 欧美/亚洲一区| 亚洲国产高清一区| 亚洲精品永久免费精品| 一本色道久久综合精品竹菊| 亚洲深夜福利| 久久精品一区二区三区中文字幕 | 久久婷婷av| 欧美好骚综合网| 亚洲免费观看视频| 亚洲一区二区综合| 欧美一区二区三区四区在线| 久久久久久香蕉网| 欧美激情中文字幕乱码免费| 欧美日韩综合不卡| 国产一区二区日韩| 日韩午夜av电影| 欧美一站二站| 蜜月aⅴ免费一区二区三区 | 亚洲娇小video精品| 一区二区成人精品| 校园春色国产精品| 欧美成年视频| 一区二区久久久久久| 香蕉久久夜色精品国产| 毛片av中文字幕一区二区| 欧美午夜精品久久久| 国产亚洲一区在线| 亚洲精品乱码| 欧美一区二区在线观看| 欧美高清视频一区二区三区在线观看 | 亚洲一二三区在线| 久久视频在线视频| 亚洲精选视频免费看| 午夜亚洲视频| 欧美日本国产视频| 精品成人一区| 亚洲一区亚洲二区| 欧美岛国激情| 亚洲永久在线| 欧美精品电影在线| 精品不卡在线| 亚洲综合激情| 亚洲国产精品福利| 久久精品视频免费观看| 国产精品theporn| 亚洲精品1区2区| 久久久久欧美精品| 中文无字幕一区二区三区| 麻豆精品一区二区综合av | 亚洲影院免费观看| 欧美韩日一区二区| 久久精品30| 国产精品资源在线观看| av成人福利| 欧美高清不卡在线| 欧美一区在线看| 国产精品久久久久9999| 在线一区日本视频| 亚洲人妖在线| 久久综合狠狠综合久久激情| 国产欧美精品日韩| 亚洲欧美日韩天堂一区二区| 亚洲靠逼com| 欧美韩日一区| 亚洲人成毛片在线播放女女| 久久精品在线播放| 午夜精品久久久久久久| 国产精品久久久久免费a∨| 一区二区三区日韩精品视频| 亚洲激情网站| 欧美激情精品久久久久久大尺度 | 久久综合久久美利坚合众国| 亚洲欧美一区二区在线观看| 国产精品国产三级国产| 一区二区国产日产| 99国产精品国产精品毛片| 欧美日韩成人精品| 9国产精品视频| 亚洲精品一区二区三区樱花| 欧美风情在线观看| 亚洲免费精彩视频| 亚洲精选91| 欧美日韩在线亚洲一区蜜芽 | 久久国产日韩欧美| 午夜精品一区二区三区电影天堂| 国产精品久久久久久影视| 亚洲一级在线| 亚洲一区二区不卡免费| 国产精品免费久久久久久| 亚洲欧美日韩区| 午夜国产一区| 一区二区三区在线免费视频 | 亚洲国产精品久久久久秋霞蜜臀| 欧美成人国产| 中文国产一区| 亚洲欧美日韩在线不卡| 国产一区二区三区在线观看精品| 麻豆精品传媒视频| 欧美成在线视频| 亚洲视频免费观看| 亚洲欧美视频在线观看视频| 国产婷婷色综合av蜜臀av| 两个人的视频www国产精品| 美女性感视频久久久| 一区二区三区产品免费精品久久75| 99精品热6080yy久久| 国产欧美日韩免费看aⅴ视频| 久久夜色精品国产欧美乱| 模特精品裸拍一区| 亚洲一区免费看| 久久久久久91香蕉国产| 亚洲精品一区二区网址| 亚洲性感美女99在线| 国内精品**久久毛片app| 亚洲激情一区二区| 国产精品久久久久久久久久ktv | 欧美va亚洲va香蕉在线| 欧美日本精品一区二区三区| 欧美一区二区在线视频| 免费观看成人| 新67194成人永久网站|