?? bothstack.cpp
字號:
//BothStack.cpp
#include "BothStack.h"
/*
* 前置條件:棧不存在
* 輸 入:無
* 功 能:棧的初始化
* 輸 出:無
* 后置條件:構造一個空棧
*/
template <class T>
BothStack<T>::BothStack( )
{
top1= -1;
top2=StackSize;
}
/*
* 前置條件:共享空間已存在
* 輸 入:無
* 功 能:銷毀兩棧共享的數組空間
* 輸 出:無
* 后置條件:將兩棧共享的數組空間釋放
*/
template <class T>
BothStack<T>::~BothStack( )
{
}
/*
* 前置條件:共享空間已存在
* 輸 入:棧號i,元素值x
* 功 能:在棧i頂插入一個元素x
* 輸 出:若插入不成功,則拋出插入異常
* 后置條件:若插入成功,則棧i頂插入了一個棧頂元素
*/
template <class T>
void BothStack<T>::Push(int i, T x )
{
if (top1==top2-1)
throw "上溢";
if (i==1)
data[++top1]=x;
if (i==2)
data[--top2]=x;
}
/*
* 前置條件:共享空間已存在
* 輸 入:棧號i
* 功 能:在棧i中刪除棧頂元素
* 輸 出:若刪除不成功,則拋出刪除異常
* 后置條件:若刪除成功,則棧i中刪除了棧頂元素
*/
template <class T>
T BothStack<T>::Pop(int i)
{
if (i==1) //將棧1的棧頂元素出棧
{
if (top1== -1)
throw "下溢";
return data[top1--];
}
if (i==2) //將棧2的棧頂元素出棧
{
if (top2==StackSize)
throw "下溢";
return data[top2++];
}
}
/*
* 前置條件:共享空間已存在
* 輸 入:棧號i
* 功 能:讀取棧i當前的棧頂元素
* 輸 出:若棧i不空,返回棧i當前的棧頂元素值
* 后置條件:兩棧均不變
*/
template <class T>
T BothStack<T>::GetTop(int i)
{
if(i==1)
{
if (top1!=-1)
return data[top1];
}
if(i==2)
{
if(top2!=StackSize)
return data[top2];
}
}
/*
* 前置條件:共享空間已存在
* 輸 入:棧號i
* 功 能:判斷棧i是否為空棧
* 輸 出:若棧i為空棧,返回1;否則返回0
* 后置條件:兩棧均不變
*/
template <class T>
bool BothStack<T>::Empty(int i)
{
if(i==1)
{
if(top1==-1)
return 0;
else
return 1;
}
if(i==2)
{
if(top2==StackSize)
return 0;
else
return 1;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -