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

牽著老婆滿街逛

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

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

鏈表節(jié)點(diǎn):
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)
{
    
// 第一次遍歷,獲取鏈表的計(jì)數(shù)
    Node* pCurrent = pHead;
    
int nCount = 0;
    
while (pCurrent)
    
{
        
++nCount;
        pCurrent 
= pCurrent->next;
    }


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

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


        pCurrent 
= pCurrent->next;
    }


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


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

        
else
        
{
            
return NULL;
        }

    }


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


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

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

評(píng)論

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

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

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

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

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

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

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

呵呵,我也是做的面試題.
還是這個(gè)算法比較符合我的理想中的美學(xué).  回復(fù)  更多評(píng)論   

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

這個(gè)方法明顯比那種遍歷兩次的方法要高效,而不是根本好不到哪里去  回復(fù)  更多評(píng)論   

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

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

另外附上遍歷的概念解釋:
所謂遍歷(Traversal)是指沿著某條搜索路線,依次對(duì)樹中每個(gè)結(jié)點(diǎn)均做一次且僅做一次訪問。訪問結(jié)點(diǎn)所做的操作依賴于具體的應(yīng)用問題。  回復(fù)  更多評(píng)論   

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

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


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   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>
            久久久久国产精品人| 久久精品国产久精国产爱| 欧美三级第一页| 欧美理论电影在线播放| 男人的天堂亚洲在线| 欧美国产激情二区三区| 欧美日韩福利视频| 国产精品久久久亚洲一区| 国产欧美日韩精品专区| 激情综合色丁香一区二区| 亚洲国产片色| 亚洲综合导航| 久久亚洲综合网| 91久久久久久| 日韩视频在线观看国产| 午夜精品区一区二区三| 久久亚洲春色中文字幕| 欧美激情一区二区三区高清视频| 欧美日韩在线观看视频| 国产午夜精品一区二区三区欧美| 亚洲国产成人一区| 亚洲一区二区三区午夜| 久久久久久一区二区三区| 欧美大片91| 亚洲欧美日本精品| 欧美激情亚洲国产| 狠狠色狠狠色综合日日tαg | 免费亚洲一区二区| 欧美日韩理论| 激情亚洲成人| 午夜精品成人在线| 91久久精品久久国产性色也91 | 欧美成人国产| 国产亚洲一区二区在线观看 | 宅男精品视频| 男人的天堂亚洲| 国产亚洲欧美在线| 亚洲欧美经典视频| 亚洲欧洲在线视频| 久久蜜桃av一区精品变态类天堂| 国产精品久久久久aaaa九色| 日韩视频欧美视频| 亚洲国产成人av| 久久人人爽爽爽人久久久| 国产精品久久久久一区二区三区 | 中文国产成人精品久久一| 久久精品亚洲精品国产欧美kt∨| 欧美精品成人在线| 亚洲国产另类久久精品| 久久精品视频导航| 午夜精品网站| 国产视频一区在线观看一区免费| 亚洲午夜精品网| 亚洲免费观看高清在线观看 | 久久亚洲一区二区三区四区| 国产欧美日韩中文字幕在线| 亚洲欧美久久久久一区二区三区| 亚洲人成在线播放网站岛国| 欧美成人午夜免费视在线看片 | 欧美一级专区免费大片| 亚洲精选91| 欧美日韩亚洲三区| 一区二区精品| 夜夜嗨av一区二区三区| 欧美视频你懂的| 亚洲欧美欧美一区二区三区| 中文亚洲免费| 国产日韩一区二区三区在线播放| 欧美一区二区黄| 久久aⅴ国产欧美74aaa| 在线精品视频免费观看| 亚洲第一级黄色片| 欧美日韩一区二区三区在线| 午夜精品福利在线| 欧美在线视频在线播放完整版免费观看| 国产欧美一区二区三区另类精品 | 99精品热视频| 国产精品视频男人的天堂| 久久精品日韩| 免费欧美电影| 亚洲视频网在线直播| 亚洲综合视频一区| 伊人蜜桃色噜噜激情综合| 亚洲国产日韩在线一区模特| 欧美午夜视频在线观看| 久久久久久久久久久久久久一区| 老鸭窝91久久精品色噜噜导演| 亚洲区第一页| 亚洲一区免费观看| 在线看欧美日韩| 一道本一区二区| 伊人成人开心激情综合网| 亚洲美女区一区| 狠狠综合久久| 国产精品99久久久久久www| 激情欧美一区二区| 日韩写真视频在线观看| 国产一区二区中文| 亚洲精品一区二区三区福利| 国产午夜精品久久久| 亚洲国产欧美日韩| 国产视频一区在线| 国产欧美日韩一区二区三区在线 | 一本色道久久综合亚洲精品婷婷| 亚洲国产福利在线| 亚洲激情视频在线观看| 午夜在线精品| 美女性感视频久久久| 亚洲一区www| 亚洲高清资源| 性欧美长视频| 亚洲一区二区三区中文字幕在线| 久久精品国产久精国产爱| 亚洲视频一二区| 欧美金8天国| 欧美成人小视频| 激情成人综合网| 欧美在线播放一区二区| 亚洲欧美日韩一区在线| 欧美日本在线| 亚洲激情二区| 亚洲开发第一视频在线播放| 欧美在线视频免费观看| 久久av二区| 国产伦精品一区二区| 亚洲图片欧美一区| 亚洲专区一二三| 国产精品乱子乱xxxx| 一区二区久久久久| 亚洲天天影视| 欧美亚州一区二区三区| av不卡在线观看| 亚洲午夜一级| 国产精品你懂的在线| 亚洲一级一区| 欧美与欧洲交xxxx免费观看| 国产精品一区三区| 性色av一区二区三区| 久久午夜羞羞影院免费观看| 国内精品免费午夜毛片| 久久精品国产精品亚洲| 欧美1区2区视频| 亚洲人成免费| 欧美日韩一区三区| 亚洲一区二区三区精品动漫| 欧美在线综合| 在线精品视频免费观看| 欧美国产激情二区三区| 一区二区高清| 亚洲欧美日韩视频一区| 国产精品美女久久久久av超清| 性欧美8khd高清极品| 欧美aⅴ一区二区三区视频| 亚洲精品亚洲人成人网| 欧美视频国产精品| 久久国产精品黑丝| 亚洲大片在线| 欧美一级日韩一级| 亚洲视频免费| 乱码第一页成人| 亚洲福利久久| 亚洲视频国产视频| 国产亚洲欧美一区| 欧美高清视频免费观看| 中国日韩欧美久久久久久久久| 久久成人资源| 亚洲电影免费观看高清完整版在线| 欧美成人在线网站| 亚洲欧美日韩综合一区| 欧美激情亚洲视频| 午夜精品国产更新| 亚洲精品乱码久久久久久日本蜜臀 | 快射av在线播放一区| 99这里只有精品| 美女网站久久| 午夜精品一区二区三区在线 | 久久精品国产精品亚洲综合| 91久久久久久国产精品| 国产精品日韩一区二区三区| 久久亚洲一区| 午夜精品免费视频| 日韩西西人体444www| 免费在线成人av| 性欧美精品高清| 99re热精品| 亚洲成色最大综合在线| 国产精品日韩欧美一区| 欧美人妖在线观看| 麻豆国产精品777777在线| 亚洲欧美一级二级三级| 亚洲精品永久免费| 亚洲国产天堂久久国产91| 久久综合狠狠| 久久xxxx精品视频| 亚洲综合色婷婷| 亚洲视频精选在线| 99在线热播精品免费99热| 亚洲国产激情| 亚洲第一精品福利| 狠狠88综合久久久久综合网|