閱讀以下說(shuō)明和C語(yǔ)言函數(shù),將應(yīng)填入 (n) 處的宇句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
函數(shù)bool Del_elem(STACK *s,char para_ch)的功能是:刪除棧*s中與para_ch之值相等且最接近棧項(xiàng)的元素(字符),若棧中不存在該元素,則函數(shù)返回FALSE,否則返回TRUE。其中,STACK是棧的類型名。
函數(shù)Del_elem實(shí)現(xiàn)上述功能的方法是:利用棧的基本操作,先將棧*s中所有比para_ch之值更接近棧頂?shù)脑貢簳r(shí)存放在臨時(shí)工作棧s_bak中,使得與para_ch之值相等的元素成為棧頂元素,此時(shí)執(zhí)行出棧操作,即從棧中刪除與para_ch之值相等的元素,最后再將s_bak中的元素依次存回棧*S。
在函數(shù)Del_elem中必須使用棧的基本操作進(jìn)行棧上的運(yùn)算,實(shí)現(xiàn)棧的基本操作的函數(shù)原型說(shuō)明如下:
void InitStack(STACK *S):初始化棧。
void Push(STACK *S,char e):將一個(gè)字符壓棧,棧中元素?cái)?shù)目增1。
void Pop(STACK *S):棧頂元素出棧,棧中元素?cái)?shù)目減1。
char Top(STACK S):返回非空棧的棧頂元素值,棧中元素?cái)?shù)目不變。
bool IsEmpty(STACK s):若S是空棧,則返回TRUE;否則返回FALSE。
bool類型定義如下:
typedef enum {FALSE = 0,TRUE = 1} bool;
【C語(yǔ)言函數(shù)】
bool Del_elem(STACK *s,char para_ch)
{
STACK s_bak; /*定義臨時(shí)工作棧s_bak*/
char ch;
bool tag = FALSE;
(1) ; /*中初始化臨時(shí)工作棧s_bak*/
/*中將棧*s中所有比para_ch更接近棧頂?shù)脑貢簳r(shí)存放在臨時(shí)工作棧s_bak中*/
while(!IsEmpty(*S)) {
ch = (2) ; /*取棧頂元素*/
Pop(s);
if (ch == para_ch) {
tag = TRUE;
break;
}
(3) ;
}
/*將暫存于臨時(shí)工作棧s_bak中的元素存回棧*S */
while ( (4) ) {
ch = Top(s_bak);
(5) ;
Push(s, ch);
}
return tag;
}