当前位置:   article > 正文

栈--python篇_python如何创建栈

python如何创建栈

本篇文章使用python实现栈的增、删、改、查、插入、删除

首先,创建一个栈,实现最基本的获取栈的长度、判空、压栈,弹栈功能

  1. # 创建栈
  2. class Stack:
  3. def __init__(self):
  4. self.items = []
  5. def length(self):
  6. return len(self.items)
  7. def push_(self, elem):
  8. return self.items.append(elem)
  9. def pop_(self):
  10. return self.items.pop()
  11. def is_empty(self):
  12. if self.length == 0:
  13. print("empty!")
  14. return 0
  15. else:
  16. return len(self.items)
'
运行

其次,实现增删改查功能

  1. def show_stack(self):#输出栈内元素
  2. for i in range(self.length()):
  3. print(self.items[i])
  4. def insert_index(self, add, elem):#在指定下标处插入指定元素
  5. if add > self.length():#位置不合理
  6. print("Index over the length!")
  7. return -1
  8. else:
  9. self.items.append(self.items[-1])#现将最后一个元素进行拷贝,方便后续操作
  10. #由于range函数的特性,add需要减一,使i可以取得到add后面这个位置的下标
  11. for i in range(self.length() - 1, add - 1, -1):
  12. self.items[i] = self.items[i - 1]
  13. self.items[add - 1] = elem
  14. def search_index(self, add): # 以指定位置查找
  15. if add > self.length():#位置不合理
  16. print("Index over the length!")
  17. return -1
  18. else:
  19. print(self.items[add])
  20. def search_elem(self, elem): # 以指定元素查找
  21. for i in range(self.length()):
  22. if self.items[i] == elem:
  23. print("Find it!")
  24. return i + 1
  25. else:
  26. print("Can not find it!")
  27. return -1
  28. def del_(self, elem):
  29. temp = 0
  30. i = 0
  31. while i < self.length():
  32. if self.items[i] == elem:
  33. temp = i
  34. break
  35. i += 1
  36. #由于上个循环结束后,i等于栈的长度,由此可知,栈内并没有该元素
  37. if i == self.length():
  38. print("Can not find it!")
  39. return -1
  40. for i in range(temp, self.length() - 1):
  41. self.items[i] = self.items[i + 1]

最后,完整的代码以及测试代码如下:

  1. # 创建栈
  2. class Stack:
  3. def __init__(self):
  4. self.items = []
  5. def length(self):
  6. return len(self.items)
  7. def push_(self, elem):
  8. return self.items.append(elem)
  9. def pop_(self):
  10. return self.items.pop()
  11. def is_empty(self):
  12. if self.length == 0:
  13. print("empty!")
  14. return 0
  15. else:
  16. return len(self.items)
  17. def show_stack(self):
  18. for i in range(self.length()):
  19. print(self.items[i])
  20. def insert_index(self, add, elem):
  21. if add > self.length():
  22. print("Index over the length!")
  23. return -1
  24. else:
  25. self.items.append(self.items[-1])
  26. for i in range(self.length() - 1, add - 1, -1):
  27. self.items[i] = self.items[i - 1]
  28. self.items[add - 1] = elem
  29. def search_index(self, add): # 以指定位置查找
  30. if add > self.length():
  31. print("Index over the length!")
  32. return -1
  33. else:
  34. print(self.items[add])
  35. def search_elem(self, elem): # 以指定元素查找
  36. for i in range(self.length()):
  37. if self.items[i] == elem:
  38. print("Find it!")
  39. return i + 1
  40. else:
  41. print("Can not find it!")
  42. return -1
  43. def del_(self, elem):
  44. temp = 0
  45. i = 0
  46. while i < self.length():
  47. if self.items[i] == elem:
  48. temp = i
  49. break
  50. i += 1
  51. if i == self.length():
  52. print("Can not find it!")
  53. return -1
  54. for i in range(temp, self.length() - 1):
  55. self.items[i] = self.items[i + 1]
  56. if __name__ == "__main__":
  57. stack = Stack()
  58. for i in range(10):
  59. stack.push_(i)
  60. print("Push over!")
  61. print("Before:")
  62. stack.show_stack()
  63. print("-----------------------------")
  64. add = int(input("请输入需要插入的位置!"))
  65. elem = int(input("请输入需要插入的元素!"))
  66. stack.insert_index(add, elem)
  67. print("After:")
  68. stack.show_stack()
  69. print("-----------------------------")
  70. num = eval(input("请输入你需要删除的元素!"))
  71. stack.del_(num)
  72. print("Afer del:")
  73. stack.show_stack()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/829615
推荐阅读
相关标签
  

闽ICP备14008679号