資料結構學習 棧的陣列描述

2021-09-29 21:00:46 字數 2067 閱讀 4668

從今天開始阿偉要學習棧啦!!

(首先補充乙個小知識點,引用作為函式形參)

首先給出棧的抽象類:

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...