從今天開始阿偉要學習棧啦!!
(首先補充乙個小知識點,引用作為函式形參)
首先給出棧的抽象類:
template
<
class
t>
class
stack
//析構函式
virtual
bool
empty()
const=0
;//返回true,當且僅當棧為空
virtual
intsize()
const=0
;//返回棧中元素個數
virtual t&
top()=
0;//返回棧頂元素的引用
virtual
void
pop()=
0;//刪除棧頂元素
virtual
void
push
(const t& theelement)=0
;//將元素theelement壓入棧頂
};
棧的陣列描述是從類arraylist和stack派生的類derivedarraystack(derived:派生的)
//操作在陣列尾進行,即棧頂在陣列尾
template
<
class
t>
class
derivedarraystack
:private arraylist
,public
:stack
//建構函式
bool
empty()
const
intsize()
const
t&top(
)void
pop(
)void
push
(const t& theelement)
};
為了得到乙個效能更好的陣列棧的實現方法,乙個途徑就是開發乙個類,利用陣列stack來包含所有的棧元素。
arraystack類:
template
<
class
t>
class
arraystack
:public stack
bool
empty()
const
intsize()
const
t&top(
)void
pop(
)void
push
(const t& theelement)
;private
:int stacktop;
//當前棧頂元素的索引
int arraylength;
//棧容量
t *stack;
//元素陣列
};
建構函式(時間複雜度o(1))
template
<
class
t>
arraystack
::arraystack
(int initialcapacity)
arraylength=initialcapacity;
stack=
new t[arraylength]
; stacktop=-1
;}
push函式的實現
template
<
class
t>
void arraystack
::push
(const t& theelement)
//在棧頂插入
stack[
++stacktop]
=theelement;
}
資料結構學習 棧
這一系列部落格的目的在於複習鞏固資料結構的基礎知識,為考研面試筆試做準備,所以重在原理,實踐不是重點。參考書籍有嚴蔚敏老師的 資料結構 c語言版 c c 資料結構與演算法速學速用大辭典 define stacksize 100 typedef int datatype typedef structs...
資料結構學習二 棧
棧 限制插入和刪除操作只能在乙個位置上進行的表。對棧的基本操作有push 進棧 和pop 出棧 前者相當於插入,後者則是刪除。棧也叫作先進後出表。本文使用鍊錶實現棧。pragma once 鍊錶型別宣告 struct node pragma once include node.h 棧定義 m hea...
資料結構學習筆記 棧
它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。p...