#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Node:
def __init__(self,initdata):
self.__data = initdata
self.__next = None
def getData(self):
return self.__data
def getNext(self):
return self.__next
def setData(self,newdata):
self.__data = newdata
def setNext(self,new__next):
self.__next = new__next
class Single_Link:
def __init__(self):
self.head = Node(None)
self.head.setNext(self.head)
def add(self,element):
temp = Node(element)
temp.setNext(self.head.getNext())
self.head.setNext(temp)
def remove(self,element):
prev = self.head
while prev.getNext() != self.head: # 判断一下,头部指针是否已经指向头部实例,此处执行条件为不是空链(如果已经指向,说明已经是空的单链,无法再删除)
cur = prev.getNext() # 获取头部指向的下一个实例链表块
if cur.getData() == element:
prev.setNext(cur.getNext()) # 如果下一个数据就是要删除的,那么把前一个实例指向当前实例指向的实例。
# 当前数据块不是要删除的,就从头部链表开始,一个一个往后查(此处用与不用else都可以)
prev = prev.getNext()
def search(self,element):
cur = self.head.getNext()
while cur != self.head: # 防止空链表,在不是空链表的情况下执行
if cur.getData() == element:
return True
cur = cur.getNext()
return False # 如果整个链表查完都没有该数据,就返回失败
def empty(self):
return self.head.getNext() == self.head
def size(self):
count = 0
cur = self.head.getNext()
while cur != self.head: # 防止空链,在不是空链的情况下进行长度计算
count += 1
cur = cur.getNext()
return count
if __name__ == '__main__':
single_Link = Single_Link() # 创建了一个空循环单链表
print("单链表 single_Link 创建完成")
循环单向链表
admin·2021-07-31·208 次阅读
Comments NOTHING