我更喜欢带有api和文档的链表

another-linked-list的Python项目详细描述


另一个链接列表


目录


这是什么?

  • 双链表的一种不可理解的实现

为什么要创造它?

  • 我不喜欢其他链接列表的api或文档。我也是新来的 对python来说,这是一个很好的学习方法。

简单用法

fromanother_linked_listimportLinkedList# create a list with three nodesll=LinkedList(["a","b","d"])# get the node with element "b"bNode=ll.findFirstNode("b")# insert "c" after bNodell.insertAfter(bNode,"c")print(list(ll))# prints ['a', 'b', 'c', 'd']

api

类链接列表([元素列表])

  • 链表包含一个nodes列表。每个节点包含一个元素 (值)以及指向上一个和下一个节点的指针。最多 部分方法旨在使您能够更深入地处理元素 因为那是我的用例。这个设计决定可能会改变 今后要更加集中在节点周围。
  • 除非另有说明,否则所有方法都返回self
  • 所有采用list参数的方法也接受linkedlist的实例
  • 在下面的所有代码示例中,假设llLinkedList(["a", "c"])
  • 开头
  • 实施的内部方法是
    • _复制
    • _ iter(遍历元素,not节点)
    • _长度
    • _反转

属性

第一个节点:node
print(ll.firstNode.element)# a
最后一个节点:node
print(ll.lastNode.element)# c

方法

附加(元素)
ll.append('d')print(list(ll))# ['a', 'c', 'd']
copy()=>;链接列表
附录(列表)
ll.appendAll(['d','e'])print(list(ll))# ['a', 'c', 'd', 'e']
findfirstnode(元素)=>;node
cNode=ll.findFirstNode(['c'])print(cNode.element)# c
插入后(node,元素)
ll.insertAfter(ll.firstNode,'b')print(list(ll))# ['a', 'b', 'c']
插入列后(node,列表)
ll.insertAllAfter(ll.firstNode,['b','d'])print(list(ll))# ['a', 'b', 'd', 'c']
插入前(node,列表)
ll.insertAllBefore(ll.lastNode,['b','d'])print(list(ll))# ['a', 'b', 'd', 'c']
插入前(node,元素)
ll.insertBefore(ll.lastNode,'b')print(list(ll))# ['a', 'b', 'c']
准备(元素)
ll.prepend('z')print(list(ll))# ['z', 'a', 'c']
前置(列表)
ll.prependAll(['y','z'])print(list(ll))# ['y', 'z', 'a', 'c']
移除第一个元素(元素)
ll.removeFirstElement('c')print(list(ll))# ['a']
移除节点(node
ll.removeNode(ll.firstNode)print(list(ll))# ['c']

节点

  • 节点只是具有三个属性的simplename空间的实例
    • element:<;可以是任何东西>;
    • 下一个:节点
    • 上一个:节点
print(ll.firstNode.element)# aprint(ll.firstNode.next_.element)# cprint(ll.lastNode.previous.element)# aprint(ll.firstNode.previousisNone)# True

测试

## you must have poetry installed#
$ poetry shell
$ poetry install
$ python runTests.py

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java对ServiceListener和ServiceTracker调用提供了哪些排序保证?   java找不到方法格式的符号(DateTimeFormatter)?   mysql有没有一种方法可以将TCPDump输出到一个文件中,并用Java对其进行过滤,每5秒钟用新数据覆盖一次该文件?   java如何最好地配置用户上传支持文件的上传位置   java我在Android上使用OData4j,我无法获取实体   JPA实体关系简单示例中的java获取错误   JAVANoClassDefFoundError:安卓。应用程序。用法安卓中的UsageStatsManager   Eclipse中javaoo代码分析   java MethodVisitor抛出类格式错误   java为什么在从ViewModel调用时,改型排队不起作用?   调试小程序Java控制台:删除跟踪消息大小限制   java复杂安卓活动动画   java如何在使用JDOM2解析XML时忽略注释内容   java通过循环创建文本字段   即使在bufferedwriter关闭后也未发现java文件异常   单链表恢复中的java错误