リンクリストデータ構造----

はじめに、リストデータ構造

  また、単独でリンクされたリスト単一リンクリストとして知られている、テーブルは、各ノードが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))

 

おすすめ

転載: www.cnblogs.com/open-yang/p/11367030.html