1つのリスト
基本的なリストは、連続的に格納されていないデータとして配列表、共通のデータ構造であるが、各ノードと次のノードに格納された位置情報データ。
リスト構造は、コンピュータのメモリ空間の柔軟な動的なメモリ管理を最大限に活用することができます。
2ウェイリンクリスト
2.1ノード
link要素ドメインとドメイン、リンクされたリスト内の次のノードへのリンク:各ノードは、2つの部分からなります。
最初のノードは、第1ノード、テール・ノードと呼ばれる最後のノードと呼ばれます。
nullにエンド・ノードのリンクフィールドポイントを。
3 pythonで特定された変数の性質
アドレスポイントから異なるだけアドレスの維持にPythonの変数は、変数の型が異なるを表し、これは理由を変更することができ、Pythonの変数の一種です。
4単独リンクリストを達成
4.1節を達成
クラスSingleNode(オブジェクト):
デフ__init __(自己、アイテム):
self.item =アイテム
self.next =なし
4.2単独リンクリストを達成
クラスSingleLindList(オブジェクト):
デフ__init __(自己、ノード=なし):
self._head =ノード
単一リンクリスト方式の4.3デザイン
このような加工ヘッドノードとテール・ノードとしてその異常な状況を、注意してください
ループ終了条件、CUR!=なしとcur.next!=なしことに注意してください
違い表5の順序
シーケンステーブルは、データは非常に便利ですが、店に連続したメモリを必要と読みます。
あなたは、データにアクセスするためのリンクリストを横断する必要がありますが、ほかにも、アドレスデータがあるので、それに応じてデータを格納するための個別のメモリをより柔軟に使用することができるので、同じ量のデータは、リストには、より多くのストレージスペースを必要とします。
6リストの実装
List実装プロセスは、いくつかの特別な場合のために、思いやりの必要性は空のリスト、最初のノード、エンドノードなどを含む、注意すべきです。
クラスノード(オブジェクト): デフ __init__ (自己、項目): self.item = 項目 self.next = なし クラスSingleTable(オブジェクト): デフ __init__(自ノード= なし): 自己。__head = ノード デフis_empty(自己): 戻り自己。__headが あるなし デフ:長さ(自己) CUR =自己。__head 、カウント = 0 中!CUR = :なし 回数+ = 1 CUR = cur.nextの リターンカウント デフ(自己)旅行: CUR =自己を。__head ながら CUR =!なし: プリント(cur.item) CUR = cur.nextは デフ追加(自己、アイテム): ノード = ノード(アイテム) node.next =自己。__head 自己。__head = ノード DEF :(自己、項目)追加 ノード = ノード(アイテム) であれば(self.is_empty()): 自己。__head = ノード 他: CUR =自己。__head ながら cur.next =!なし: CUR = cur.next cur.next = ノードが DEF 挿入(自己、POS、項目): ノード = ノード(アイテム) であれば(POS <= 0): self.add(アイテム) のelif(POS> self.length() - 1 ): self.append(アイテム) 他: #1 CUR =自己.__ヘッド PREV =自己。__head カウント =0 ながらカウント<POS-1 : カウント + = 1 PREV = prev.next node.next = prev.next prev.next = ノード DEF (自己、項目)を削除: CUR =自己。__head 前 = なし の場合(self.is_emptyは()): 渡す 他: もし(自己__head .item == アイテム): セルフ。__head = cur.next 他: しばらく cur.item =!アイテム: 前 = CUR CUR = cur.next pre.next = cur.next DEF :(自己、アイテム)を検索 CUR =自己を。__head 場合(self.is_empty()): 返すFalseの 他: しばらく CUR =!なし: 場合(cur.item == アイテムは): 返す真の 他: CUR =cur.next 返す偽 なら __name__ == ' __main__ ' : LL = SingleTable() ll.append( 1 ) ll.append( 2 ) ll.append( 5 ) ll.append( 12 ) 印刷(ll.length()) ll.travel() ll.insert( 2,20 ) ll.travel() ll.remove( 1 ) ll.travel()