【チェーンテーブル】チェーンテーブルを反転~まだ読めません
3413 ワード
テーマ:関数を定義し、チェーンテーブルのヘッダノードを入力し、チェーンテーブルを反転し、反転後のチェーンテーブルのヘッダノードを出力します.
例:
入力:1->2->3->4->5->NULL出力:5->4->3->2->1->NULL
制限:
0<=ノード数<=5000
考え方:
構想一:外部空間を利用する
新しいリストを作成し、チェーンテーブルを巡回しながらチェーンテーブルをリストに格納し、popを使用してチェーンテーブルを後ろから前にポップアップし、チェーンテーブルを反転させる目的を達成します.
方法2:
構想:2つのポインタを申請し、最初のポインタはpreと呼ばれ、最初はnullを指していた.2番目のポインタcurはheadを指し、その後curを繰り返します.curに反復するたびに、curのnextがpreを指し、preとcurが1ビット前進する.反復が完了し(curがnullになった)、preが最後のノードになります.アニメーションのプレゼンテーションは次のとおりです.
例:
入力:1->2->3->4->5->NULL出力:5->4->3->2->1->NULL
制限:
0<=ノード数<=5000
考え方:
構想一:外部空間を利用する
新しいリストを作成し、チェーンテーブルを巡回しながらチェーンテーブルをリストに格納し、popを使用してチェーンテーブルを後ろから前にポップアップし、チェーンテーブルを反転させる目的を達成します.
class Solution:
def reverseList(self, head):
if not head:
return None
res = []
# ,
while head.next:
res.append(head)
head = head.next
# head
# temp , , pop
temp = head
# ,
while res:
node = res.pop()
node.next = temp.next
temp.next = node
temp = node
return head
方法2:
構想:2つのポインタを申請し、最初のポインタはpreと呼ばれ、最初はnullを指していた.2番目のポインタcurはheadを指し、その後curを繰り返します.curに反復するたびに、curのnextがpreを指し、preとcurが1ビット前進する.反復が完了し(curがnullになった)、preが最後のノードになります.アニメーションのプレゼンテーションは次のとおりです.
class Solution(object):
def reverseList(self, head):
if not head:
return
#
pre_node = None
cur_node = head
#
while cur_node:
# , next
#
tmp = cur_node.next
# , , next
cur_node.next = pre_node
# ,
pre_node = cur_node
cur_node = tmp
return pre_node