阅读下列函举说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明4.1】 假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下: typedef struct {

admin2009-02-15  43

问题 阅读下列函举说明和C代码,将应填入(n)处的字句写在对应栏内。
  【说明4.1】      
   假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下:
        typedef struct {
           DateType data [MaxSize];
           int front[2],rear[2];
       }Queue2;
    对于i=0或1,front和rear分别为第i个队列的头指针和尾指针。函数.EnQueue (Queue2*Q,int i,DaleType x)的功能是实现第i个队列的入队操作。
   【函数4.1】   
   int EnQueue(Queue2 * Q, int i, DateType x)
   {   /*若第i个队列不满,则元素x入队列,并返回1;否则,返回0*/
       if(i<0‖i>1) return 0;
       if(Q->rear==Q->front[(1)]
       return 0;
       Q->data[(2)]=x;
       Q->rear=[(3)];
       return 1;
   }
  【说明4.2】
   函数BTreeEqual(BinTreeNode*T1,BinTtneNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回1,否则返回0。函数中参数T1和T2分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时,才被认为相等。
   已知二叉树中的结点类型BinTreeNode定义为:
    struct BinTreeNode {
       char data;
       BinTreeNode * left, * right;
   };
    其中dau为结点值域,leR和risht分别为指向左、右子女结点的指针域,
  【函数4.2】
    int BTreeEqual(BinTreeNode * T1, BinTreeNode * T2)
   {
       if(Ti == NULL && T2 == NULL)return 1    /*若两棵树均为空,则相等*/
       else if((4))return 0;      /*若一棵为空一棵不为空,则不等*/
       else if((5)) return 1;    /*若根结点值相等并且左、右子树*/
                                /*也相等,则两棵树相等,否则不等*/
       else return 0;   
   }

选项

答案(1)(i+1)%2(或1-i) (2)Q->rear[i] (3)(Q->rear[i]++)%Maxsize (4)T1==NULL‖T2==NULL (5)T1->data==T2-> data && BTreeEqual(T1->left,T2->left) && BTreeEqual (T1->right, T2->right)

解析 这一题共有两个函数,第一个函数是一个循环共享队列入队的的问题,第二个函数是用递归法判断两棵二叉树是否相等的问题。
   先分析第一个函数。(1)空所在if语句是判断是否能入队,当队列0入队时,如果队列0队尾指针与队列1队头指针相等时,说明队列 0无法入队;当队列1入队时,如果队列1队尾指针与队列0队头指针相等时,说明队列1无法入队。因此(1)空处应填写“(i+1)%2”或“1-i”。(2)、(3)空是入队操作,其操作步骤是先将元素x插入队列i队尾所指的位置,再将队尾“加1”。因此(2)空处应填写“Q->rear”;由于是一个循环队列,(3)空处应填写“(Q->rear+1)%Maxsize”。
   再分析第二个函数。这一题比较简单,只需将程序注释转换成C语言即可得到答案。(4)空所处理的是若一棵为空,而一棵不为空则不相等,显然(4)空应填入“TI==NULL‖T2==NULL”。(5)空处是一个递归调用,处理若根结点值相等并且左、右子树也相等,则两棵树相等,因此(5)空应填入“T1->data==T2->data && BTreeEqual(T1->left, T2->left) &&BTreeEqual(Tl->right, T2->right)”及其等价形式。
转载请注明原文地址:https://kaotiyun.com/show/KojZ777K
0

最新回复(0)