• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

LinkedList(連結リスト)

date: 2021-03-04 excerpt: LinkedList(連結リスト)について

tag: algorithmdata structureデータ構造LinkedList


LinkedList(連結リスト)について

概要

  • arrayタイプのデータをハンドルする際のデータ構造の一つ
  • ある要素から次への要素の参照を持つ
  • dfs, bfsで探索できる

実装例

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def print(self):
        tmp = self.head
        while tmp:
            print(tmp.data, end=", ")
            tmp = tmp.next
        print()

llist = LinkedList()
llist.head = Node(1)

second = Node(2)
third = Node(3)
llist.head.next = second
second.next = third

llist.print() # 1, 2, 3,

fast, slowポインターでちょうど半分までたどる

# in 1->2->3->4->5->6 find 4 
slow = fast = head
while fast and fast.next:
    slow = slow.next
    fast = fast.next.next

LinkedListを逆順にする

prev, curr = None, head
while curr:
    tmp = curr.next
    curr.next = prev
    prev = curr
    curr = tmp
  • tmpの変数を用いることで逆順にすることができる

参考

  • [Linked List Set 1@geeksforgeeks](https://www.geeksforgeeks.org/linked-list-set-1-introduction/)
  • 143. Reorder List/LeetCode


algorithmdata structureデータ構造LinkedList Share Tweet