如何在 Python 中将双向链表实现到我的树结构中?
How can I implement doubly linked lists into my tree structure in Python?
所以我正在尝试使用 python 表示一个 XML 文件。我已经设法做到了。但是我树中的每个子节点都必须是双向链接的,我不知道该怎么做。我在网上找到了一些代码示例,但它们都使用 类 并且教授不希望我们使用 类。这是我的代码:
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
import xml.etree.ElementTree as etree
def create_tree(): #This function creates the root element of my tree
n = input("Enter your root Element: ")
root = Element(n)
tree = ElementTree(root)
print(etree.tostring(root))
return root
def add_child():
root = create_tree()
new = True
while new == True:
ask = input("If you wish to add a new child type 'yes', else type something else: ")
if ask == 'yes':
n = input("Enter the name of the node: ") #This block of code creates a child and appends it to the root element
node = Element(n)
root.append(node)
print(etree.tostring(root))
else:
break
return etree.tostring(root)
add_child()
对于那些想知道的人,这个项目的目的是创建一个具有无限分支的有根树。我希望一旦我可以实现双向链表,我就能够在子节点中添加子节点。
您应该能够使用列表实现链表。你可以定义
每个元素作为一个列表,包含元素本身、它之前的项目和它之后的项目。如果列表分别包含前一个节点、下一个节点和元素本身,并且头部存储在 head
中,则将 newElement
附加到列表开头的语法如下:
newNode = [None,head,newElement]
head[0] = newNode
head = newNode
所以我正在尝试使用 python 表示一个 XML 文件。我已经设法做到了。但是我树中的每个子节点都必须是双向链接的,我不知道该怎么做。我在网上找到了一些代码示例,但它们都使用 类 并且教授不希望我们使用 类。这是我的代码:
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
import xml.etree.ElementTree as etree
def create_tree(): #This function creates the root element of my tree
n = input("Enter your root Element: ")
root = Element(n)
tree = ElementTree(root)
print(etree.tostring(root))
return root
def add_child():
root = create_tree()
new = True
while new == True:
ask = input("If you wish to add a new child type 'yes', else type something else: ")
if ask == 'yes':
n = input("Enter the name of the node: ") #This block of code creates a child and appends it to the root element
node = Element(n)
root.append(node)
print(etree.tostring(root))
else:
break
return etree.tostring(root)
add_child()
对于那些想知道的人,这个项目的目的是创建一个具有无限分支的有根树。我希望一旦我可以实现双向链表,我就能够在子节点中添加子节点。
您应该能够使用列表实现链表。你可以定义
每个元素作为一个列表,包含元素本身、它之前的项目和它之后的项目。如果列表分别包含前一个节点、下一个节点和元素本身,并且头部存储在 head
中,则将 newElement
附加到列表开头的语法如下:
newNode = [None,head,newElement]
head[0] = newNode
head = newNode