美文网首页
python 链表

python 链表

作者: 云之彼端09 | 来源:发表于2018-10-22 17:06 被阅读0次
thinking:头节点 尾节点 边界条件
 使用临时节点 存放数据 改变指针 
 遍历 
class Node(object):
    def __init__(self, value=None, next=None):
        self.value = value
        self.next = next


class Linkedlist(object):
    '''
    [root]-[node0]-[node1]
    '''

    def __init__(self, maxsize=None):
        self.maxsize = maxsize
        self.root = Node()
        self.tailnode = None
        self.length = 0

    def __len__(self):
        return self.length

    def append(self, value):
        if self.maxsize is not None and len(self) > self.maxsize:
            raise Exception('linkedList is Full')
        node = Node(value)
        tailndoe = self.tailnode
        if tailndoe is None:
            self.root.next = node
        else:
            tailndoe.next = node
        self.tailnode = node
        self.length += 1

    def iter_node(self):
        curnode = self.root.next
        while curnode is not self.tailnode:
            yield curnode
            curnode = curnode.next
        if curnode is not None:
            yield curnode

    def __iter__(self):
        for node in self.iter_node():
            yield node.value

    def remove(self, value):
        ''' 删除包含值的一个节点,将其前一个节点的next 指向下一个节点即可'''
        prevnode = self.root
        for curnode in self.iter_node():
            if curnode.value == value:
                prevnode.next = curnode.next
                if curnode is self.tailnode:
                    self.tailnode = prevnode
                del curnode
                self.length -= 1
                return 1  # 删除成功
            else:
                prevnode = curnode
        return -1  # 删除失败

    def find(self, value):
        """ 查找一个节点,返回序号,从 0 开始
        :param value:
        """
        index = 0
        for node in self.iter_node():
            if node.value == value:
                return index

    def clear(self):
        for node in self.iter_node():
            del node
        self.root.next = None
        self.length = 0
        self.tailnode = None


        

相关文章

网友评论

      本文标题:python 链表

      本文链接:https://www.haomeiwen.com/subject/xnigzftx.html