ソフトウェアテスト/テスト開発丨Pythonのデータ構造とアルゴリズム

スタック

配列とリストは公開するインターフェイスが多すぎるため、操作は柔軟ですが、制御できず、エラーが発生しやすくなります。挿入位置に間違ったデータが書き込まれると、配列全体の内容が変更されます。
スタックは、操作が制限されたリストです。
スタックは、先入れの原則に従って、一方の端でのみ削除と挿入の操作を実行できます。最後に出す、最後に入れる、先出し。
  • 配列スタック
class ArrayStack:
    def __init__(self, volume):
        self.vol = volume
        self.count = 0
        self.data = [-1] * volume

    def in_stack(self, value):
        """入栈"""
        if self.count == self.vol:
            return False
        self.data[self.count] = value
        self.count += 1
        return True

    def de_stack(self):
        """出栈"""
        if self.count == 0:
            return None
        self.count -= 1
        return self.data[self.count]


def test_stack():
    array_stack = ArrayStack(5)
    data = ["a", "b", "c", "d", "e"]
    for i in data:
        array_stack.in_stack(i)
    result = array_stack.in_stack("a")
    assert not result
    data.reverse()
    for i in data:
        assert i == array_stack.de_stack()
    assert not array_stack.de_stack()
プッシュの時間計算量: O(1)
ポッピングの時間計算量: O(1)
  • チェーンスタック
class LinkStack:
    class Node:
        def __init__(self, data):
            self.data = data
            self.next = None

    def __init__(self):
        self.top = None

    def en_stack(self, value):
        """入栈"""
        new_node = self.Node(value)
        if self.top is None:
            self.top = new_node
        else:
            new_node.next = self.top
            self.top = new_node

    def de_stack(self):
        """出栈"""
        if self.top is None:
            return -1
        result = self.top.data
        self.top = self.top.next
        return result


def test_link_stack():
    link_stack = LinkStack()
    data = [1, 2, 3, 4, 5]
    for i in data:
        link_stack.en_stack(i)
    data.reverse()
    for j in data:
        assert j == link_stack.de_stack()
    assert link_stack.de_stack() == -1
プッシュの時間計算量: O(1)
ポッピングの時間計算量: O(1)

最後に: 以下はサポート学習資料です。[ソフトウェア テスト] を行っている人にとって、これは最も包括的で完全な準備倉庫となるはずです。この倉庫は、最も困難な旅にも同行してくれました。また、お役に立てれば幸いです。【騙しなしで100%無料で受け取れます】

ソフトウェアテストインタビューアプレット

何百万人もの人々が使用しているソフトウェア テストの質問バンクです。誰が知っているのか!インターネット上で最も包括的な面接テスト ミニ プログラムです。携帯電話を使用して質問に答えたり、地下鉄やバスに乗ったり、試験に参加したりすることができます。

次のインタビューの質問セクションをカバーします。

1. ソフトウェアテストの基礎理論、2. Web、アプリ、インターフェース機能テスト、3. ネットワーク、4. データベース、5. Linux

6. Web、アプリ、インターフェイスの自動化、7. パフォーマンス テスト、8. プログラミングの基本、9. 人事面接の質問、10. 公開テストの質問、11. セキュリティ テスト、12. コンピューターの基本

  完全な情報を入手する方法: 下の小さなカードをクリックしてご自身で入手してください

おすすめ

転載: blog.csdn.net/weixin_57794111/article/details/133638516