class Node:
    Node *prev
    Node *next
    key

class LinkedList:
    Node *sentinel  # 哨兵

    # 初始化為空串列
    init():
        sentinel ← 產生節點
        sentinel.next ← sentinel  # 指向自己
        sentinel.prev ← sentinel  # 指向自己

    # data 插入資料
    insert(data):
        # 產生節點並指定資料內容及指標
        Node *x ← 產生節點
        x.key ← data # 設定資料內容
        x.next ← sentinel.next
        x.prev ← sentinel
        # 設定哨兵及原本位於最前端的節點指標
        sentinel.next.prev ← x
        sentinel.next ← x

    # 尋找資料內容為 k 的節點
    listSearch(k):
        Node *cur ← sentinel.next # 從哨兵正後方的元素開始追蹤
        while cur ≠ sentinel and cur.key ≠ k:
            cur ← cur.next
        return cur

    deleteNode(Node *t):
        if t = sentinel: return # 若 t 為哨兵則不進行處理
        t.prev.next ← t.next
        t.next.prev ← t.prev
        釋放 t 的記憶體

    # 將資料內容為 k 的節點刪除
    deleteKey(k):
        deleteNode(listSearch(k)) # 將取得的節點刪除