鏈表手寫

手寫下單鏈表&幾個簡單功能。

# coding:utf-8

class Node(object):
    def __init__(self, val):
        self.val = val
        self.next = None


class List(object):
    def __init__(self):
        self.head = None

    def add(self, val):
        node = Node(val)
        if not self.head:
            self.head = node
        else:
            cur = self.head
            while cur.next:
                cur = cur.next
            cur.next = node

    def dele(self, val):
        """delete element"""
        cur = self.head
        if val == self.head.val:  # just head node
            self.head = self.head.next
        else:
            pre = None
            while cur.next:
                if cur.val != val:
                    pre = cur; cur = cur.next  # continue scan the link
                else:
                    pre.next = cur.next; break  # delete it and break loop

    def insert(self, n, val):
        """指定位置添加元素"""
        node = Node(val)
        if n == 0:
            node.next = self.head; self.head = node  # 剛好是頭部
        else:
            pre = None;
            cur = self.head
            for i in range(n):
                if cur.next:
                    pre = cur;
                    cur = cur.next
                else: # 超出鏈長度, 加在最後
                    cur.next = node; break
            # 鏈中指定位置添加
            pre.next = node
            node.next = cur


if __name__ == "__main__":
    l1 = List()
    for i in range(13):
        l1.add(i)
    l1.dele(2)
    l1.insert(2, 10)
    cur = l1.head
    while cur:
        print(cur.val)
        cur = cur.next
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章