使用链接列表实现堆栈和队列

时间:2015-03-12 20:25:54

标签: python linked-list stack queue

我试图在关于列表链接的计算机科学课上回顾一些以前的作业问题。这个问题真的让我很困扰我应该如何解决这个问题,它希望我实现一个" 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

感谢提前帮助我的人!

1 个答案:

答案 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