循环单链表 -- python实现

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

带尾结点引用的单链表示意图:
循环单链表 -- python实现_第1张图片
本代码中使用的是图b)

代码实现:

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

class LNode():
    """结点类"""
    def __init__(self, elem, next_=None):  #存放元素数据
        self.elem = elem  #next是下一个节点的标识
        self.next = next_


class Loop_LinkList():
    def __init__(self):  # 创建空链表
        self._rear = None

    def is_empty(self):  # 判断链表是否为空
        return self._rear is None

    def prepend(self, elem):  # 在表头插入数据
        p = LNode(elem)
        if self._rear is None:  # 空表
            p.next = p
            self._rear = p
        else:
            p.next = self._rear.next
            self._rear.next = p

    def append(self, elem):  # 在尾部添加一个节点
        self.prepend(elem)
        self._rear = self._rear.next

    def pop(self):  # 删除表头结点并返回这个结点里的数据
        if self._rear is None:  # 空表
            print("表为空!")
            return
        p = self._rear.next
        if self._rear is p:  # 只有一个元素
            self._rear = None
        else:
            self._rear.next = p.next
        return p.elem

    def printal(self):  # 输出链表内容
        if self.is_empty():  # 空表
            return
        p = self._rear.next
        while True:
            print(p.elem)
            if p is self._rear:
                break
            p = p.next

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