列表

详情


() 试题三(共15分)
  阅读以下说明和C语言函数,将应填入 (n) 处的宇句写在答题纸的对应栏内。
【说明】
  函数bool Del_elem(STACK *s,char para_ch)的功能是:删除栈*s中与para_ch之值相等且最接近栈项的元素(字符),若栈中不存在该元素,则函数返回FALSE,否则返回TRUE。其中,STACK是栈的类型名。
  函数Del_elem实现上述功能的方法是:利用栈的基本操作,先将栈*s中所有比para_ch之值更接近栈顶的元素暂时存放在临时工作栈s_bak中,使得与para_ch之值相等的元素成为栈顶元素,此时执行出栈操作,即从栈中删除与para_ch之值相等的元素,最后再将s_bak中的元素依次存回栈*S。
  在函数Del_elem中必须使用栈的基本操作进行栈上的运算,实现栈的基本操作的函数原型说明如下:
  void InitStack(STACK *S):初始化栈。
  void Push(STACK *S,char e):将一个字符压栈,栈中元素数目增1。
  void Pop(STACK *S):栈顶元素出栈,栈中元素数目减1。
  char Top(STACK S):返回非空栈的栈顶元素值,栈中元素数目不变。
  bool IsEmpty(STACK s):若S是空栈,则返回TRUE;否则返回FALSE。
 
  bool类型定义如下:
  typedef enum {FALSE = 0,TRUE = 1} bool;

【C语言函数】
  bool Del_elem(STACK *s,char para_ch)
  {
    STACK s_bak;    /*定义临时工作栈s_bak*/
    char  ch;
    bool tag = FALSE;
    (1) ;     /*中初始化临时工作栈s_bak*/
 
  /*中将栈*s中所有比para_ch更接近栈顶的元素暂时存放在临时工作栈s_bak中*/
    while(!IsEmpty(*S)) {
    ch = (2) ;    /*取栈顶元素*/
    Pop(s);
    if (ch == para_ch) {
    tag = TRUE;
    break;
    }
    (3)      ;
  }
 
  /*将暂存于临时工作栈s_bak中的元素存回栈*S */
    while (   (4)   ) {
    ch = Top(s_bak);
    (5)  ;
    Push(s, ch);
  }
 
    return tag;
 
  }

参考答案:

详细解析:

上一题