第十天 C 實現棧類模板實現 簡單棧的應用

2021-09-26 04:26:31 字數 4367 閱讀 2360

//

// 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 的形式,現實中有很多這樣的例子,比如 食堂中的一疊盤...