【发布时间】:2018-05-09 16:24:16
【问题描述】:
我是 Python 编程新手。我的问题是关于链表的,我为链表编写了一个类,我需要做的是有一个函数,其输入作为指向列表头部的参考。 'linked_list.head' 据我了解,linked_list 是相关列表的名称。特别是使用递归,我试图找到列表的长度作为这个函数的输出。这是我的代码,我不太明白在这种情况下如何移动到下一个节点并返回具有递归的节点数。
import re
def special_match(strg, search=re.compile(r'[^A-Za-z.]').search):
return not bool(search(strg))
class node:
def __init__(self, data, next):
self.data = data
self.next = next
def get_data(self):
return self.data
def set_data(self,value):
self.data = value
def get_next_node(self):
return self.next
def set_next_node(self,val):
self.next = val
class linked_list:
def __init__(self):
self.head = None
self.tail = None
self.size = 0
def add_first(self,e):
newest = node(e,None)
newest.next = self.head
self.head = newest
self.size = self.size+1
if self.size == 1:
self.tail = newest
def add_last(self,e):
newest = node(e,None)
if self.size > 0:
self.tail.next = newest
else:
self.head = newest
self.tail = newest
self.size = self.size+1
def remove_first(self):
if self.size == 0:
print('The linked list is empty')
elif self.size == 1:
answer = self.head.data
self.head = None
self.tail = None
self.size -= 1
return answer
else:
answer = self.head.data
self.head = self.head.next
self.size = self.size - 1
return answer
def remove_last(self):
if self.size == 0:
print('The linked list is empty')
elif self.size == 1:
answer = self.tail.data
self.head = None
self.tail = None
self.size -= 1
return answer
else:
temp = self.head
while(temp.next is not None):
temp = temp.next
temp.next = None
def node_number(self,reference):
reference = str(reference)
count = 0
temp = self.head
if special_match(reference) == True:
count =+ 1
temp = temp.next
return self.node_number
else:
print('You have made wrong input')
def printe(self):
curr = self.head
while curr:
print(curr.data)
curr = curr.get_next_node()
if self.size == 0:
print('The list is empty')
【问题讨论】:
-
让这家伙休息一下。他是一个新手,他只是在问一个问题(一个非常微不足道的问题,但它是特定于他的用例的。
-
与其检查当前节点的真实性,不如检查下一个节点的存在。因此,如果 node.next != None,则进入下一个节点。
-
您不需要任何 getter 或 setter。在python中,类和实例属性都是公开的。如果您想建议人们不要弄乱某些类或实例属性,请给他们起一个类似
self._next的名称,其中_表示它更多地供内部使用(但仍可公开访问)。然后,如果您想为该属性提供官方交互,请设置property decorated function。 -
@user2357112 SO 也不鼓励在 cmets 中发布指向 google 的链接。如果您在场外发现可以回答问题的内容,请在答案中发布链接以及相关位的简短摘要。如果关于 SO 的另一个问题已经问过这个问题,则标记为重复。发表评论告诉 OP 到谷歌它不会帮助 OP 或其他任何后来发现这个问题的人寻求帮助。 SO在这里为您提供帮助。不要成为“家庭作业”警察。
-
@user2357112 你建议用谷歌搜索问题的标题+“长度算法”这个词。我只是不明白这对任何人有什么帮助。即使它确实提供了有用的结果,也请选择一个,在答案中进行总结并发布链接。这样每个人都会受益。
标签: python recursion linked-list