单向链表的python实现

    xiaoxiao2023-10-13  160

    class Node(object): def __init__(self,elem): self.elem = elem self.next = None #属性 class SingleLinkList(object): def __init__(self,node = None): self._head = node #一个单链表的私有方法头结点指向空 def is_empty(self): return self._head ==None def length(self): 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 append(self,item): node = Node(item) if self.is_empty(): self._head = node else: Cur = self._head while Cur.next != None: Cur = Cur.next Cur.next = node def add(self,item): node = Node(item) node.next = self._head self._head = node def insert(self,pos,item): node = Node(item) cur = self._head if pos<=0: self.add(item) return elif pos > self.length(): self.append(item) else: curpos = 0 while curpos != pos: curpos+=1 pre = cur cur = cur.next node.next = cur pre.next = node def Search(self,item): cur = self._head while cur != None: if cur.elem == item: return True else: cur = cur.next return False def remove(self,itme): pre = None cur = self._head if self.Search(itme): while cur != None: if cur.elem == itme: if cur == self._head: self._head = cur.next else: pre.next = cur.next break else: pre = cur cur = cur.next else: raise Exception('Not include !!!')

    相对于 顺序表,链表的优点就是可以不要求内存连续。可以有效利用内存。

    最新回复(0)