python list是数组还是链表实现的_python 数据结构 list和链表实现栈的三种方法
MAX_SIZE = 100
classMyStack1(object):"""模擬棧"""
def __init__(self):
self.items=[]
self.size=0defis_empty(self):"""判斷是否為空"""
return self.size ==0defsize(self):"""返回棧的大小"""
returnself.sizedefpush(self, item):"""壓棧(加入元素)"""self.items.append(item)
self.size+= 1
defpop(self):"""彈棧(彈出元素)"""
if self.size < MAX_SIZE and self.size >=0:
self.size-= 1
returnself.items.pop()else:print("棧已經為空")returnNonedefpeek(self):if notself.is_empty():return self.items[self.size-1]else:returnNonedef __str__(self):returnstr(self.items)classMyStack2(object):"""模擬棧"""
def __init__(self):
self.items=[]
self.size=0defis_empty(self):"""判斷是否為空"""
return self.size ==0defsize(self):"""返回棧的大小"""
if self.size <=MAX_SIZE:returnself.sizedefpush(self, item):"""壓棧(加入元素)"""
if self.size <=MAX_SIZE:
self.items.insert(0, item)
self.size+= 1
defpop(self):"""彈棧(彈出元素)"""
if self.size > 0 and self.size <=MAX_SIZE:
self.size-= 1
returnself.items.pop(0)else:print("棧已經為空")returnNonedefpeek(self):"""返回棧頂元素"""
if notself.is_empty():returnself.items[0]else:returnNonedef __str__(self):returnstr(self.items)classNode():def __init__(self, data, next=None):
self.data=data
self.next=nextdef __repr__(self):returnstr(self.data)classNodeStack():def __init__(self):
self.node=Node(None)
self.head=self.node
self.size=0defis_empty(self):return self.size ==0defget_size(self):returnself.sizedefpush(self, data):
node=Node(data)
node.next=self.head.next
self.head.next=node
self.size+= 1
defpop(self):if notself.is_empty():
current=self.head.nextif self.get_size() == 1:
self.head.next=Noneelse:
self.head.next=self.head.next.next
self.size-= 1
returncurrent.dataelse:raise IndexError('pop from a empty stack')defpeek(self):if notself.is_empty():returnself.head.next.dataelse:raise IndexError('stack is empty')def __repr__(self):
stack_list=[]
current=self.headwhile current.next is notNone:
stack_list.append(current.next.data)
current=current.nextreturnstr(stack_list)__str__ = __repr__
deftest(obj):
i=obj()for x in range(0,6):
i.push(x)print(i)
i.pop()print(i, i.peek(), i.size)if __name__ == "__main__":
test(MyStack1)
test(MyStack2)
test(NodeStack)
總結
以上是生活随笔為你收集整理的python list是数组还是链表实现的_python 数据结构 list和链表实现栈的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机组成原理201501,计算机组成原
- 下一篇: idea端口占用解决记录