美文网首页个人专题
单链表的Python实现

单链表的Python实现

作者: dalalaa | 来源:发表于2018-03-28 12:42 被阅读23次
#链表节点

class LNode:
    def __init__(self,elem,next_ = None):
        self.elem = elem
        self.next_ = next_

#链表

class LList:
    def __init__(self):
        self.head_ = None
    
    #检查是否为空表
    def is_empty(self):
        return self.head_ is None
    
    #在表头插入元素
    def prepend(self,elem):
        self.head_ = LNode(elem,self.head_)
    
    #删除并返回表头数据
    def pop(self):
        if self.head_ is None:
            raise LinkedListUnderFlow('in pop')
        e = self.head_.elem
        self.head_ = self.head_.next_
        return e

    #后端插入
    def append(self,elem):
        if self.head_ is None:
            self.head_ = LNode(elem)
            return #如果头节点为空则赋值给头节点并提前结束
        p = self.head_
        while p.next_ is not None:
            p = p.next_
        p.next_ = LNode(elem)
    
    #删除并返回表末数据
    def pop_last(self):
        if self.head_ is None:
            raise LinkedListUnderFlow("in pop_last")
        p = self.head_
        if p.next_ is None:#如果只有一个元素则操作于pop()一致
            e = p.elem
            self.head_ = None
            return e
        while p.next_.next_ is not None:
            #遍历,直到找到p.next_.next_为None的元素,此时p.next_即为最后一个元素
            p = p.next_
        e = p.next_.elem
        p.next_ = None
        return e
    
    #寻找满足条件的元素,pred为筛选函数
    def find(self,pred):
        p = self.head_
        while p is not None:
            if pred(p.elem):
                return p.elem
            p = p.next_
    
    #对链表元素批量操作,proc为操作函数
    def for_each(self,proc):
        p = self.head_
        while p is not None:
            proc(p.elem)
            p = p.next_
    
    #返回链表中所有元素(以生成器的形式)
    def elements(self):
        p = self.head_
        while p is not None:
            yield p.elem
            p = p.next_
    
    #寻找多个满足条件的元素(以生成器的形式)
    def filter(self,pred):
        p = self.head_
        while p is not None:
            if pred(p.elem):
                yield p.elem
            p = p.next_

相关文章

  • Python数据结构-链表

    自己实现一遍果然感觉不一样 Python实现单链表 Python实现单项循环链表 Python实现双向链表

  • Python--单向链表

    单链表python实现 节点实现 单链表操作 头部插入 尾部添加 在index位置插入 删除结点

  • 线性表之单链表实现

    线性表之单链表实现 实现单链表的初始化、插入、删除等基本运算 实现单链表的输入、输出运算 实现单链表的逆置、归并、...

  • python实现单链表

    链表的定义:链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息...

  • 25_静态单链表的实现

    关键词: 单链表的一个缺点、静态单链表设计思路、静态单链表的继承层次结构、静态单链表的实现思路、静态单链表的实现 ...

  • Python 实现简易版成绩管理系统!

    上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管...

  • Python 实现简易版成绩管理系统

    上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管...

  • Python 实现简易版成绩管理系统!

    上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管...

  • 单链表的Python实现

  • 单链表的python实现

    首先说下线性表,线性表是一种最基本,最简单的数据结构,通俗点讲就是一维的存储数据的结构。线性表分为顺序表和链接表:...

网友评论

    本文标题:单链表的Python实现

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