def partation(ll, K): """ Kの大きさで分割して並び替えたものを返す。 """ n = ll left, right = Node(), Node() while True: if n.data < K: left.appendToTail(n.data) else: right.appendToTail(n.data) if n.next == None: break n = n.next # これだと宣言の関係上一番始めがNoneになっているのでとりのぞいてから連結する right = right.get_Nth_node(1) left = left.get_Nth_node(1) left.appendNodeToTail(right) return left
isunique = {} while n != None: if n.data in isunique.keys(): prev.next = n.next # uniqueじゃなければprevを動かさない else: # uniqueだったらprevを一個ずれす prev = n isunique[n.data] = True n = n.next # 次のnodeについて考える if __name__ == "__main__": ls = Node(1) ls.appendToTail(2) ls.appendToTail(3) ls.appendToTail(5) # opps ls.appendToTail(5) ls.appendToTail(6) ls.appendToTail(7) ls.appendToTail(2) # opps ls.appendToTail(9) ls.appendToTail(10) ls.appendToTail(10) # opps ls.appendToTail(2) # opps ls.appendToTail(7) # opps ls.printls() remove_dups(ls) ls.printls()
def remove_this_node(node): n = node while n.next != None: n.data = n.next.data # 終端処理、最後のノードを一個消す。 if n.next.next == None: n.next = None else: # 終端じゃない場合は次のノードの処理に n = n.next if __name__ == "__main__": ls = Node(1) ls.appendToTail(2) ls.appendToTail(3) ls.appendToTail(4) ls.appendToTail(5) ls.appendToTail(6) ls.appendToTail(7) ls.appendToTail(8) ls.appendToTail(9) ls.appendToTail(10) ls.printls() delnode = ls.get_Nth_node(5) remove_this_node(delnode) ls.printls()
if n.data < K: left.appendToTail(n.data) else: right.appendToTail(n.data) if n.next == None: break n = n.next # これだと宣言の関係上一番始めがNoneになっているのでとりのぞいてから連結する right = right.get_Nth_node(1) left = left.get_Nth_node(1) left.appendNodeToTail(right) return left if __name__ == "__main__": ls = Node(1) ls.appendToTail(10) ls.appendToTail(3) ls.appendToTail(4) ls.appendToTail(5) ls.appendToTail(6) ls.appendToTail(5) ls.appendToTail(8) ls.appendToTail(9) ls.appendToTail(10) ls.printls() new = partation(ls, 5) new.printls()