Pythonによるデータ構造とアルゴリズム入門.



データ構造
Pythonには、以下の4つの組み込みデータ構造が組み込まれています:
リスト、辞書、タプルとセット.
まず
リスト
リストは、どんなタイプのオブジェクトのためにでも使われることができます.数から文字列とリストも.
リストはブラケットで定義されている- []
numbers = [4,5,6]
print(type(numbers))

output:

<class 'list'>
リストはまた、キーワードlist()を使用して定義することができます
numbers = list()
numbers.append(4)
numbers.append(5)
numbers.append(6)
print(numbers)
[4, 5, 6]

リストで使用される組み込みメソッドのセットがあります.append() -リストの末尾に要素を追加するclear() -リストの要素を削除するcopy() -リストのコピーを返すpop() -指定した位置に要素を削除するinsert() -指定した位置に要素を追加するreverse() -リストの順序を逆にするsort() -ソートリストremove -指定した値で最初の項目を削除するcount -指定した値を持つ要素の数を返します.
辞書
他の言語のhashmapsと呼ばれる辞書.キー、値のペアで構成されます.keyは一意で不変のオブジェクトです.
各キーと値の組はコロンで区切られます.
辞書はカーリーブラケット{}で定義される.
Dict = {'name': 'Eric', 'age': 19}

また、組み込みのPython辞書メソッドのセットもありますclear() -辞書からすべての項目を削除するcopy() -辞書のコピーを返すget() -指定したパラメータの値を取得するitems() -キー値形式で辞書のすべての項目を取得するpopitem() -辞書内の最後の要素を削除して返すupdate() -キー値ペアで辞書を更新するkeys() -辞書のキーを含むリストを返すvalues() -辞書内のすべての値のリストを返す
タプル
タプルは命令され、不変です.
重複はタプルで許可されます.
タプルは、ブラケット()で定義され、インデックスされます.
mytuple = ("cat", "mouse", "cow", "chicken")

タプルはインデックスを通じてアクセスできます
mytuple = ("cat", "mouse", "cow", "chicken")
print(mytuple[1])

# output:

mouse
集合
セットは順序なしで、不変で、インデックスなしです.
重複は集合で許されません
セットはカーリーブラケット{}で定義されます
myset = {"cat", "mouse", "cow", "chicken"}
組み込みの設定メソッドがあります.add() -要素に要素を追加するclear() -セットからすべての要素を取り除きますcopy() -セットのコピーを返すdiscard() -指定した項目を削除するpop() -セットから要素を削除するupdate() -別のセットでセットを更新しますremove() -指定した項目を削除する

アルゴリズム
キュー
キューは、両側で開いている抽象的なデータ構造であるため、最初のFirst Out Out Base FIFOを使用する.
キューには二つの端があるfrontrear.

キューに含まれる2つの操作はenqueuedequeueである.
dequeueはアイテムを削除するプロセスである間、Enqueueはキューにアイテムを挿入することを含みます.
キューに含まれるメソッドは以下のようになります.push(item) -キューに要素を挿入するために使用します.pop(item) -使用してキューから要素を削除します.get() -キューから要素を抽出するために使用します.empty() -キューが空かどうかチェックする.full() -キューが満杯かどうかを確認します.
リストを用いたキューの実装
q = []
def Enqueue():
    if len(q) == size:
        print('Queue is full')
    else:
        number = input('Enter numbers-:')
        q.append(number)
        print(number,'number added to the queue')

def dequeue():
    if len(queue) == 0:
        print('queue is empty')
    else:
        del = q.pop(0)
        print('Element removed',del)

def display():
    size = input('Enter size of the queue')
    while True:
        print("Select the Operation:1.Add 2.Delete 3. Display 4. Quit")
        choice=int(input())
        if choice==1:
            Enqueue()
        elif choice==2:
            dequeue()
        elif choice==3:
            display()
        elif choice==4:
            break
        else:
            print("Invalid Choice =(")


スタック
スタックは、最後のin first first orderで項目を格納する線形データ構造です.

スタックは片側で開いているので、新しいアイテムは片端に追加され、その端からのみ削除されます.
スタックに関連するメソッドは以下の通りです.empty() -スタックが空かどうかを返します.size() -スタックのサイズを返します.top() -スタックの最上位要素への参照を返します.push() -スタックの上部に項目を挿入します.pop() -スタックの最上位要素を削除します.
リストの実装
stack = []

#append() used to push items into stack
stack.append('a')
stack.append('b')
stack.append('c')

print(stack)

#pop() removes items from stack

print(stack.pop())
print(stack.pop())
print(stack.pop())

#elements after being popped
print(stack)


連結リスト
リンクリストは、リンクを介して接続されるデータ要素のシーケンスです.
各リンクは別のリンクへの接続を含んでいます.
Pythonはリンクリストを標準ライブラリに持っていません.

第1のノードはまた、ヘッドとして知られている.リストを横断するリファレンスとして使用されます.
最後のノードはNULLを指します.

リンクリストの種類

  • シングルリンクリスト-フォワード方向
  • で横断

  • 二重リンクリスト-前後方向において横断される

  • 循環単一リンクリスト-最後の要素は、次の
  • として最初の要素へのリンクを含んでいます

  • 循環二重連結リスト-最後の要素は、次のように最初の要素へのリンクを含み、最初の要素は前の要素の最後の要素のリンクを含んでいます.
  • 
    Implementation of nodes using classes
    
    class Node:
      #constructor to create a new node
      def __init__(self, data):
        self.data = data
        self.next = None
    
    
    class LinkedList:
      #constructor to create an empty LinkedList
      def __init__(self):
        self.head = None
    
    # create an empty LinkedList                 
    MyList = LinkedList()
    
    #Add first node.
    first = Node(1)
    #linking with head node
    MyList.head = first
    
    #Add second node.
    second = Node(2)
    #linking with first node
    first.next = second
    
    #Add third node.
    third = Node(3)
    #linking with second node
    second.next = third
    
    
    この記事を読んでくれてありがとう.私は、それがデータ構造とアルゴリズムを理解している大きな援助であることを望みます.