Python 单链表的实现

  # -*- coding:utf-8 -*-
  #构建节点
  class Node(object):
    def __init__(self,elem):
      self.elem = elem
      self.next = None

  #构建链表
  class SingleLinkList():
    def __init__(self,node = None):
      self._head = node

    def is_empty(self):
      return self._head == None

    def length(self):
      #cur游标,用来移动遍历节点
      cur = self._head
      count = 0
      while cur != None:
        count += 1
        cur = cur.next
      return count

    #遍历链表
    def travel(self):
      cur = self._head
      while cur != None:
        print(cur.elem,end = ' ')
        cur = cur.next
      print()

    #链表头添加
    def add(self,item):
      cur = self._head
      node = Node(item)
      cur,node.next = node,cur
      self._head = cur

    def append(self,item):
      node = Node(item)
      if self._head == None:
        self._head = node
      else:
        cur = self._head
        while cur.next != None:
          cur = cur.next
        cur.next = node

    def insert(self,pos,item):
      if pos <= 0:
        self.add(item)
      elif pos > (self.length()-1):
        self.append(item)
      else:
        pre = self._head
        count = 0
        while count < (pos-1):
          count += 1
          pre = pre.next
        node = Node(item)
        node.next = pre.next
        pre.next = node

    def remove(self,item):
      cur = self._head
      pre = None
      while cur != None:
        if cur.elem == item:
          if cur == self._head:
            self._head = cur.next
          else:
            pre.next = cur.next
          return
        else:
          pre,cur = cur,cur.next

    #查找数据是否存在
    def search(self,item):
      cur = self._head
      while cur != None:
        if cur.elem == item:
          return True
        cur = cur.next
      return False

  if __name__ == '__main__':
    newList = SingleLinkList()

猜你喜欢

转载自www.cnblogs.com/dalun101/p/9369769.html