接続リスト


接続リストとは?


ノードに分散して格納され、リンクされた形式.
メモリは非連続的に格納されているため、サイズに制限はありません.
接続リストの種類は、シングル、ダブル、ラウンドの接続リストです.

接続リストと配列の違い



array


1、近づきやすい.
  • メモリには連続データとして存在するため、インデックスアクセスが使用できます.
  • 2、挿入が難しい.
  • メモリを最初に連続データとするために空間を割り当てるため、挿入は容易ではない.
  • LinkedList


    1、直接体現しなければならない.
  • 以上の言語では接続リストは基本的にサポートされていないため、自分で作成する必要があります.
  • 2、近づきにくい.
  • ノードは互いに知らず、私の次のノードが誰なのかしか知らないので、探索するのは難しい.
  • 3、挿入しやすい.
  • の最後のノードでは、新しく作成したノードにリンクを接続すればよいので、簡単に挿入できます.
  • データアクセス量が大きい場合はリストを使用します。削除量が大きい場合はLinkedListを使用します。


    Pythonで実現



    このように実現する.
    頭はただその相手を指すだけだ.
    nextとは次のノードのことで、そのnext値を入力するとオブジェクトがインポートされるのでそう思います.
    #노드 생성 
    class ListNode:
        def __init__(self, val=0, next=None):
            self.val = val 		#데이터
            self.next = next 	#링크
    
    #링크드 리스트 생성, self는 자기자신
    class LinkedList: 
        def __init__(self):
            self.head = None	#포인터(위치)
    
        def append(self, val):
        	#head가 none을 가르키면 헤드에 Node추가하고 끝
            if not self.head: 
                self.head = ListNode(val, None)
                return
    		
            #node변수에 self.head 할당
            node = self.head
            while node.next: #self.head.next가 없을때 까지 
                node = node.next #node에 node.next 할당
    		
            #node.next는 None이니깐 ListNode 추가
            node.next = ListNode(val, None)