写点什么

软件测试 / 测试开发丨 Python 数据结构与算法

作者:测试人
  • 2023-09-05
    北京
  • 本文字数:1024 字

    阅读完需:约 3 分钟

免费领取:测试资料+测试用例+简历模板+测试文档

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/26451

堆栈

数组和列表暴露了太多的接口,虽然操作灵活,但不可控,容易出错。如果在插入位置写错数据将会改变整个数组的内容

栈是**操作受限的列表

栈只能在一端进行删除和插入操作,遵循先进后出后进先出的原则

  • 数组栈

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)

发布于: 刚刚阅读数: 4
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Python 数据结构与算法_Python_测试人_InfoQ写作社区