带尾结点引用的单链表 -- python实现

python实现带尾结点引用的单链表,后续会不断更新。
参考资料:《数据结构与算法——Python原因描述》-- 裘宗燕

带尾结点引用的单链表示意图:
带尾结点引用的单链表 -- python实现_第1张图片
代码实现方式是从单链表继承,单链表的代码参考这篇文章:
单链表 – python实现

代码实现:

# -*- coding: utf-8 -*-
"""
Created on 2019.9.22
author: 双皮奶
"""

import Single_LinkList as SLList


class Single_LinkList_1(SLList.Single_LinkList):
    def __init__(self):  # 创建空链表
        SLList.Single_LinkList.__init__(self)  # 用单链表的初始化
        self._rear = None  # 加入尾结点引用域

    def prepend(self, elem):  # 重新定义prepend()
        if self._head is None:  # 表空
            self._head = SLList.LNode(elem, self._head)
            self._rear = self._head
        else:
            self._head = SLList.LNode(elem, self._head)

    def append(self, elem):  # 重新定义append()
        if self._head is None:  # 表空
            self._head = SLList.LNode(elem, self._head)
            self._rear = self._head
        else:
            self._rear.next = SLList.LNode(elem)
            self._rear = self._rear.next

    # pop()不需要重新定义
    def pop_last(self):  # 重新定义pop_last()
        if self._head is None:  # 判断表是否为空
            print("表为空!")
            return
        p = self._head
        if p.next is None:  # 表中只有一个元素
            e = p.elem
            self._head = None
            return e
        while p.next.next is not None:  # 知道p.next是最后结点
            p = p.next
        e = p.next
        p.next = None
        self._rear = p
        return e

你可能感兴趣的:(数据结构python实现)