阅读下列说明和程序,回答下列问题,将解答填入答题纸的对应栏内。 【说明】 在开发某嵌入式系统时,设计人员根据系统要求,分别编写了相关程序,其中: 【程序1】是李工编写的一个数据交换子程序。 【程序2】是赵工编写的一段利用递归方法判别

admin2013-01-19  43

问题 阅读下列说明和程序,回答下列问题,将解答填入答题纸的对应栏内。
【说明】
  在开发某嵌入式系统时,设计人员根据系统要求,分别编写了相关程序,其中:
      【程序1】是李工编写的一个数据交换子程序。
    【程序2】是赵工编写的一段利用递归方法判别链表表示的两个数据结构是否相等的程序,若相等则返回值为1,否则返回为0。判别的准则是若两个链表的首指针相等,则相等;否则进行内部元素比较,元素中的itemid表示后面联合体un的有效性,itemid为0时,联合体un里面的data项有效,否则联合体un中的link项有效。
    【程序1】
    #include
    swap(int x,int y){
       int t;
       t=x;
       x=y;
       y=t;
    }
    main()  {
       int a,b;
       a=3;
       b=4;
       swap(a,b);
       printf(“%d,  %d\n”,a,b);
    }
    【程序2】
        typedef struct Item{
            int itemid;
            union{
                char data;
                struct Item*link:
    }un;
    struct Item*nextItem:
    }ItemNode;
        int EqualItem(ItemNode *x,ItemNode *y)    {
            int  res;
            if(x=y)  return 1;
    if(  (1)  ){
        if(    (2)  )  {
            if(x->itemid==0)  {
                res=    (3)  
    }
    elSe  {
         res  =    (4)   
    }
    if  (res)  {
         return   (5)   
    }
    }
    }
    return 0;
    }
仔细阅读并分析【程序2】中的C语言代码,完成其中(1)~(5)空白填空,将答案填入答题纸的对应栏内。

选项

答案(1)x!=NULL&&y!=NULL (2)x->itemid==y->itemid (3)x->un.data==y->un.data (4)Equalltem(x->un.link,y->un.link); (5)Equalltem(x->nextItem.y->nextItem);

解析 该段C语言程序是一段利用递归方法判别链表表示的两个数据结构是否相等的程序,若相等则返回值为1,否则返回为0。判别的准则是若两个链表的首指针相等,则相等;否则进行内部元素比较,元素中的itemid表示后而联合体un的有效性,itemid为0时,联合体un里面的data项有效,否则联合体un中的link项有效。该程序具体如下:
    如果x==y,则返回1,表示断定两个数据实际指向是同一地方,当然相等;
    如果x和y都不为空则继续,否则返回0;
    如果x->itemid==D y->itemid,则继续,否则返回0;
    如果x->itemid==0,则若x->un.data==y->un.data,res=1,否则res==0;
    如果x->itemid不等于0,联合体un中的link项有效,递归调用Equalltem(x->un.link,y->un.link),继续判断:
    如果res=1,也就是x->un.data==y->un.data,则递归调用EqualItem(x.>nextItem,y->nextItem),判断下一级链表:
    如果res=0,也就是x->un.data不等与y->un.data,则即可断定两个数据不相等,返回为0。
转载请注明原文地址:https://jikaoti.com/ti/9OI7FFFM
0

最新回复(0)