Stack_Empty(S) if S.top == 0 return True else return False
Push(S,x) if S.top != n S.top += 1 S[S.top] = x else error "overflow"
出棧 出棧是不用指定元素的, 由於棧只能Pop出最頂端的元素前端
Pop(S) if Stack_Emypty(S) error "underflow" else S.top -= 1 return S[S.top+1]
隊列數組
Queue_Empty(Q) if head == tail && tag return False else if head == tail && !tag return True
入隊數據結構
n 爲 Q的長度 Enqueue(Q,x) if head == tail && tag return "overflow" else { Q[tail++] = x tail %= n tag = 1 }
出棧spa
n 爲 Q的長度 Dequeue(Q) if head == tail && !tag return "underflow" else { head = (head+1) % n tag = 0 }
List_Search(L, k) x = L.head // 從頭開始查找 while x != Null && x.key != k x = x.next // 沒有找到且不是最後一個元素就一直往下找 return x
List_Insert(L, x) x.next = L.head if L.head != Null L.head.prev = x L.head = x x.prev = Null
List_Delete(L, x) if x.prev != Null // 若是x的前驅不爲空, 那麼就讓它指向x的後驅元素 x.prev.next = x.next else L.head = x.next if x.next != null // 若是x的後驅不爲空, 那麼就讓它指向x的前驅元素 x.next.prev = x.prev
如下爲加了哨兵改動過的代碼:3d
搜索指針
List_Search'(L, k) x = L.nil.next // 從頭開始查找 while x != L.nil && x.key != k x = x.next // 沒有找到且不是最後一個元素就一直往下找 return x
List_Insert'(L, x) x.next = L.nil.next L.nil.next.prev = x L.nil.next = x x.prev = L.nil
刪除code
List_Delete'(L, x) x.prev.next = x.next x.next.prev = x.prev