如何在Python中实现链表??

我对Python编程是新手。
有没有人能帮我写一个简单的Python程序,创建一个单链表,然后打印其中的条目?
我知道用C怎么做??但是Python不支持指针,那么如何解决这个问题呢?

# 回答1



实际上,python变量可以'指向'事物,所以在某种意义上,python确实支持指针。下面是一个示例程序,它用数字1到5填充一个列表。
列表中的元素如下所示:(VALUE,POINTER_TO_NEXT_ELEMENT)。然后,它打印列表的内容

选择 | 换行 | 行号
  1. list = []
  2. list.append([1,0])
  3. current_element = list[0]
  4.  
  5. # build a linked list 1,2,3,4,5
  6.  
  7. for i in range(5):
  8.  list.append([i+2,0])
  9.  current_element[1] = list[i+1]
  10.  current_element = list[i+1]
  11.  
  12. # traverse the list
  13. # and print it to screen.
  14.  
  15. current_element = list[0]
  16. while(current_element[1] != 0):
  17.  print current_element[0]
  18.  current_element = current_element[1]
  19.  

希望这是有意义的
-k

# 回答2


没有必要实现链表,因为Python已经有了内置的列表数据结构。

选择 | 换行 | 行号
  1. myList = []
  2. myList.append("this")
  3. myList.append("is")
  4. myList.append("the")
  5. myList.append("list")
  6. for item in myList:
  7.     print item
  8.  
# 回答3


嗯……但是你不会有一个链表:)
# 回答4


嘿,好样的。
请在发布源代码时使用代码标签:
[代码=蟒蛇]
这里有一段Python代码。
[/code]
# 回答5


当然,你并不是在告诫巨蟒论坛的一位专家。
你的意思一定是恶意。?
# 回答6


也许是这样的.

选择 | 换行 | 行号
  1. class Node:
  2.     def __init__(self,value):
  3.         self.data = value
  4.         self.next = 0
  5.  
  6. class List:
  7.     def __init__(self):
  8.         self.firstNode = Node(0)
  9.  
  10.     def __ShowNodeData(self,aNode):
  11.         if aNode.next != 0:
  12.            print aNode.data
  13.            self.__ShowNodeData(aNode.next)
  14.  
  15.     def Dump(self):
  16.         self.__ShowNodeData(self.firstNode)
  17.  
  18.     def InsertAfter(self,aNode,aNewNode):
  19.         aNewNode.next = aNode.next
  20.         aNode.next = aNewNode
  21.  
  22.     def InsertBeginning(self,aNewNode):
  23.         aNewNode.next = self.firstNode
  24.         self.firstNode = aNewNode    
  25.  
  26. nodeA = Node("A")
  27. nodeB = Node("B")
  28. nodeC = Node("C")
  29. nodeD = Node("D")
  30.  
  31. aList = List()
  32.  
  33. aList.InsertBeginning(nodeB)
  34. aList.InsertAfter(nodeB,nodeD)
  35. aList.InsertAfter(nodeD,nodeC)
  36. aList.InsertAfter(nodeC,nodeA)
  37.  
  38. aList.Dump()
  39.  
  40.  

B类
D
C
一个

# 回答7


@MojaveKid
嗨,MojaveKid--这太好了!谢谢你这么做!
我现在正在做一个公共领域的应用程序,它需要一些链接列表的代码,所以我想-我可以在我的应用程序中使用这个吗?(你会被认为是这本书的作者,不用担心…:))。
再次感谢-暂时再见-
-拿铁咖啡
# 回答8


啊...当然你可以用它..。
然而,你必须免费教每一位可能还会询问如何用Python语言实现链表的Python新手……否则就不能成交……呵呵呵
# 回答9


@MojaveKid
呵呵..。我觉得没问题..。:)非常感谢-这是一段非常好的代码!
暂时再见-
-拿铁咖啡
# 回答10


@kudos
[i+2]中i+的用途是什么?我运行了代码并删除了i+,为什么它连续打印2?

标签: python

添加新评论