1. 完成下面的棧類qstack,使用其中的雙佇列實現入棧、出棧等基本運算
template
class qstack : public stack
~qstack()
//完成下列函式的**
void clear()
void push(const e& it)
e pop()
const e& topvalue() const
virtual int length() const
};2. 設1,2,…,n依次入棧qstack, 判斷由這n個整數構成的整數序列是否為有效的出棧順序。同時我們限定棧中只能儲存k個整數(0#include
#include
#define defaultsize 14
#define assert(a,b) assert((a)&&(b))
using
namespace std;
//**************定義佇列
template
<
typename e>
class
queue
queue
(const queue&
)//拷貝建構函式
public
:queue()
virtual
~queue()
virtual
void
clear()
=0;virtual
void
enqueue
(const e&)=
0;virtual e dequeue()
=0;virtual
const e&
frontvalue()
=0;virtual
intlength()
=0;}
;template
<
typename e>
class
aqueue
:public queue
~aqueue()
void
clear()
void
enqueue
(const e& it)
e dequeue()
const e&
frontvalue()
const e&
rearvalue()
virtual
intlength()
};//**************定義棧
template
<
typename e>
class
stack
stack
(const stack&
)public
:stack()
virtual
~stack()
virtual
void
clear()
=0;virtual
void
push
(const e& it)=0
;virtual e pop()
=0;virtual
const e&
topvalue()
=0;virtual
intlength()
=0;}
;template
<
typename e>
class
qstack
:public stack
~qstack()
void
clear()
//兩個佇列互相轉換除隊尾的全部元素,隊尾元素相當於棧頂,對棧頂進行操作
void
push
(const e& it)
else qb.
enqueue
(it);}
e pop()
return qa.
dequeue()
;}else
return qb.
dequeue()
;}}//哪個佇列長,所有元素就在哪個佇列裡面
const e&
topvalue()
virtual
intlength()
void
validate
(int n)
int odnr=1;
//記錄原順序1,2,……,n
while
(odnr<=n)
else
else}}
}//序列比較
for(
int i=
1;i<=
length()
;i++)}
}//倘若能執行完整個迴圈(對1~n),則此序列正確
cout<<
't'<
return;}
};intmain()
}}測試資料:
實驗4 棧和佇列的基本操作實現及其應用 鏈棧
1 熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。2 學會使用棧和佇列解決實際問題。1 自己確定結點的具體資料型別和問題規模 分別建立乙個順序棧和鏈棧,實現棧的壓棧和出棧操作。分別建立乙個順序佇列和鏈佇列,實現佇列的入隊和出隊操作。2 設計演算法並寫出 實現乙個十將二進位制轉...
實驗三 棧和佇列的基本操作實現及其應用
一 實驗目的 1 熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。2 學會使用棧和佇列解決實際問題。二 實驗內容 1 自己確定結點的具體資料型別和問題規模 分別建立乙個順序棧和鏈棧,實現棧的壓棧和出棧操作。分別建立乙個順序佇列和鏈佇列,實現佇列的入隊和出隊操作。2 設計演算法並...
實驗4 棧和佇列的基本操作實現及其應用
1 熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。2 學會使用棧和佇列解決實際問題。1 自己確定結點的具體資料型別和問題規模 分別建立乙個順序棧和鏈棧,實現棧的壓棧和出棧操作。三 源程式 五 實驗心得 棧特點就是先進後出 後進先出 從乙個口進去,從同乙個口出去。棧是限定僅在尾...