# -*- coding:utf-8 -*-
"""
author: leadingme
mail:leadingme@qq.com
mywebsite:leadingme.top
"""# 翻轉鍊錶
""" 演算法要求: 翻轉乙個單鏈表(不帶頭節點)
示例:輸入: 1->2->3->4->5->null
輸出: 5->4->3->2->1->null
"""def
reverselinklist
(head)
:"""
:param head:
:return:head
"""vallist =
pointer = head
while pointer:
# 將鍊錶的值依次取出
pointer = pointer.
next
pointer = head
while vallist:
# 將列表的值反向賦給鍊錶的每個節點的val屬性
pointer.val = vallist.pop(
) pointer = pointer.
next
return head
def
reservelinklist2
(head)
:"""
:param head:
:return: head
"""if head is
none
:# 鍊錶為空
return
none
pre = next = head
if next.
next
isnone
:# 鍊錶只有乙個頭節點
return head
else
: pre =
none
while next is
notnone
: next = next.
next
head.
next
= pre
pre = head
head = next
return head
反轉鍊錶(兩種實現)
反轉鍊錶反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 方法一 前插法 這道題目我們可以先建立乙個新的表頭,然後按正序每抓取到乙個原鍊錶的節點,就前插到這個新的煉表裡,最後我們就可以得到乙個恰好為原鍊錶反序的新鍊錶 struct listnode rev...
經典演算法 鍊錶翻轉
比如說乙個鍊錶先是這樣,40 5 0 60 反過來就應該是 60 0 5 40 函式如下 static void reverse struct node head ref head ref prev 代表著最後乙個 傳進去的引數是煉表頭 原理就是把鍊錶都反過來指,最後乙個指向倒數第二個,方法是通過上...
初級演算法 翻轉鍊錶
反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?思路1 迭代 思路很簡單 使用三個指標 迴圈使後乙個指向前乙個 再用第三個指標儲存沒有翻轉的剩餘指標的位置 自己敲得程式執行不出結果 class...