ホームページ  >  記事  >  バックエンド開発  >  Python データ構造の反転リンク リスト

Python データ構造の反転リンク リスト

高洛峰
高洛峰オリジナル
2017-02-28 09:24:39989ブラウズ

リンク リストを反転する

例: リンク リスト 1->2->3->null がある場合、反転されたリンク リストは 3->2->1->null になります

比較的簡単な方法は「抽出法」を使うことです。つまり、最初に新しい空のノードを作成し、次にリンク リスト全体を走査し、走査されたノードが新しく作成されたリンク リストのヘッド ノードを指すようにします。

たとえば、手順は次のとおりです:

1. 新しい空のノードを作成します: なし
2. 2->1-> なし
4. ; 2->1->なし

コードは非常に簡単です:

""" 
Definition of ListNode 
 
class ListNode(object): 
 
 def __init__(self, val, next=None): 
  self.val = val 
  self.next = next 
""" 
class Solution: 
 """ 
 @param head: The first node of the linked list. 
 @return: You should return the head of the reversed linked list. 
     Reverse it in-place. 
 """ 
 def reverse(self, head): 
  temp = None 
  while head: 
   cur = head.next 
   head.next = temp 
   temp = head 
   head = cur 
  return temp 
  # write your code here

もちろん、もう少し難しい解決策もあります。リンクリスト内のノードのリンク解除とリンクを順番に行うメソッドのインプレースフリップコードを書くことができます:


""" 
Definition of ListNode 
 
class ListNode(object): 
 
 def __init__(self, val, next=None): 
  self.val = val 
  self.next = next 
""" 
class Solution: 
 """ 
 @param head: The first node of the linked list. 
 @return: You should return the head of the reversed linked list. 
     Reverse it in-place. 
 """ 
 def reverse(self, head): 
  if head is None: 
   return head 
  dummy = ListNode(-1) 
  dummy.next = head 
  pre, cur = head, head.next 
  while cur: 
   temp = cur 
   # 把摘链的地方连起来 
   pre.next = cur.next 
   cur = pre.next 
   temp.next = dummy.next 
   dummy.next = temp 
  return dummy.next 
  # write your code here

リンクを解除するときは、接続を忘れないように注意してください。削除された場所をもう一度

読んでいただきありがとうございます、皆さんのお役に立てれば幸いです、このサイトをサポートしていただきありがとうございます!

Python データ構造のリンク リストの反転に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。