1 #重鎖
2 級ノード(オブジェクト): 3つの #前駆後続データ
4。 DEF __init__ (セルフ、データ) 。5 self.pre = なし 。6 #前駆
。7 self.data = self.data 。8つの #データ
9 self.next = なし 10 #後継
。11
12である クラス:DoubleLianBiao(オブジェクト) 13である #は接続二重リンクリストのノード定義
14を DEF __init__(自ノード= なしに): 15 #なし使用して送信されていない場合、ノードにポイント
16 self._head = ノード 。17 #ノード定義ヘッドノード、クラスのオブジェクトインスタンスを指すように送信点
18である
。19 DEFのis_empty(自己): 20である 「」「リストが空です「」」
21は 戻り self._head あるなし 22がない
23ことである DEFの長さ(自己): 24 '' ' リストの長さを照会' ''
25 = CUR self._head 26は、 #電流CURポインタ
27 COUNT = 0 28 #のレコード長
29 ながら CUR !=なし: 30 #現在のポイントいずれない
31がなく 、カウント+ 1 =
32 #。数プラス1
33は CUR = cur.next 34はされ #は、モバイルノードのための意味
35 位最初のノードがどれもが、まだ0返されていない場合は
36 戻りCOUNTを 37 #戻るノードの数
38である
39
40 DEF トラベル(自己): 41である 「「」リスト全体を横切る」「」
42は、 CUR = self._head 43がなく 、一方!CUR = なし: 44である #印刷データが空でない場合は
45 印刷(cur.data、終了= " " ) 46は #印刷データ
47 CUR = cur.next 48 #下方にトラバース
49
50
51である DEF :追加(セルフ、データ) 52である '' ' リストヘッダ添加元素' ''
53 =ノードノード(データ) 54である #1 ヘッドにノード点
55 node.next = self._head 56である #次の要素として、ヘッドノード
57は self._head = ノード 58 #プライマリノードとしてノード
59 node.next。 pre =ノード 60 #プル後の右手ノードを指し、そのノードのノードように
61である
62である DEF アペンド(セルフ、データ): 63である 「」「リストテール添加元素」「」
64 ノード= ノード(データ) 65 位ノードの作成
66
67 #特殊なケース最初のノードが空である
68 IF self.is_empty(): 69 self._head = ノード 70 #ヘッドノードのノード
71が 他: 72 CUR = self._head 73がなく 、一方!cur.next = なし: 74 = CUR cur.next 75 #cur.next.data node.data =
76 #データがありません
77 cur.next = ノード 78 #ノードを追加
79 node.pre = CUR 80 #接続は手を左
81
82 DEF INSERT (セルフ、POS、データ): 83 '' ' 指定された位置の追加の要素' ''
84 #場合は、ゼロ位置
85 IF POS <= 0: 86 self.add(データ) 87 #の追加ノード
88 ELIFをPOS>(self.length() - 1 ): 89 #最後の要素まで
90 self.append(データ) 91は、 #は、ノード追加
92 他の: 93 ノード= ノード(データ) 94 インデックス= 0 95 CUR = self._head 96 一方、インデックス< POS: 97 #POS前の位置にトラバース
98 。指数1 = +
99 CUR = cur.next 100 位下方への移動を継続
101 node.next =CURは 102 #右:現在の指すノードに接続されたノード
103 node.pre = cur.pre 104 位左:現在の位置の前のノードにノードnode前に
105 = cur.pre.next ノード 106 #は現在の位置:左次のノードのノードがノードノードである前に
107 cur.pre = ノード 108 #右:現在のノード位置の前にノードがノードである
109
110 DEF (セルフ、データ)を削除します。 111 「」「削除ノード」「」
112 CUR = self._head 113 #カーソルを設定する前には、カーソルを示す
114を しばらく CUR!=なし: 115 IF cur.data == データ: 1 16 #CURポイントノードを削除する場合は、ノードである
117 IF CUR == :self._head 1 18 #最初のデータノードのデータであれば
119 self._head = cur.next 120 #CURスキップ
121を IF cur.next =!なし: 122 #唯一つのノードは、なしなし事前属性場合
123 cur.next.preは= なし 124 #ノード削除なし後ろヘッドノードである
125 他: 126 #は最初、そうでない場合ノード
127 = cur.pre.next cur.next 128 #左:現在のノードのノードの後にノードの後にノードの現在のノードの前に
129 IF cur.next =!なし: 130 #それが最後のノードであるかどうかを確認するために、なしなし予め属性
131である cur.next.pre = cur.pre 132 #右:ノードの前に次のノードに現在のノードが現在のノードである前に
133 BREAK
134 #ループからデータを検索する
135 他: 136 #が見出されない場合データ
137 CUR = cur.next 138 #が下方に移動する
139
140 DEF 検索(セルフ、データ)。 141 '' ' ノードがあるかどうかを見つけるために' ''
142 CUR = self._head 143 #の点ヘッドノードへ
144 一方の cur.next =!なし: 145 #次のノードがnullでない場合は
146 IF cur.data == データ: 147 #データが見つかった場合は
148 リターン真 149 他: 150 CUR = cur.next 151 位見下し続ける
152 リターン偽 153 #のデータを見つけることができません。
2020-04-14