<p>你的代码里逻辑错误太多了,我记不清了。。在</p>
<p>以下修改后的代码运行良好(基于我的基本测试),请执行<code>diff</code>并尝试查看原始代码中的错误:</p>
<pre><code>def bracketCheck(myList):
checkmyList = LinkedList()
opencount=0
closecount=0
i=0
isEqual = True
while(i < myList.length):
i=i+1
if myList.getNodeAtPosition(i-1).cargo == '(' or myList.getNodeAtPosition(i-1).cargo == '{' or myList.getNodeAtPosition(i-1).cargo == '[':
checkmyList.addLast(myList.getNodeAtPosition(i-1))
opencount = opencount + 1
if myList.getNodeAtPosition(i-1).cargo == ')':
closecount = closecount + 1
if checkmyList.getLast().__str__() == openbrackets[0]:
checkmyList.removeLast()
else:
isEqual = False
if myList.getNodeAtPosition(i-1).cargo == '}':
closecount = closecount + 1
if checkmyList.getLast().__str__() == openbrackets[1]:
checkmyList.removeLast()
else:
isEqual = False
if myList.getNodeAtPosition(i-1).cargo == ']':
closecount = closecount + 1
if checkmyList.getLast().__str__() == openbrackets[2]:
checkmyList.removeLast()
else:
isEqual = False
'''print checkmyList'''
print opencount
print closecount
if isEqual == False:
print "an extra is missing."
else:
print "win!"
print "Enter myList:"
myList = LinkedList()
while input != "done":
input = raw_input()
if input == "done":
break
myList.addLast(input)
print myList
bracketCheck(myList)
</code></pre>
<p>请记住上面的代码不是python代码,甚至不是“体面的”。在这里您几乎看不到原始代码中的逻辑缺陷。在</p>
<p>如果你想要一个Python的解决方案,请参考@yak的答案。在</p>