我试图在关于列表链接的计算机科学课上回顾一些以前的作业问题。这个问题真的让我很困扰我应该如何解决这个问题,它希望我实现一个" Stack"和一个"队列"使用我的Linked List类继续上课,我做了一段时间。这就是所有问题状态,所以我必须使用我的ListNode类。
class ListNode(object):
def __init__(self, item = None, link = None):
'''creates a ListNode with the specified data value and link
post: creates a ListNode with the specified data value and link'''
self.item = item
self.link = link
我如何制作可以推送和弹出的堆栈类?我的代码会是这样吗还是我会离开?
from ListNode import ListNode
class LinkedStack(object):
def __init__(self, ListNode.item):
stack = []
def push(self,item):
self.append(ListNode.item)
self.size += 1
def isEmpty(self):
return not self
我只是根据我在此网页上看到的示例编写代码。有没有帮助根据链表创建一个简单的堆栈类?出于某种原因,它希望我使用这个给我的类来测试我的代码。
def isPalindrome(phrase):
forward = Queue()
reverse = Stack()
extractLetters(phrase, forward, reverse)
return sameSequence(forward, reverse)
#------------------------------------------------------------
def extractLetters(phrase, q, s):
for ch in phrase:
if ch.isalpha():
ch = ch.lower()
q.enqueue(ch)
s.push(ch)
#------------------------------------------------------------
def sameSequence(q, s):
while q.size() > 0:
ch1 = q.dequeue()
ch2 = s.pop()
if ch1 != ch2:
return False
return True
感谢提前帮助我的人!
答案 0 :(得分:1)
使用python list创建堆栈的一种方法是使用list" append&流行功能。
示例堆栈类:
class stack(object):
def __init__(self):
self.data = []
def pop(self):
if self.isEmpty():
print "Nothing to remove from stack"
return None
return self.data.pop()
def push(self, item):
self.data.append(item)
def isEmpty(self):
if len(self.data) == 0:
return True
return False
s = stack()
s.push(1)
s.push(2)
s.push(3)
print s.pop()
print s.pop()
print s.pop()
print s.pop()
输出:
3
2
1
Nothing to remove from stack
None