棧的順序儲存

2021-08-02 21:02:49 字數 1671 閱讀 6139

棧的順序儲存就是用連續的空間儲存棧中的結點,一般都是用陣列來實現這種連續空間的。為了保證棧的filo特點,所以進棧出棧總是在棧頂一端進行。因此,不會引起類似順序表中的大量資料的移動。用陣列實現棧結構時,棧底bottom可取下標為0的陣列元素,假定用top給出棧頂元素的下標位址,即棧頂指標,那麼初始化時棧頂指標top=-1,即top=-1可以作為棧空的標誌。設陣列元素最大個數為maxsize,則棧的容量maxsize最大可以達到maxsize,棧滿時,top=maxsize-1。棧比較重要的操作是插入(push)與刪除(pop)。

棧類的實現(c++)

//"seqsize.h"

#includeusing namespace std;

//棧的抽象資料型別定義

templateclass absstack//建構函式

virtual ~absstack(){}//析構函式

virtual int isempty() const=0;//棧空?

virtual int isfull() const=0;//棧滿?

virtual void makeempty()=0;//棧清空

virtual void push(const elemtype& x)=0;//新結點進棧

virtual void pop()=0;//棧頂結點出棧

virtual const elemtype & top() const=0;//取棧頂結點數值

private:

absstack(const absstack &){}

};static const int initstacksize=10;

templateclass stack:public absstack//析構函式

void makeempty()//棧清空

int isempty() const

int isfull() const

const elemtype & top() const;//讀取棧頂元素

void push(const elemtype & x);//將x的值進棧

void pop();//棧頂結點出棧

const stack& operator = (const stack& r);

};templatestack::stack():top(-1),maxsize(initstacksize)

templateconst elemtype & stack::top() const //對於非空棧,讀取棧頂結點並返回結點的值

templatevoid stack::push(const elemtype& x)

templatevoid stack::pop() //對於非空棧,將棧頂結點出棧

//過載運算子=

templateconst stack& stack::operator = (const stack& r)

templatevoid stack::doublearray(int max)

//異常處理函式

void exception(int condition,const char * errormsg)

cout<<"elements poped from stack:";

while(!seqstack.isempty())

cout<

棧的順序儲存

ifndef seqstack h define seqstack h include include include 陣列去模擬棧的順序儲存 define max size 1024 define seqstack true 1 define seqstack false 0 typedef st...

棧的順序儲存

seqstack.h pragma once include include include ifdef cplusplus extern c typedef void seqstack 使用陣列高下標的位置作為棧頂,因為插入和刪除操作中不需要移動陣列中的元素 初始化 seqstack init s...

棧的順序儲存

可以用陣列來表示棧的結構。定義乙個結構體,其中有乙個陣列,動態分配記憶體。top記錄棧頂。標頭檔案 ifndef head h define head h define minsize 5 定義最小長度為5 define empty 1 棧空情況 typedef int elementtype ty...