關於鍊錶的四道演算法題

2022-10-09 01:33:11 字數 977 閱讀 7724

解決鍊錶的四道演算法題:

1.鍊錶反轉。

2.使用快慢指標獲取鍊錶中間值。

3.使用快慢指標判斷鍊錶中是否有環。

4.使用快慢指標找出鍊錶中環的入口。

使用遞迴解決鍊錶反轉

/*

*路人假helloworld

*反轉鍊錶

*/public void reverse(node head)

reverse(head.next);

}//反轉指定結點curr,並把反轉的結點返回

public node reverse(node curr)

node pre = reverse(curr.next);

pre.next = curr;

curr.next = null;

return curr;

}

/*

*路人假helloworld

*/public string getmid(node first)

return slow.item;

}

快指標每次走兩步,慢指標每次走一步。如果它們能相遇,則代表鍊錶中存在環;否則鍊錶中不存在環。

/*

*路人假helloworld

*/public boolean iscircle(nodefirst)

} return false;

}

當快慢指標相遇時, 我們可以判斷到鍊錶中有環,這時重新設定乙個 新指標指向鍊錶的起點,且步長與慢指標一樣為1 , 則慢指標

與新指標相遇的地方就是環的入口。證明這一結論牽涉到數論的知識 。

public static nodeiscircle(nodefirst)

if (temp != null)}}

return temp;

}

鍊錶的游標實現 一道演算法題

輸入包含多組資料。每組資料佔一行,包含不超過100000個字母 下劃線 字元 或 者 其中字元 表示home鍵,表示end鍵。輸入結束標誌為檔案結束符 eof 輸 入檔案不超過5mb。對於每組資料,輸出一行,即螢幕上的悲劇文字。樣例輸入 this is a beiju text 樣例輸出 beiju...

鍊錶演算法題

leetcode鏈結 利用棧先入先出 definition for singly linked list.struct listnode class solution p head while p p head 需要找到頭節點的位置 return p 雙指標,畫 決 leetcode鏈結 class...

程式設計題 關於鍊錶

目錄 從尾到頭列印鍊錶 劍指歐肥兒 刪除鍊錶中重複的節點 劍指歐肥兒 鍊錶中環的入口結點 劍指歐肥兒 兩個鍊錶的第乙個公共結點 劍指歐肥兒 合併兩個排序的鍊錶 劍指歐肥兒 反轉鍊錶 劍指歐肥兒 題目描述 輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個arraylist。解題 class solutio...