データ構造とアルゴリズム順一覧表

メモリ

  • コンピュータの役割
    • バイナリデータを格納し、計算するため
 
  • コンピュータのメモリサイズの単位の目安:
    • ビット(ビット):
    • バイト:8ビット
    • KB:1024のバイト
    • メガバイト:1024キロバイト
 
  • 質問:どのようにコンピュータが1 + 2を計算するには?
    • これは、コンピュータのメモリにメモリ空間を開く必要があります
    • メモリに格納されている唯一の対応する値
 
  • 変数の概念
    • コンピュータ(メモリマップ)で= 10意味表現
    • 優れたメモリ空間が開かれた後、メモリ空間のすべての部分は、2つのデフォルトのプロパティを持っています
      • メモリ空間の大きさ:コンピュータのメモリサイズユニット
      • メモリアドレス空間:進数値
        • 効果に対処:位置決め(トラッキング)指定されたメモリのために、メモリに格納されたデータを取得することができます
    • 変数は、メモリアドレス空間の本質を表し、通常変数は、メモリ空間に対応するメモリアドレスを表すように意図されています
 
  • =は、メモリ10(基準点)が理解しました
    • 引用:変数
    • 点:メモリに記憶された基準の特定の変数/アドレス場合は、対応するメモリ空間のメモリ・アドレスにその変数ポインティングを意味します。
 
  • 異なるデータによって占有されたメモリ空間の大きさ
 

受注テーブル

  • 単一のデータタイプ(numpyの)と、複数のデータ・タイプ(リスト):コンテナ/データ構造の要素が順次に格納され、シーケンステーブルの構造は、二つの形態に分けることができます。
  • Pythonのリストとタプルは、テーブルを注文する複数のデータタイプに属しています
 
  • Singleデータ型シーケンステーブルのメモリマップ(メモリ連続オープン)
 
  • 複数のデータ型図、シーケンステーブルメモリ(RAM不連続オープン)
 
  • テーブルの過誤順序:順序テーブル構造は、連続した収納スペースを適用するために、事前にデータのサイズを知る必要があり、時間とデータの再配置の中に拡大する必要があります。
 

リスト:再配置テーブルのオーダーに対するデータが、リスト構造は、柔軟で拡張するために動的なメモリ管理、コンピュータメモリを利用しなくてもよいです。

  • リスト(リンクリスト)は、共通の基本データ構造、リニアテーブル、シーケンステーブルとしてではなく連続的に格納されていないデータが、次のノードに格納された各ノードの情報(データ記憶手段)(ありますそのアドレス)
 

。Is_empty():リストは空です

。長さ():鎖長

トラベル():リスト全体トラバース

。(アイテム)を追加:リスト要素のヘッドを追加します

。追加(アイテム):要素を追加するには、リストの末尾

(POS、項目)を挿入:指定された場所の要素を追加

。(アイテム)を取り外し:ノードを削除します。

。検索(アイテム):がある場合、ノードを探します

#各
 クラスノード():
    DEF __init __(自己、アイテム):
        self.item = 項目
        self.next = なし

#リスト
クラスのリンク(): は空のリストを作成
    DEFの__init __(自己を):
        self._head = なし

    チェーンの#ヘッド追加データが
    追加(セルフ、項目を)DEF: はインスタンス化
        ノード = ノード(項目)
        #ノートが空でない場合は、追加する方法を
        node.next = self._head 
        self._head =をノード
    #表示リストが
    デフ旅行を(自己):
        CUR = self._head
        一方CUR:
            プリント(cur.item)
            CUR = cur.next 
    #鎖長
    DEF長さ(自己):
        COUNT = 0 
        CUR = self._head
         一方CUR:
            COUNT + =を1 
            CUR = cur.next
         戻りCOUNT 

    DEFのisEmpty(自己) :
        リターン self._head == なし

    #は、リストの末尾に追加
    DEFアペンド(セルフ、アイテム):
        ノード = ノード(項目)
        #リストが空である
        IF = self.isEmpty():
            self._headのノード
             戻り

        #链表不为空
        CUR = self._head 
        予備 = なし
         ながらCUR:
            予備 = CUR 
            CUR = cur.next 
        pre.next = ノード
    #查找
    DEF(自己、項目)検索:
        フラグ = Falseの
        CUR = セルフ._head
         :CUR
             場合 cur.item == アイテム:
                フラグ = 真の
                 ブレーク 
            CUR= Cur.nextの
         復帰フラグで
    挿入された#
    (セルフ、POS、品目)を挿入DEF: 挿入位置誤差
        の長さ = self.length()
         IF <POS 。1やPOS>は長さ:
            印刷(' POSエラーが' を返す
        それ以外
            ノード = ノード(アイテム)
            を挿入#は開始値を想定1。
            CUR = self._head 
            予備 = なし
              I における範囲(POS- 1 ):
                事前 = CUR 
                CUR = cur.next 
            pre.next = ノード
            node.next = CUR 
    #最初の要素を削除するには、[削除遭遇
    DEF削除(セルフ、アイテムを):
        CUR = self._head  = なし
        #は、最初の削除ノード
        のIF cur.item == アイテム:
            self._head = self._head.next
             返す
        #ノードを削除することはまずない
        のwhile :CUR
             IF cur.item == アイテム:
                pre.next =cur.next
                 破る
             = CUR 
                CUR = cur.next
#链表图

リンク =リンク()
link.append(1 
link.append(2 
link.append(3 

#1 link.travel() 印刷(リンク.LENGTH()) プリント(link.isEmpty()) プリント(link.search(4 ))
#1 link.insert(2 1 
link.remove(1 
link.travel()

 

 

 

 

おすすめ

転載: www.cnblogs.com/XLHIT/p/11361087.html
おすすめ