棧的順序儲存就是用連續的空間儲存棧中的結點,一般都是用陣列來實現這種連續空間的。為了保證棧的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...