91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

單鏈表查找倒數第k個節點

發布時間:2020-06-16 12:59:14 來源:網絡 閱讀:2073 作者:duanjiatao 欄目:編程語言

題目描述:單鏈表查找倒數第k個節點


分析:單鏈表是一個單向的鏈式結構,所以不可能從鏈表尾部向前找第k個結點,因此只能想辦法從鏈表的頭部開始找。


假設一個給定一個鏈表,長度為 6,現在查找倒數第 2 個結點:


單鏈表查找倒數第k個節點

給定兩個指針, fast 和 slow 開始都讓他們指向頭結點

單鏈表查找倒數第k個節點

首先,讓 fast 指針先走到正數第 k 個結點,也就是走 k-1 步,這里 k=2,所以先讓 fast 走1步

單鏈表查找倒數第k個節點

這時讓 slow 指針跟著 fast 指針一塊走,直到 fast 指針走到最后一個節點注意:這里是最后一個節點,而不是空節點),此時 slow 指針所指向的節點就是我們要找的倒數第 k 個結點了

單鏈表查找倒數第k個節點

當然,這里只是大致的思想,具體的很多細節問題(比如: k值大于鏈表的長度,k = 0 的情況等等),需要自己處理。


主要代碼如下:

ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
    {
        if(pListHead == NULL || k == 0) //一些異常情況
        {
            return NULL;
        }
        
        ListNode* fast = pListHead;
        ListNode* slow = pListHead;
        
        while(fast && --k)  //這里一定要先自減,因為兩個指針開始都指向頭結點
        {
            fast = fast->next;
        }
        
        if(fast == NULL)  //即沒找到的情況
        {
            return NULL;
        }
        
        if(k == 0)
        {
            while(fast->next != NULL)
            {
                fast = fast->next;
            	slow = slow ->next;
            }
            
        }

        return slow;
    }


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

象山县| 独山县| 庆城县| 津市市| 扎兰屯市| 华蓥市| 上栗县| 乐平市| 东兰县| 开江县| 正安县| 湘潭县| 宁都县| 闸北区| 喀喇沁旗| 赤城县| 麻栗坡县| 丹江口市| 达尔| 宾川县| 长宁区| 剑川县| 永和县| 桓台县| 昌都县| 皮山县| 永宁县| 绥棱县| 祁阳县| 峨眉山市| 镇坪县| 天镇县| 客服| 搜索| 荥经县| 龙川县| 余干县| 建瓯市| 潜山县| 沛县| 张掖市|