欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python单链表的简单实现方法

程序员文章站 2022-06-08 21:05:40
本文实例讲述了python单链表的简单实现方法,分享给大家供大家参考。具体方法如下: 通常来说,要定义一个单链表,首先定义链表元素:element.它包含3个字段: l...

本文实例讲述了python单链表的简单实现方法,分享给大家供大家参考。具体方法如下:

通常来说,要定义一个单链表,首先定义链表元素:element.它包含3个字段:

list:标识自己属于哪一个list
datum:改元素的value
next:下一个节点的位置

具体实现代码如下:

class linkedlist(object):
  
  class element(object):
    
    def __init__(self,list,datum,next): 
      self._list = list
      self._datum = datum 
      self._next = next

    def getdatum(self): 
      return self._datum

    datum = property(
      fget = lambda self: self.getdatum())

    def getnext(self):
      return self._next

    next = property(
      fget = lambda self: self.getnext())

  def __init__(self):

    self._head = none
    self._tail = none
  def gethead(self):
    return self._head 
  head = property(
    fget = lambda self: self.gethead()) 
  def prepend(self,item):
    tmp = self.element (self,item,self._head)
    if self._head is none:
      self._tail = tmp 
    self._head = tmp 

  def insert(self, pos, item):
    i = 0
    p = self._head
    while p != none and i < pos -1:
      p = p._next
      i += 1
    if p == none or i > pos-1:
      return -1
    tmp = self.element(self, item, p._next)
    p._next = tmp
    return 1
  def getitem(self, pos):
    i = 0
    p = self._head
    while p != none and i < pos -1:
      p = p._next
      i += 1
    if p == none or i > post-1:
      return -1
    return p._datum
  def delete(self, pos):
    i = 0
    p = self._head
    while p != none and i < pos -1:
      p = p._next
      i += 1
    if p == none or i > post-1:
      return -1
    q = p._next
    p._nex = q._next
    datum = p._datum
    return datum
  def setitem(self, pos, item):
    i = 0
    p = self._head
    while p != none and i < pos -1:
      p = p._next
      i += 1
    if p == none or i > post-1:
      return -1
    p._datum = item
    return 1
  def find(self, pos, item):
    i = 0
    p = self._head
    while p != none and i < pos -1:
      if p._datum == item:
        return 1
      p = p._next
      i += 1
    return -1
  def empty(self):
    if self._head == none:
      return 1
    return 0
  def size(self):
    i = 0
    p = self._head
    while p != none and i < pos -1:
      p = p._next
      i += 1
    return i

  def clear(self):
    self._head = none
    self._tail = none

test = linkedlist()
test.prepend('test0')
print test.insert(1, 'test')
print test.head.datum
print test.head.next.datum

希望本文所述对大家的python程序设计有所帮助。