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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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 楊粼波 閱讀(1215) 評論(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)在看到樓上們說的,確實是兩遍,跟最笨的方法——找到結(jié)尾回頭找——相比,也根本好不到哪里去。。。學習了……  回復  更多評論   

# 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)是指沿著某條搜索路線,依次對樹中每個結(jié)點均做一次且僅做一次訪問。訪問結(jié)點所做的操作依賴于具體的應(yīng)用問題。  回復  更多評論   

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

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲福利视频网| 狠狠色综合色区| 午夜亚洲性色福利视频| 亚洲免费高清视频| 国产精品国产自产拍高清av王其| 在线中文字幕一区| 亚洲综合国产精品| 极品日韩av| 亚洲日本成人在线观看| 欧美激情一区二区久久久| 亚洲视频一区二区| 久久精品99国产精品| 亚洲精品护士| 亚洲欧美在线看| 亚洲经典自拍| 亚洲在线免费观看| 亚洲国产精品999| 一区二区高清| 雨宫琴音一区二区在线| 日韩天堂在线视频| 狠狠干成人综合网| 日韩午夜av在线| 国产一区二区三区黄| 亚洲青涩在线| 激情亚洲网站| 亚洲精品女av网站| 国产毛片精品视频| 亚洲精品在线视频观看| 一区二区三区在线观看欧美| 99国产精品久久久久久久成人热| 狠狠综合久久| 亚洲永久免费精品| 一本不卡影院| 免费视频一区| 久久久久久日产精品| 欧美午夜在线一二页| 欧美激情久久久久久| 国产一区二区三区四区| av不卡免费看| 日韩午夜av在线| 久久久久国产一区二区三区四区| 亚洲欧美另类中文字幕| 欧美黄色视屏| 欧美aaa级| 国内视频一区| 欧美一级理论性理论a| 亚洲一区二区三区中文字幕 | 美女黄毛**国产精品啪啪| 国产精品第一页第二页第三页| 欧美激情精品久久久久久黑人| 狠狠色狠色综合曰曰| 欧美一区二区高清在线观看| 亚洲一区三区视频在线观看| 欧美日韩第一区| 亚洲精品一区二区三区樱花| 亚洲人成欧美中文字幕| 美女国内精品自产拍在线播放| 久久―日本道色综合久久| 国产人成精品一区二区三| 亚洲天堂男人| 欧美永久精品| 国产日韩在线不卡| 欧美中文字幕视频| 久久亚洲高清| 亚洲第一精品影视| 毛片基地黄久久久久久天堂| 欧美成年人视频| 亚洲欧洲精品天堂一级| 欧美激情免费观看| 99国产一区| 亚洲欧美日韩系列| 国产日韩亚洲欧美精品| 久久久久久久久综合| 欧美 日韩 国产 一区| 亚洲国产成人在线播放| 欧美电影免费观看高清| 亚洲精品资源| 亚洲淫性视频| 亚洲欧美日韩另类| 久久久久一本一区二区青青蜜月| 一区二区三区日韩| 国产精品xvideos88| 亚洲综合欧美日韩| 欧美激情第8页| 一个色综合av| 久久久www| 亚洲精品欧美| 国产精品女人毛片| 久久久久网址| 日韩一区二区免费高清| 欧美一区二区三区日韩视频| 一区免费观看视频| 欧美日韩在线综合| 欧美一区二区三区视频| 亚洲福利视频一区二区| 亚洲欧美日韩国产中文在线| 韩日精品视频| 欧美视频日韩视频在线观看| 欧美亚洲免费在线| 亚洲精品乱码久久久久久蜜桃91| 亚洲欧美激情视频| 亚洲国产精品成人精品| 欧美系列亚洲系列| 久久人人爽人人爽| 亚洲欧美欧美一区二区三区| 欧美高清在线精品一区| 欧美亚洲三区| 日韩视频不卡中文| 国产综合色产| 国产精品久久久久秋霞鲁丝 | 亚洲高清色综合| 欧美在线观看网址综合| 99精品国产福利在线观看免费 | 国产欧美69| 欧美日韩成人免费| 蜜臀久久99精品久久久画质超高清| 国产精品99久久久久久白浆小说| 欧美风情在线观看| 欧美影院在线| 中文亚洲欧美| 亚洲区免费影片| 亚洲电影在线看| 国产一级精品aaaaa看| 国产精品久久激情| 欧美日韩成人精品| 欧美激情综合五月色丁香| 久久免费精品视频| 久久久久久国产精品一区| 亚洲欧美激情在线视频| 在线亚洲欧美视频| 99亚洲视频| 日韩一二三区视频| 亚洲久久成人| 日韩视频在线观看| 亚洲精品色图| 亚洲免费精彩视频| 亚洲精品在线观| 99人久久精品视频最新地址| 亚洲欧洲综合另类在线| 亚洲欧洲日韩女同| 亚洲另类在线一区| 一区二区免费在线播放| 一区二区三区欧美视频| 国产精品99久久久久久人| 日韩视频在线观看国产| 宅男噜噜噜66一区二区| 亚洲一区二区免费| 小黄鸭视频精品导航| 午夜亚洲精品| 久久―日本道色综合久久| 久久亚洲午夜电影| 欧美成人精品在线播放| 欧美日本二区| 国产精品美女黄网| 国内精品**久久毛片app| 在线观看亚洲一区| 亚洲伦伦在线| 亚洲欧美一区二区三区久久 | 免费一级欧美在线大片| 亚洲大黄网站| 一区二区高清视频| 欧美一站二站| 欧美激情导航| 国产精品永久免费在线| 一区二区三区在线视频观看 | 欲香欲色天天天综合和网| 亚洲国产成人不卡| 亚洲一二三区视频在线观看| 久久超碰97人人做人人爱| 欧美顶级大胆免费视频| 99精品免费视频| 久久久久久9| 欧美日韩一区精品| 一区二区三区在线视频播放| 一本不卡影院| 狼人天天伊人久久| 一本色道久久88综合亚洲精品ⅰ| 欧美一区二区三区免费在线看 | 欧美噜噜久久久xxx| 国产日韩视频| 一区二区三区精品久久久| 久久精品日产第一区二区| 亚洲欧洲一二三| 久久成年人视频| 欧美日韩一区二区在线视频 | 亚洲视频碰碰| 欧美暴力喷水在线| 亚洲欧美精品中文字幕在线| 免费av成人在线| 国产一二三精品| 亚洲自拍偷拍色片视频| 亚洲大片一区二区三区| 久久国产欧美| 国产精品一区二区三区乱码| 999在线观看精品免费不卡网站| 欧美在线观看视频一区二区三区 | 久久亚洲国产成人| 国产亚洲精品成人av久久ww| 亚洲一二三区视频在线观看| 亚洲国产精品一区二区www在线|