1. 程式人生 > >單向連結串列(Python)

單向連結串列(Python)

以下為結點的定義:

class Node():
    def __init__(self,value,next = None):
        self.value = value
        self.next = next
length = 0                                      #連結串列的長度,規定只有一個頭結點時長度為0

判斷連結串列是否為空:

def IsEmpty():
    return length == 0

將結點Node插入到head之後:

def HeadInsert(head,node):  
    node.next = head.next
    head.next = node
    global length
    length += 1

將結點插入到連結串列尾:

def TailInsert(head,node):                         
    p = head
    while p.next != None:
        p = p.next
    p.next = node
    global length
    length += 1

給一個結點,將新結點插入到給定結點之前:

def NodeInsert(oNode,node):                  
    node.next = oNode.next
    oNode.next = node
    node.value,oNode.value = oNode.value,node.value
    global length
    length += 1

刪除第index個結點:

def Delete(head,index):       
    global length
    if index <= 0 or index > length:
        print('index輸錯了。')
    else:
        p = head
        i = 1
        while i != index:
            p = p.next
            i += 1
        p.next = p.next.next
        length -= 1

快慢指標法找到連結串列的中間節點:

def FindMid(head): 
    f = head
    s = head
    index = 0
    while f.next != None and f.next.next != None:
        f = f.next.next
        s = s.next
        index += 1
    return index