Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
        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()