資料結構(二) 棧

2021-10-02 12:32:42 字數 1033 閱讀 2600

棧(stack)僅僅可以表尾插入和刪除操作。即我們可以認為,棧是先進後出的。棧就是一種特殊的線性表,即它存在前驅後繼關係。它特殊點在於,它限制了整個線性表的插入和刪除位置,只能在棧頂進行。

函式名功能

initstack(*s)

建立乙個空的棧s

destroystack(*s)

銷毀乙個棧s

clearstack(*s)

清空棧stackempty(s)

如果棧是空的,返回ture

gettop(s,*e)

若棧存在且非空,用e返回棧頂元素

stacklenth(s)

返回s的元素個數

push(*s,e)

在棧頂插入e

pop(*s,*e)

刪除棧頂的元素,用e返回

status push

(sqatack *s,selemtype e)

s->top++

;s->data[s->top]

=e;return ok;

}

status pop

(sqatack *s,selemtype e)

*e=s->data[s->top]

s->top--

;return ok;

}

棧的鏈式儲存結構,簡稱為鏈棧

理解起來就是加入指標,把棧頂放在單鏈表的頭部。

棧的引入簡化了程式設計,劃分了不同的關注層次。

棧有乙個非常重要的應用:遞迴

為了說明,我們舉乙個例項:斐波那契數列

遞迴的定義:乙個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,稱為遞迴函式。

%

%列印前40位斐波那契數列

intfbi

(int i)

intmain()

我們可發現,用遞迴的方法比常規的迭代辦法**短且方便。

資料結構(二)棧結構

template t stack pop void temp stacklist top top return temp 從棧頂壓入出乙個元素 templatet t stack push const t item top stacklist top item 讀棧頂元素 template t st...

資料結構(二) 棧

棧也是一種線性儲存結構,具有先進後出的特點 word中的撤銷操作,作業系統的方法呼叫都利用了棧 棧還可以用來做匹配,比如括號匹配等 基於陣列的棧入棧push使用陣列的addlast 追加 取資料時使用陣列的getlast 做出棧pop 操作 這次模擬實現的棧是基於上篇部落格實現的動態陣列實現的 pu...

資料結構 二 棧

1.簡介 1.1 棧stack 1 棧是一種線性結構 2 相比陣列,棧對應的操作是陣列操作的子集。3 棧的本質就是乙個陣列,我們把資料排開來放,但是規定 新增元素的時候只能從一端新增元素,也只能從一端取出元素。這一段通常稱為 棧頂 1.2 新增資料的規則 1 相當於在在乙個桶中新增資料。這個操作叫入...