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

牽著老婆滿街逛

嚴(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在线| 国产精品美女久久久久av超清| 久久国产精品72免费观看| 美女视频网站黄色亚洲| 亚洲欧美制服另类日韩| 久久婷婷蜜乳一本欲蜜臀| 亚洲免费成人av电影| 亚洲欧美成人网| 99国产精品视频免费观看一公开| 久久久999精品免费| 久久黄色小说| 亚洲第一精品久久忘忧草社区| 久久久国产精品一区| 99一区二区| 亚洲人成在线观看| 欧美国产精品| 亚洲精品国产精品国自产观看| 乱人伦精品视频在线观看| 欧美在线高清| 亚洲电影在线看| aa级大片欧美| 国产精品美女久久久久久久| 欧美在线影院在线视频| 欧美韩国日本一区| 亚洲无限乱码一二三四麻| 韩国av一区二区三区在线观看| 久久一区免费| 99视频精品免费观看| 亚洲欧洲一区二区三区| 91久久黄色| 亚洲视频免费在线| 欧美在线视频一区二区三区| 久久久久久久高潮| 欧美丰满少妇xxxbbb| 欧美激情一区二区三区在线视频| 久久综合久久综合这里只有精品 | 亚洲私人黄色宅男| 欧美成人一区二区三区| 亚洲国产日韩美| 欧美大尺度在线观看| 亚洲福利国产| 亚洲网站在线| 亚洲最新在线| 欧美激情国产高清| 免费欧美在线| 欧美在线观看网址综合| 国产日韩欧美精品一区| 欧美日韩精品免费在线观看视频| 在线视频欧美日韩精品| 美女露胸一区二区三区| 国产精品久久久久久影院8一贰佰| 久久日韩粉嫩一区二区三区| 久久免费国产| 国内欧美视频一区二区| 亚洲欧洲精品天堂一级| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 久久精品夜色噜噜亚洲aⅴ| 国产欧美一区二区色老头| 欧美成人首页| 亚洲精品午夜| 欧美视频在线观看| 亚洲综合成人在线| 亚洲综合欧美日韩| 欧美精品入口| 久久久999精品| 国产区日韩欧美| 国产精品毛片在线看| 欧美日韩精品不卡| 美日韩在线观看| 久久青青草综合| 亚洲女优在线| 亚洲一区免费看| 午夜精品美女久久久久av福利| 久久综合一区| 亚洲精品之草原avav久久| 国产日韩欧美亚洲一区| 欧美一区二区成人6969| 一级日韩一区在线观看| 欧美一区二区三区免费在线看 | 亚洲精品国产精品乱码不99| 欧美激情一区二区三区在线| 亚洲人被黑人高潮完整版| 你懂的国产精品| 欧美日韩国产片| 欧美成人免费播放| 欧美视频免费在线观看| 欧美一级理论片| 久久成人人人人精品欧| 亚洲国产99精品国自产| 中文亚洲欧美| 亚洲麻豆视频| 国产精品福利在线| 一本不卡影院| 亚洲经典自拍| 欧美成人福利视频| 欧美国产专区| 99v久久综合狠狠综合久久| 久久精品一区二区三区中文字幕| 国产精品99久久久久久久女警 | 中文一区字幕| 国产婷婷色一区二区三区| 亚洲国产精品ⅴa在线观看 | 亚洲制服丝袜在线| 国产主播一区二区三区| 中文一区在线| 精久久久久久| 欧美久久视频| 一区二区三区视频免费在线观看| 樱桃成人精品视频在线播放| 在线视频一区二区| 亚洲视频专区在线| 欧美日韩国产色站一区二区三区| 免费不卡在线观看av| 嫩草国产精品入口| 狠狠久久亚洲欧美专区| 亚洲欧美中文另类| 男女精品网站| 亚洲在线视频| 国产一区二区三区在线观看免费视频 | 亚洲国产网站| 欧美成人综合一区| 久久经典综合| 久久狠狠亚洲综合| 亚洲国产精品一区在线观看不卡| 雨宫琴音一区二区在线| 欧美日韩中字| 欧美成人一区二免费视频软件| 裸体女人亚洲精品一区| 亚洲性感美女99在线| 在线日韩av片| 国产一区二区激情| 国产精品久久久久9999| 欧美大片免费看| 久久久久9999亚洲精品| 欧美在线播放一区二区| 亚洲欧美资源在线| 最新国产成人在线观看| 欧美激情亚洲另类| 香蕉久久一区二区不卡无毒影院| 亚洲国产精品国自产拍av秋霞| 国产亚洲精品福利| 国产精品福利在线观看网址| 欧美 日韩 国产 一区| 在线观看日韩国产| 国产欧美欧洲在线观看| 国产精品久久久久久久久久妞妞| 国产精品久久久久久久9999| 老司机免费视频一区二区| 在线视频国产日韩| 国产精品wwwwww| 国产最新精品精品你懂的| 国产精品久在线观看| 国产精品久久久久久久久久尿 | 国产日本精品| 国产精品扒开腿做爽爽爽软件| 欧美日韩高清不卡| 国产精品一区二区欧美| 国产精品呻吟| 亚洲人在线视频| 亚洲女同精品视频| 久久综合99re88久久爱| 亚洲午夜一二三区视频| 久久精品视频亚洲| 欧美精品在线观看播放| 欧美精品日韩一区| 亚洲激情av在线| 久久国产黑丝| 午夜视频一区二区| 欧美视频在线观看免费网址| 免费国产自线拍一欧美视频| 亚洲免费黄色| 欧美专区福利在线| 国产欧美亚洲精品| 亚洲男女自偷自拍| 亚洲激情视频在线观看| 亚洲午夜激情| 国产精品久久久免费| 日韩午夜在线电影| 欧美激情精品久久久久久免费印度 | 在线精品亚洲| 亚洲免费影视| 午夜精品久久久久久久男人的天堂 | 在线一区日本视频| 亚洲欧美日韩国产一区二区三区 | 亚洲第一二三四五区| 亚洲精品资源| 欧美日韩亚洲国产精品|