//
// header.h
// stack
////
#ifndef mystack_h
#define mystack_h
#include
using
namespace std;
template
<
typename t>
class
mystack
;template
<
typename t>
mystack
::mystack
(int size)
template
<
typename t>
mystack::~
mystack()
template
<
typename t>
bool mystack
::stackempty()
template
<
typename t>
bool mystack
::stackfull()
template
<
typename t>
void mystack
::clearstack()
template
<
typename t>
int mystack
::stacklength()
template
<
typename t>
bool mystack
::push
(t elem)
else
}template
<
typename t>
bool mystack
::pop
(t &elem)
else
}template
<
typename t>
bool mystack
::stacktop
(t &elem)
else
}template
<
typename t>
void mystack
::stacktranverse()
}#endif
/* header_h */
//
// coordinate.h
// stack
////
#ifndef coordinate_h
#define coordinate_h
#include
using
namespace std;
class
coordinate
~coordinate()
private
:int m_ix;
int m_iy;};
ostream&
operator
<<
(ostream &out, coordinate &coor)
#endif
/* coordinate_h */
//
// main.cpp
// stack
////
#include
#include
"mystack.h"
#include
"coordinate.h"
using
namespace std;
intmain
(int argc,
const
char
* ar**)
括號匹配問題
時間限制:1 秒
記憶體限制:32 兆
特殊判題:否
題目描述: 在某個字串(長度不超過 100)中有左括號、右括號和大小寫字母;規定(與常見的算數式子一樣) 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串, 並在下一行標出不能匹配的括號。不能匹配的左括號用"$「標註,不能匹配的右括號用」?"標註.
輸入: 輸入包括多組資料,每組資料一行,包含乙個字串,只包含左右括號和大小寫字母,字串長度不超過 100。
輸出: 對每組輸出資料,輸出兩行,第一行包含原始輸入字元,第二行由"","
?"和空
格組成,
"","?" 和空格組成,"
","?"和
空格組成
,"「和」?"表示與之對應的左括號和右括號不能匹配。
樣例輸入:
)(rttyy())sss)(
樣例輸出:
)(rttyy())sss)(
? ?$
//
// main.cpp
// charmatch
////
#include
#include
#include
using
namespace std;
stack<
int> s;
char str[
110]
;char ans[
110]
;int
main
(int argc,
const
char
* ar**)
else
if(str[i]
==')'
)else
ans[i]
='?';}
else
ans[i]
=' ';}
while
(!s.
empty()
) ans[i]=0
;puts
(str)
;puts
(ans);}
return0;
}
簡單計算器
時間限制:1 秒
記憶體限制:32 兆
特殊判題:否
題目描述: 讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。
輸入: 測試輸入包含若干測試用例, 每個測試用例佔一行, 每行不超過 200 個字元, 整數和運算子之間用乙個空格分隔。 沒有非法表示式。 當一行中只有 0 時輸入結 束,相應的結果不要輸出。
輸出: 對每個測試用例輸出 1 行,即該表示式的值,精確到小數點後 2 位。
樣例輸入:
1 + 2
4 + 2 * 5 - 7 / 11
0樣例輸出:
3.00
13.36
//
// main.cpp
// computer
////
#include
#include
#include
using
namespace std;
char str[
220]
;int mat[
5]=;
stack<
int> op;
stack<
double
> in;
void
getop
(bool
&reto,
int&retn,
int&i)
if(str[i]==0
)if(str[i]
>=
'0'&& str[i]
<=
'9')
reto =
false
;else
retn =0;
for(
;str[i]
!=' '
&& str[i]!=0
;i++)if
(str[i]
==' '
) i++
;return;}
intmain
(int argc,
const
char
* ar**)
op.push
(retnum);}
}if(op.
size()
==2&& op.
top()==
0)break;}
printf
("%.2f\n"
, in.
top())
;}return0;
}
C 類模板實現順序棧
棧的抽象類的定義 template class stack 順序棧類的定義 include stack.h template class seqstack public stack 順序棧類的實現 include using namespace std template seqstack seqst...
演算法系列15天速成 第十天 棧
今天跟大家聊聊棧,在程式設計中,棧的使用還是非常廣泛的,比如有 括號匹配問題 html結構匹配問題 所以說掌握了 棧 的使用,對我們學習演算法還是很有幫助的。一 概念 棧,同樣是一種特殊的線性表,是一種last in first out lifo 的形式,現實中有很多這樣的例子,比如 食堂中的一疊盤...
演算法系列15天速成 第十天 棧
今天跟大家聊聊棧,在程式設計中,棧的使用還是非常廣泛的,比如有 括號匹配問題 html結構匹配問題 所以說掌握了 棧 的使用,對我們學習演算法還是很有幫助的。一 概念 棧,同樣是一種特殊的線性表,是一種last in first out lifo 的形式,現實中有很多這樣的例子,比如 食堂中的一疊盤...