题解 | #从单向链表中删除指定值的节点#
从单向链表中删除指定值的节点
https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f
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) cur = cur.next def add(self,item): node = Node(item) node.next = self._head self._head = node 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 insert(self,pos,item): if pos <= 0: self.add(item) if pos > (self.length()-1): self.append(item) else: pre = self._head count = 0 node = Node(item) while count <(pos - 1): count += 1 pre = pre.next 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 break else: pre = cur cur = cur.next def search(self,item): cur = self._head while cur != None: if cur.elem == item: return True else: cur = cur.next return False def insert_m_after_n(self,m,n): cur = self._head while cur != None: if cur.elem == n: if cur.next == None: self.append(m) else: node = Node(m) node.next = cur.next cur.next = node break else: cur = cur.next def zhuanzifuchuan(self): cur = self._head sty = "" while cur != None: sty = sty + str(cur.elem) + " " cur = cur.next return sty if __name__ == "__main__": ll = SingleLinkList() stry = input().split() n = int(stry[0]) ll.add(int(stry[1])) for i in range(n-1): ll.insert_m_after_n(int(stry[i*2+2]),int(stry[i*2+3])) ll.remove(int(stry[-1])) print(ll.zhuanzifuchuan())