スタック
配列とリストは公開するインターフェイスが多すぎるため、操作は柔軟ですが、制御できず、エラーが発生しやすくなります。挿入位置に間違ったデータが書き込まれると、配列全体の内容が変更されます。
スタックは、操作が制限されたリストです。
スタックは、先入れの原則に従って、一方の端でのみ削除と挿入の操作を実行できます。最後に出す、最後に入れる、先出し。
- 配列スタック
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. コンピューターの基本