はじめに、リストデータ構造
また、単独でリンクされたリスト単一リンクリストとして知られている、テーブルは、各ノードが2つのフィールド、情報フィールド(フィールド要素)とリンクフィールドを含むことが、最も簡単な形です。最後のノードにリンクされたリスト内の次のノード、およびリンクフィールドポイントへのリンクポイントはNULL値です。
:リストにリンクされた抽象データ型定義の方法
。Is_empty():リストが空である
の長さ():.チェーン長
旅行を():.リスト全体トラバース
追加(アイテム):.添加元素リストヘッド
アペンド(項目):リストの末尾の要素を追加
(POS、項目)を挿入は、要素を追加する場所を指定:.
削除(項目):.ノード削除
検索(項目):.ノードを探し存在
定義のリスト
1 クラスノード(オブジェクト): 2 DEF __init__ (自己、項目): 3 self.item = 項目 4 self.next = なし 5 6 7 クラスリンク(オブジェクト): 8 デフ __init__ (自己): 9 self._head = なし 10 11 DEF のisEmpty(自己): 12 戻り self._headがあるなし 13 14 @property 15 DEFの長さ(自己): 16 ノード= self._head 17 カウント= 0 18 つつノード: 19 カウント+ = 1つの 20 ノード= node.next 21 リターンカウント 22 23 DEF 移動(自己): 24 ならself._head: 25 cur_node = self._head 26 ながらcur_node: 27 プリント(cur_node .item) 28 cur_node = cur_node.next 29 他: 30 昇給(" <!オブジェクトが空か> ") 31 32 DEF (自己、項目)を追加: 33 ノード= ノード(アイテム) 34 node.next = self._head 35 self._head = ノード 36 37 DEF :(自己、項目)追加 38 ノード= ノード(アイテム) 39 もしself.isEmpty(): 40 self._head = ノード 41 他: 42 cur_node = self._head 43 ながらcur_node: 44 pre_node、cur_node =cur_node、cur_node.next 45 pre_node.nextを= ノード 46であり、 47は DEF (セルフ、商品、指数)を挿入: 48 IFインデックス<= 0: #より小さいか0に等しい挿入位置インデックスがヘッドに挿入されている 49 self.add(アイテム) 50 ELIFのインデックス> = self.length: #のインデックスがリストに挿入されるよりも、挿入位置は、尾の長さに等しい大きい 51れる self.append(項目) 52は 他: #の挿入位置のインデックス1、インデックス1鎖長と 53は =ノードがノード(項目) 54である cur_node = self._head.next 55 =プリself._head 56 カウント= 1〜 57 ながらcur_node: 58 場合は、カウント== 度: 59 pre.next、node.next = ノード、cur_node 60 休憩 61 プリ、cur_node = cur_node.next、cur_node 62 カウント+ = 1 63 64 DEF 削除(自己、アイテム): 65 場合:self.isEmpty() #空提示 66 のリターンは 、 " なぜなら空の失敗しました!" 67 cur_node = self._head 68 = pre_node なし 69 一方のcur_node: 70 IF cur_node.itemは== アイテム: 71は、 IF:pre_node ==なし #削除インデックス0 72 self._headは= cur_node.next 73は 他: 74 pre_node.next = cur_node.next 75 リターン項目 76 pre_node、cur_node = cur_nodeは、cur_node.next 77の 昇給(" 見つからない!") #はついに見つからない与えられた 78 79 デフ(自己、アイテム)検索: 80 もしself.isEmpty(): 81 昇給を(" <オブジェクトが空である!> " ) 82 、他: 83 cur_node = self._head 84 =インデックス0 85 しばらく:cur_node 86 もし cur_node。項目== アイテム: 87 リターン指数 88 指数+ = 1 89 cur_node = cur_node.next 90 リターン -1
リストを使用します
1つのリンク= リンク() 2 link.append(2 ) 3 link.append(3 ) 4 link.add(4 ) 5 link.insert(11、1 ) 6 link.remove(4 ) 7 link.travel() 8 プリント(link.length) 9 プリント(link.search(11))