测试链表的Python实现

本文介绍了如何基于《Learn More Python The Hard Way》一书的Exercise 13来实现单链表,包括节点定义、增删读改操作,并使用nosetests进行基础测试。目的是提升Python编程技能。
摘要由CSDN通过智能技术生成

思路源于Learn more python in hard way一书的Exercise 13: Single Linked Lists一节;

效率应该比较低,就是为了练练脑而已;

测试也是最基础的测试,使用nosetests与pycharm。

把要实现的功能列出来

  1. 链表的基本结构,即节点;
  2. 增删读改,看了看书中的思路,发现“改”是空缺的。
功能 函数名
节点 __init__(self, value, nxt)
打印节点 __repr__(self)
在末尾插入 push(self, obj)
在开始插入 shift(self, obj)
删除末尾一项 pop(self)
删除开始一项 unshift(self)
删除匹配项 remove(self, obj)
读取(不移除,下同)第一项 first(self)
读取最后一项 last(self)
读取链表长度 count(self)
读取第index + 1项 get(self, index)
打印链表 dump(self, mark=None)

写出类的框架

节点

class SingleLinkedListNode(object):

    def __init__(self, value, nxt):
        self.value = value
        self.next = nxt

    def __repr__(self):
        nval = self.next and self.next.value or None
        return f"[{self.value}:{repr(nval)}]"
    

增删读改

class SingleLinkedList(object):

    def __init__(self):
        self.begin = None
        self.end = None

    def push(self, obj):
        """Appends a new value on the end of the list."""

    def pop(self):
        """Removes the last item and returns it."""

    def shift(self, obj):
        """Another name for push."""

    def unshift(self):
        """Removes the first item and returns it."""

    def remove(self, obj):
        """Finds a matching item and removes it from the list."""

    def first(self):
        """Returns a *reference* to the first item, does not remove."""

    def last(self):
        """Returns a reference to the last item, does not remove."""

    def count(self):
        """Counts the number of elements in the list."""

    def get(self, index):
        """Get the value at index."""

    def dump(self, mark=None):
        """Debugging function that dumps the contents of the list."""
        

链表测试

sllist_test.py

from .sllist import *
# from ex13chao import *

def test_push():
    colors = SingleLinkedList()
    colors.push("Pthalo Blue")
    assert colors.count() == 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值