我正在參加CS課程,但坦率地說,我不知道講師講的是什麼抽象數據類型代數。這並不是我很容易在網絡上找到解決方案的原因,我想也許社區中的某個人會對問題有更深刻的洞察力或未解決的問題。如何理解ADT(抽象數據類型代數)?
堆棧:
isempty(createstack()) = true
isempty(push(n, s)) = false
top(push(n, s)) = n
pop(push(n, s)) = s
隊列:
isempty(createqueue()) = true
isempty(add(n, q)) = false
front(add(n, q)) = n, if q is empty
front(add(n, q)) = front(q), if q is not empty removefront(add(n, q)) = q,
if q is empty removefront(add(n, q)) = add(n, removefront(q)),
if q is not empty
符號無疑是一個有點奇怪......什麼是高於平均實質〜我明白隊列的一般行爲和作爲先進先出和先進先出的堆疊。
沒有那些只是規則描述它是如何工作的? 。例如「isempty(add(n,q))= false」...如果將N添加到隊列Q中,Q不是空的...如果將N添加到Q並且Q是空的,前面是N – 2013-02-09 22:28:03
即可。在演講中,演講者將演講者的方括號內的括號括起來,用於某些複雜的抽象運算符。 – 2013-02-09 22:51:49
這裏沒有「ADT代數」。該文章包含操作和*僞代碼*(這意味着,它應該是「在上下文中可理解的」,但沒有其他)描述了預期的操作行爲。分別閱讀堆棧或隊列,以瞭解具體的實現細節/示例和「真實」使用案例。 – 2013-02-09 23:38:36