二重リンクリストレビュー

 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

おすすめ

転載: www.cnblogs.com/hany-postq473111315/p/12697287.html